<?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>DEV Community: qing</title>
    <description>The latest articles on DEV Community by qing (@qingluan).</description>
    <link>https://dev.to/qingluan</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3897160%2F88fcfc25-1d56-4adc-b6b7-f5b10bc9f8d8.png</url>
      <title>DEV Community: qing</title>
      <link>https://dev.to/qingluan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qingluan"/>
    <language>en</language>
    <item>
      <title>My Take on: Most 'AI Agents' Are Just If-Statements in a</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Wed, 09 Sep 2026 15:22:19 +0000</pubDate>
      <link>https://dev.to/qingluan/my-take-on-most-ai-agents-are-just-if-statements-in-a-3lc7</link>
      <guid>https://dev.to/qingluan/my-take-on-most-ai-agents-are-just-if-statements-in-a-3lc7</guid>
      <description>&lt;h1&gt;
  
  
  My Take on: Most 'AI Agents' Are Just If-Statements in a
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;My Take on: Most 'AI Agents' Are Just If-Statements in a  is gaining massive traction in the developer community. Whether you are a beginner or experienced developer, this guide will help you get up to speed quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;The tech landscape is evolving rapidly. Staying current with tools like this gives you a competitive edge in the job market and opens new opportunities for side income.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Installation
&lt;/h3&gt;

&lt;p&gt;Most modern tools can be installed with a single command. Check the official documentation for the latest installation instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Basic Usage
&lt;/h3&gt;

&lt;p&gt;Start with the simplest use case. Build a "Hello World" equivalent to understand the fundamentals.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Real-World Application
&lt;/h3&gt;

&lt;p&gt;Apply what you learned to a real project. This is where the learning truly happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; - Built for speed and efficiency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Experience&lt;/strong&gt; - Great documentation and community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosystem&lt;/strong&gt; - Rich plugin/extension ecosystem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt; - Grows with your needs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common Patterns
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start small, iterate fast&lt;/li&gt;
&lt;li&gt;Read the docs before Stack Overflow&lt;/li&gt;
&lt;li&gt;Join the community (Discord/Slack)&lt;/li&gt;
&lt;li&gt;Contribute back when you can&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Monetization Ideas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Write tutorials and courses&lt;/li&gt;
&lt;li&gt;Build tools and sell them&lt;/li&gt;
&lt;li&gt;Offer consulting services&lt;/li&gt;
&lt;li&gt;Create content on Dev.to/Medium&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Official documentation&lt;/li&gt;
&lt;li&gt;GitHub awesome lists&lt;/li&gt;
&lt;li&gt;YouTube tutorials&lt;/li&gt;
&lt;li&gt;Dev.to community&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The best time to start learning was yesterday. The second best time is now. Pick one thing from this guide and try it today.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this helpful? Follow for more ai, softwareengineering, webdev, agents content!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>webdev</category>
      <category>agents</category>
    </item>
    <item>
      <title>My Take on: My Grandmother Ran Ajo. I Built the Version W</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Wed, 09 Sep 2026 15:22:11 +0000</pubDate>
      <link>https://dev.to/qingluan/my-take-on-my-grandmother-ran-ajo-i-built-the-version-w-2oph</link>
      <guid>https://dev.to/qingluan/my-take-on-my-grandmother-ran-ajo-i-built-the-version-w-2oph</guid>
      <description>&lt;h1&gt;
  
  
  My Take on: My Grandmother Ran Ajo. I Built the Version W
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;My Take on: My Grandmother Ran Ajo. I Built the Version W is gaining massive traction in the developer community. Whether you are a beginner or experienced developer, this guide will help you get up to speed quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;The tech landscape is evolving rapidly. Staying current with tools like this gives you a competitive edge in the job market and opens new opportunities for side income.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Installation
&lt;/h3&gt;

&lt;p&gt;Most modern tools can be installed with a single command. Check the official documentation for the latest installation instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Basic Usage
&lt;/h3&gt;

&lt;p&gt;Start with the simplest use case. Build a "Hello World" equivalent to understand the fundamentals.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Real-World Application
&lt;/h3&gt;

&lt;p&gt;Apply what you learned to a real project. This is where the learning truly happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; - Built for speed and efficiency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Experience&lt;/strong&gt; - Great documentation and community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosystem&lt;/strong&gt; - Rich plugin/extension ecosystem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt; - Grows with your needs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common Patterns
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start small, iterate fast&lt;/li&gt;
&lt;li&gt;Read the docs before Stack Overflow&lt;/li&gt;
&lt;li&gt;Join the community (Discord/Slack)&lt;/li&gt;
&lt;li&gt;Contribute back when you can&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Monetization Ideas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Write tutorials and courses&lt;/li&gt;
&lt;li&gt;Build tools and sell them&lt;/li&gt;
&lt;li&gt;Offer consulting services&lt;/li&gt;
&lt;li&gt;Create content on Dev.to/Medium&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Official documentation&lt;/li&gt;
&lt;li&gt;GitHub awesome lists&lt;/li&gt;
&lt;li&gt;YouTube tutorials&lt;/li&gt;
&lt;li&gt;Dev.to community&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The best time to start learning was yesterday. The second best time is now. Pick one thing from this guide and try it today.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Found this helpful? Follow for more weekendchallenge, devchallenge, solana, gemini content!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>weekendchallenge</category>
      <category>devchallenge</category>
      <category>solana</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Lessons from: My sixth year as a bootstrapped founder</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Tue, 08 Sep 2026 01:21:06 +0000</pubDate>
      <link>https://dev.to/qingluan/lessons-from-my-sixth-year-as-a-bootstrapped-founder-gpj</link>
      <guid>https://dev.to/qingluan/lessons-from-my-sixth-year-as-a-bootstrapped-founder-gpj</guid>
      <description>&lt;h1&gt;
  
  
  Lessons from: My sixth year as a bootstrapped founder
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;My sixth year as a bootstrapped founder caught my attention because it represents a real opportunity for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start Small&lt;/strong&gt; - Every successful project started as a small experiment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solve Real Problems&lt;/strong&gt; - The best businesses solve problems people actually have&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Everything&lt;/strong&gt; - Use Python/automation to scale your efforts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build in Public&lt;/strong&gt; - Share your journey to attract customers and collaborators&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Apply This
&lt;/h2&gt;

&lt;p&gt;The most actionable step is to start building something today. Pick one idea and spend 2 hours on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check the original discussion for more insights&lt;/li&gt;
&lt;li&gt;Join communities like IndieHackers, r/SideProject&lt;/li&gt;
&lt;li&gt;Follow successful developers on Twitter/X&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Building in public. Follow for more insights!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>money</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Lessons from: Thank HN: My bootstrapped startup got acquire</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Tue, 08 Sep 2026 01:20:33 +0000</pubDate>
      <link>https://dev.to/qingluan/lessons-from-thank-hn-my-bootstrapped-startup-got-acquire-5df6</link>
      <guid>https://dev.to/qingluan/lessons-from-thank-hn-my-bootstrapped-startup-got-acquire-5df6</guid>
      <description>&lt;h1&gt;
  
  
  Lessons from: Thank HN: My bootstrapped startup got acquire
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Thank HN: My bootstrapped startup got acquired today caught my attention because it represents a real opportunity for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start Small&lt;/strong&gt; - Every successful project started as a small experiment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solve Real Problems&lt;/strong&gt; - The best businesses solve problems people actually have&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Everything&lt;/strong&gt; - Use Python/automation to scale your efforts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build in Public&lt;/strong&gt; - Share your journey to attract customers and collaborators&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Apply This
&lt;/h2&gt;

&lt;p&gt;The most actionable step is to start building something today. Pick one idea and spend 2 hours on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check the original discussion for more insights&lt;/li&gt;
&lt;li&gt;Join communities like IndieHackers, r/SideProject&lt;/li&gt;
&lt;li&gt;Follow successful developers on Twitter/X&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Building in public. Follow for more insights!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>money</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Lessons from: Ask HN: Passive income ideas for solo develop</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Tue, 08 Sep 2026 01:14:44 +0000</pubDate>
      <link>https://dev.to/qingluan/lessons-from-ask-hn-passive-income-ideas-for-solo-develop-kj5</link>
      <guid>https://dev.to/qingluan/lessons-from-ask-hn-passive-income-ideas-for-solo-develop-kj5</guid>
      <description>&lt;h1&gt;
  
  
  Lessons from: Ask HN: Passive income ideas for solo develop
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Ask HN: Passive income ideas for solo developers? caught my attention because it represents a real opportunity for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start Small&lt;/strong&gt; - Every successful project started as a small experiment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solve Real Problems&lt;/strong&gt; - The best businesses solve problems people actually have&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Everything&lt;/strong&gt; - Use Python/automation to scale your efforts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build in Public&lt;/strong&gt; - Share your journey to attract customers and collaborators&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Apply This
&lt;/h2&gt;

&lt;p&gt;The most actionable step is to start building something today. Pick one idea and spend 2 hours on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check the original discussion for more insights&lt;/li&gt;
&lt;li&gt;Join communities like IndieHackers, r/SideProject&lt;/li&gt;
&lt;li&gt;Follow successful developers on Twitter/X&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Building in public. Follow for more insights!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>money</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Lessons from: Ask HN: Passive income ideas for solo develop</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Tue, 08 Sep 2026 01:05:46 +0000</pubDate>
      <link>https://dev.to/qingluan/lessons-from-ask-hn-passive-income-ideas-for-solo-develop-451</link>
      <guid>https://dev.to/qingluan/lessons-from-ask-hn-passive-income-ideas-for-solo-develop-451</guid>
      <description>&lt;h1&gt;
  
  
  Lessons from: Ask HN: Passive income ideas for solo develop
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Ask HN: Passive income ideas for solo developers? caught my attention because it represents a real opportunity for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start Small&lt;/strong&gt; - Every successful project started as a small experiment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solve Real Problems&lt;/strong&gt; - The best businesses solve problems people actually have&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate Everything&lt;/strong&gt; - Use Python/automation to scale your efforts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build in Public&lt;/strong&gt; - Share your journey to attract customers and collaborators&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Apply This
&lt;/h2&gt;

&lt;p&gt;The most actionable step is to start building something today. Pick one idea and spend 2 hours on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check the original discussion for more insights&lt;/li&gt;
&lt;li&gt;Join communities like IndieHackers, r/SideProject&lt;/li&gt;
&lt;li&gt;Follow successful developers on Twitter/X&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Building in public. Follow for more insights!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More at &lt;a href="https://%E9%9D%92.%E5%A4%B1%E8%90%BD.%E4%B8%96%E7%95%8C" rel="noopener noreferrer"&gt;https://青.失落.世界&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>money</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Build a Profitable Technical Course on Udemy</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 18:01:20 +0000</pubDate>
      <link>https://dev.to/qingluan/how-to-build-a-profitable-technical-course-on-udemy-1p8o</link>
      <guid>https://dev.to/qingluan/how-to-build-a-profitable-technical-course-on-udemy-1p8o</guid>
      <description>&lt;h1&gt;
  
  
  How to Build a Profitable Technical Course on Udemy
&lt;/h1&gt;

&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;p&gt;tags: teaching, money, course, passive&lt;/p&gt;




&lt;h1&gt;
  
  
  How to Build a Profitable Technical Course on Udemy
&lt;/h1&gt;

&lt;p&gt;Imagine waking up to a notification that your course just earned $500 while you were asleep. That’s the reality for thousands of instructors who’ve turned their technical expertise into a scalable, profitable business on Udemy. But here’s the truth: most technical courses fail because they’re built by developers who forget they’re actually &lt;em&gt;teaching&lt;/em&gt;, not just coding. The difference between a course that flops and one that generates passive income isn’t just your knowledge—it’s how you package, produce, and market it. Let’s break down exactly how to build a course people will buy, watch, and rave about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find Your Profitable Topic (Before You Record Anything)
&lt;/h2&gt;

&lt;p&gt;The biggest mistake new instructors make is picking a topic they’re &lt;em&gt;good at&lt;/em&gt; instead of one students &lt;em&gt;need&lt;/em&gt;. You need to find the sweet spot between your expertise and market demand.&lt;/p&gt;

&lt;p&gt;Start by doing a massive brain dump of every concept, skill, and tidbit someone needs to know to achieve a specific transformation [4]. Then, validate your topic by searching existing Udemy courses on that subject. Ask yourself: Could my course be shorter, more detailed, or more professional? Could it target a different audience? [9]&lt;/p&gt;

&lt;p&gt;Use keyword research to find gaps. Look for keywords with less than 1,000 results but around 30 reviews—this signals demand without overwhelming competition [9]. Your course should last between two to three hours, which is the sweet spot for engagement and completion rates [9].&lt;/p&gt;

&lt;h3&gt;
  
  
  Define Your Core Learning Outcome
&lt;/h3&gt;

&lt;p&gt;Before writing a single lesson, write down the core learning outcome of your course [5]. This isn’t just “Learn Python.” It’s “Build a full-stack web app using Python and Django in 3 hours.” Students buy transformations, not information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure Your Course for Maximum Impact
&lt;/h2&gt;

&lt;p&gt;A well-structured course keeps students engaged and reduces churn. Start by grouping your brain-dumped ideas into logical sections—these are your major milestones [4]. Then break each section into individual lectures.&lt;/p&gt;

&lt;p&gt;The sweet spot for lecture length is &lt;strong&gt;2–7 minutes&lt;/strong&gt; [4]. Each video should have one clear purpose. Don’t cram three ideas into a single lecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Perfect Lecture Script Formula
&lt;/h3&gt;

&lt;p&gt;Every lecture should follow this simple but powerful script:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Hook:&lt;/strong&gt; Tell them what you’re teaching and why it’s critical.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The “How-To”:&lt;/strong&gt; Teach the concept. Show, don’t just tell. Use real-world examples.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Action:&lt;/strong&gt; End with a summary and a clear call to action like “Pause this video and try this yourself” [4].&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For technical courses, include hands-on code examples. Here’s a working Python snippet you can use to demonstrate a practical concept:&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="c1"&gt;# Build a simple data analyzer for CSV files
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;analyze_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DictReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&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;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;count&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;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;average&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sum&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Example usage
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;analyze_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sales_data.csv&lt;/span&gt;&lt;span class="sh"&gt;'&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;Average sales: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;average&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&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="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;Total sales: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sum&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example teaches file handling, looping, and basic math—perfect for a beginner Python module.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add Value with Extras
&lt;/h3&gt;

&lt;p&gt;Don’t just list what’s in the course. Sell the transformation. Add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quizzes:&lt;/strong&gt; Simple knowledge checks to reinforce key concepts [4]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assignments:&lt;/strong&gt; A small project at the end of each section to build confidence [4]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources:&lt;/strong&gt; PDFs, code files, datasets, and cheat sheets [1]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Production Quality That Sells
&lt;/h2&gt;

&lt;p&gt;You don’t need a Hollywood studio, but you do need professional-grade basics. Here’s what matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audio:&lt;/strong&gt; Normalize to -16 LUFS [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution:&lt;/strong&gt; 1280x720px minimum [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Captions:&lt;/strong&gt; Closed captions for all videos [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B-roll:&lt;/strong&gt; Change visuals every 7–10 seconds to keep it engaging [3]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use tools like Microsoft PowerPoint or Google Slides to create slides, then record walkthroughs with B-roll to maintain viewer interest [6]. Add enough B-roll so the screen changes frequently—this keeps learners from getting bored.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write Copy That Converts
&lt;/h2&gt;

&lt;p&gt;Your course description is your sales pitch. Don’t just list features. Tell students what they’ll &lt;em&gt;do&lt;/em&gt; after finishing your course.&lt;/p&gt;

&lt;p&gt;Start with a strong hook that speaks directly to a pain point your ideal student feels [4]. Then make it crystal clear what they’ll be able to achieve. Include your primary keyword in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The beginning of your course title&lt;/li&gt;
&lt;li&gt;Your subtitle&lt;/li&gt;
&lt;li&gt;Multiple times in the description&lt;/li&gt;
&lt;li&gt;Spoken in your videos [9]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use AI tools like ChatGPT to refine your lesson titles, descriptions, and intended learner profiles [3].&lt;/p&gt;

&lt;h2&gt;
  
  
  Launch Strategy: Get Reviews Early
&lt;/h2&gt;

&lt;p&gt;Reviews are the lifeblood of Udemy success. Without them, your course won’t rank. Here’s how to get your first 10 reviews fast:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Share with friends and family:&lt;/strong&gt; Offer a promotional code and ask them to buy and review [3]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post in Facebook groups:&lt;/strong&gt; Be an active member, tease your course, then share it when it’s live [9]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guest on podcasts:&lt;/strong&gt; Mention your course at the end as a call to action [9]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The easiest way to get initial sales is to start a promotional code and share it with people who know you’ll deliver value [3].&lt;/p&gt;

&lt;h2&gt;
  
  
  Scale Your Income
&lt;/h2&gt;

&lt;p&gt;Once your course is live, don’t stop. Increase your lifetime value by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Upselling:&lt;/strong&gt; Offer high-ticket products or advanced courses [8]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-enrolling:&lt;/strong&gt; Guide students from one course to another [8]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repurposing content:&lt;/strong&gt; Turn lessons into YouTube videos or blog posts to drive traffic [8]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Collaborate with other instructors to create joint courses and expand your audience [9].&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Today: Your Action Plan
&lt;/h2&gt;

&lt;p&gt;You don’t need to wait for “perfect.” Here’s what to do &lt;em&gt;today&lt;/em&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick your topic&lt;/strong&gt; using the keyword strategy above [9]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write your course outline&lt;/strong&gt; with sections and lessons [3]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Script your first lesson&lt;/strong&gt; using the Hook–How–Action formula [4]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record a 2-minute preview video&lt;/strong&gt; answering: What’s it about? Why you? What will they learn? [9]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share a promo code&lt;/strong&gt; with 5 friends to get your first reviews [3]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The gap between “I should teach this” and “I’m earning from this” is just one course. You’ve got the skills. Now package them, produce them, and launch them.&lt;/p&gt;

&lt;p&gt;What’s the first technical topic you’ll turn into a course? Share your idea in the comments—and if you’re ready to start, hit that follow button so you don’t miss my next guide on Udemy marketing tactics. Let’s build your passive income together.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider &lt;a href="https://ko-fi.com/qingluan" rel="noopener noreferrer"&gt;buying me a coffee ☕&lt;/a&gt; — it keeps these articles coming!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Also check out my AI tools collection: &lt;a href="https://ai.xn--4ds5cia.xn--rhqv96g/" rel="noopener noreferrer"&gt;AI 次元世界&lt;/a&gt; — free AI tools for developers.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>teaching</category>
      <category>money</category>
      <category>course</category>
      <category>passive</category>
    </item>
    <item>
      <title>Build a Local LLM Chatbot with Ollama and Python</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 18:01:13 +0000</pubDate>
      <link>https://dev.to/qingluan/build-a-local-llm-chatbot-with-ollama-and-python-5gdh</link>
      <guid>https://dev.to/qingluan/build-a-local-llm-chatbot-with-ollama-and-python-5gdh</guid>
      <description>&lt;h1&gt;
  
  
  Build a Local LLM Chatbot with Ollama and Python
&lt;/h1&gt;

&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, ai, llm, tutorial&lt;/p&gt;




&lt;h1&gt;
  
  
  Build a Local LLM Chatbot with Ollama and Python
&lt;/h1&gt;

&lt;p&gt;Imagine typing a question into your chatbot and getting a response in milliseconds, completely offline, with zero data leaving your machine. No API keys, no monthly subscription fees, and no privacy concerns about your data being sent to a cloud server. This isn’t a futuristic dream—it’s the reality of running a Local Large Language Model (LLM) on your own computer. With the rise of tools like &lt;strong&gt;Ollama&lt;/strong&gt;, building a private AI chatbot in Python has become as simple as installing a few packages and writing a short script. Let’s dive in and build one together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Go Local?
&lt;/h2&gt;

&lt;p&gt;Before we write any code, it’s worth understanding why running an LLM locally is a game-changer. Cloud-based AI services like OpenAI or Anthropic are powerful, but they come with trade-offs: you pay per token, your data is processed on their servers, and you’re dependent on their uptime. A local LLM flips this model. You download the model once, run it on your hardware, and you have full control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama&lt;/strong&gt; is the engine that makes this accessible. It’s a lightweight, open-source tool that simplifies running LLMs like Llama 3, Phi 3, or Mistral on macOS, Linux, and Windows. It handles model downloads, memory management, and inference, exposing a simple API that Python can easily interact with [1][2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install Ollama and Pull a Model
&lt;/h2&gt;

&lt;p&gt;The first step is getting Ollama on your machine. Visit &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;ollama.com&lt;/a&gt;, click &lt;strong&gt;Download&lt;/strong&gt;, and install the version for your operating system [2]. Once installed, verify it’s working by opening your terminal or Command Prompt and running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see a version number, you’re ready to go. Next, you need a model. Ollama supports dozens of open-source models, but for a beginner-friendly chatbot, &lt;strong&gt;Llama 3.2&lt;/strong&gt; is a great choice. It’s small, fast, and surprisingly capable.&lt;/p&gt;

&lt;p&gt;To download it, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull llama3.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command fetches the model and stores it locally. Depending on your internet speed, this might take a few minutes [2][7]. Once it’s done, you can test it directly in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run llama3.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type a question like “What’s the capital of France?” and see the model respond. If you get a reply, Ollama is working perfectly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Set Up Your Python Environment
&lt;/h2&gt;

&lt;p&gt;Now let’s build the Python side. First, create a project folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;local-llm-chatbot
&lt;span class="nb"&gt;cd &lt;/span&gt;local-llm-chatbot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside this folder, create a &lt;strong&gt;virtual environment&lt;/strong&gt; to manage your dependencies cleanly. On macOS or Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv chatbot
&lt;span class="nb"&gt;source &lt;/span&gt;chatbot/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows (Command Prompt):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv chatbot
.&lt;span class="se"&gt;\c&lt;/span&gt;hatbot&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows (PowerShell):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;.&lt;span class="se"&gt;\c&lt;/span&gt;hatbot&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\A&lt;/span&gt;ctivate.ps1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the environment is active, install the necessary Python packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;langchain langchain-ollama ollama
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’re using &lt;strong&gt;LangChain&lt;/strong&gt; and &lt;strong&gt;langchain-ollama&lt;/strong&gt; because they provide a clean, high-level interface for interacting with Ollama models, making our code shorter and more maintainable [2][3][7].&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Write the Chatbot Code
&lt;/h2&gt;

&lt;p&gt;Open your code editor (VS Code is a great choice) and create a file called &lt;code&gt;main.py&lt;/code&gt;. Here’s a complete, working Python script that creates a simple chatbot with conversation history:&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_ollama&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OllamaLLM&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize the model
&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OllamaLLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llama3.2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Conversation history to maintain context
&lt;/span&gt;&lt;span class="n"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&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;🤖 Local LLM Chatbot (powered by Ollama + Llama 3.2)&lt;/span&gt;&lt;span class="sh"&gt;"&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;Type &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;exit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; to quit.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Get user input
&lt;/span&gt;    &lt;span class="n"&gt;user_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;strip&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;user_input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&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;exit&lt;/span&gt;&lt;span class="sh"&gt;"&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;Chatbot: Goodbye!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

    &lt;span class="c1"&gt;# Add user message to history
&lt;/span&gt;    &lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&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;user&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;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;# Generate response
&lt;/span&gt;    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Print and store response
&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;Chatbot: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&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="n"&gt;history&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&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;assistant&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;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;# Optional: limit history to last 10 messages to save memory
&lt;/span&gt;    &lt;span class="k"&gt;if&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;history&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the file and run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll see a chat interface where you can type questions and get responses from Llama 3.2, all running locally. The &lt;code&gt;history&lt;/code&gt; list ensures the model remembers previous messages, giving you a more natural conversation experience [1][2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Customize and Expand
&lt;/h2&gt;

&lt;p&gt;This is just the foundation. Here are a few ways to make it even better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Change the model&lt;/strong&gt;: Try &lt;code&gt;phi3&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;, or &lt;code&gt;gemma&lt;/code&gt; by pulling them with &lt;code&gt;ollama pull phi3&lt;/code&gt; and updating the &lt;code&gt;model&lt;/code&gt; parameter in the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a web UI&lt;/strong&gt;: Use &lt;strong&gt;Streamlit&lt;/strong&gt; or &lt;strong&gt;Flask&lt;/strong&gt; to create a browser-based interface. For example, Streamlit lets you build a chat UI in under 50 lines of code [6].&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement RAG&lt;/strong&gt;: If you want your chatbot to answer questions from your own documents (like PDFs or Word files), you can add a &lt;strong&gt;RAG (Retrieval-Augmented Generation)&lt;/strong&gt; layer using LangChain and ChromaDB [2][8].&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add tools&lt;/strong&gt;: Let your chatbot call custom functions (e.g., fetch weather, search the web) by defining tools in LangChain [8].&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model not found&lt;/strong&gt;: Make sure you ran &lt;code&gt;ollama pull llama3.2&lt;/code&gt; and that Ollama is running (&lt;code&gt;ollama serve&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow responses&lt;/strong&gt;: Smaller models (like &lt;code&gt;phi3&lt;/code&gt;) are faster but less capable. If you have a GPU, Ollama will automatically use it for faster inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory issues&lt;/strong&gt;: If you get a “out of memory” error, try a smaller model or reduce the conversation history length.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Start Building Your Private AI Today
&lt;/h2&gt;

&lt;p&gt;You now have a fully functional, local LLM chatbot running on your machine. No API keys, no subscriptions, no data leaks. Just pure, private AI.&lt;/p&gt;

&lt;p&gt;The best part? This is just the beginning. You can extend this chatbot to read your documents, automate tasks, or even integrate it into your existing apps. The local AI revolution is happening right now, and you’re part of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it out today&lt;/strong&gt;: Install Ollama, pull Llama 3.2, run the script above, and start chatting with your own AI. Share your results on Dev.to, tag me, and let’s build the future of private AI together. 🚀&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider &lt;a href="https://ko-fi.com/qingluan" rel="noopener noreferrer"&gt;buying me a coffee ☕&lt;/a&gt; — it keeps these articles coming!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Also check out my AI tools collection: &lt;a href="https://ai.xn--4ds5cia.xn--rhqv96g/" rel="noopener noreferrer"&gt;AI 次元世界&lt;/a&gt; — free AI tools for developers.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>llm</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Earn $10k+/Year from Bug Bounties</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 18:00:27 +0000</pubDate>
      <link>https://dev.to/qingluan/how-to-earn-10kyear-from-bug-bounties-163d</link>
      <guid>https://dev.to/qingluan/how-to-earn-10kyear-from-bug-bounties-163d</guid>
      <description>&lt;h1&gt;
  
  
  How to Earn $10k+/Year from Bug Bounties
&lt;/h1&gt;

&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;p&gt;tags: security, bugbounty, money, hacking&lt;/p&gt;




&lt;h1&gt;
  
  
  How to Earn $10k+/Year from Bug Bounties: A Practical Roadmap
&lt;/h1&gt;

&lt;p&gt;You’ve seen the headlines: hackers finding critical flaws in billion-dollar companies and getting paid $50,000 for a single report. It looks like a magic trick, but it’s actually a skill you can build. The truth is, earning &lt;strong&gt;$10,000+ per year&lt;/strong&gt; from bug bounties isn’t about being a genius coder; it’s about being &lt;strong&gt;consistent&lt;/strong&gt;, &lt;strong&gt;strategic&lt;/strong&gt;, and &lt;strong&gt;actionable&lt;/strong&gt;. If you’re willing to treat this like a part-time job rather than a lucky gamble, hitting that $10k mark is a realistic goal within 12–18 months.&lt;/p&gt;

&lt;p&gt;Let’s cut through the noise and build a roadmap that works in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Math Behind $10k/Year
&lt;/h2&gt;

&lt;p&gt;Before you hunt, understand the numbers. Most beginners expect to find a critical bug worth $10,000 in their first month. That rarely happens. Instead, focus on the &lt;strong&gt;volume of valid findings&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low severity bugs&lt;/strong&gt;: $100–$500 each [5]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium severity bugs&lt;/strong&gt;: $500–$2,000 each [5][7]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High/Critical bugs&lt;/strong&gt;: $5,000–$50,000+ [5]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To hit &lt;strong&gt;$10,000/year&lt;/strong&gt;, you don’t need a single critical find. You could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find &lt;strong&gt;20 medium bugs&lt;/strong&gt; at $500 each&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;10 medium bugs&lt;/strong&gt; ($500) + &lt;strong&gt;2 critical bugs&lt;/strong&gt; ($2,500 each)&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;40 low bugs&lt;/strong&gt; at $250 each&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key is &lt;strong&gt;consistency&lt;/strong&gt;. A researcher with one year of focused hunting can realistically earn several thousand dollars annually, potentially matching a part-time income [5]. The ceiling rises steeply as you gain access to &lt;strong&gt;private programs&lt;/strong&gt;, which offer higher payouts and less competition [5].&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Your Foundation (Weeks 1–4)
&lt;/h2&gt;

&lt;p&gt;Don’t jump into hunting yet. You need to understand how the web actually works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Master Web Fundamentals
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn &lt;strong&gt;HTTP/HTTPS protocols&lt;/strong&gt;: request/response structure, headers, cookies, session management [1]&lt;/li&gt;
&lt;li&gt;Understand &lt;strong&gt;client-side tech&lt;/strong&gt;: HTML, CSS, JavaScript basics [1]&lt;/li&gt;
&lt;li&gt;Study &lt;strong&gt;common vulnerabilities&lt;/strong&gt;: SQL injection, XSS, IDOR, CSRF, SSRF [1][6]&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start with Free Learning Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HackTheBox Academy&lt;/strong&gt; (free modules) [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TryHackMe&lt;/strong&gt; bug bounty path [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PortSwigger Academy&lt;/strong&gt; mystery labs [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PentesterLab&lt;/strong&gt; exercises [1]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practice on &lt;strong&gt;VulnHub&lt;/strong&gt; vulnerable machines before touching real programs [1]. This foundation is non-negotiable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose Your First Programs Strategically
&lt;/h2&gt;

&lt;p&gt;One of the biggest mistakes beginners make is targeting the wrong programs. You’ll waste months hunting on massive platforms like Google or Facebook where thousands of experts compete.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to Look For
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wide scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;More targets = more bugs [1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fewer participants&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Newer programs have less competition [1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recent payouts visible&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Confirms the program actually pays [1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Minimal "out of scope" lists&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Less friction in reporting [1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Private programs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Higher payouts, less competition [1][5]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Where to Start
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Target &lt;strong&gt;unsexy B2B companies&lt;/strong&gt; with weak security [2]&lt;/li&gt;
&lt;li&gt;Look for &lt;strong&gt;new open programs&lt;/strong&gt; on HackerOne or Bugcrowd [2]&lt;/li&gt;
&lt;li&gt;Focus on &lt;strong&gt;specific technical niches&lt;/strong&gt; (APIs, GraphQL, mobile apps) [1][2]&lt;/li&gt;
&lt;li&gt;Avoid programs with &lt;strong&gt;extensive exclusions&lt;/strong&gt; [1]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick a program you actually use daily. It keeps you focused and helps you understand the business logic [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Your First Hunt: A Practical Workflow
&lt;/h2&gt;

&lt;p&gt;Here’s a step-by-step process you can start &lt;strong&gt;today&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Reconnaissance (20% of time)
&lt;/h3&gt;

&lt;p&gt;Understand the target’s architecture. Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subdomains&lt;/li&gt;
&lt;li&gt;API endpoints&lt;/li&gt;
&lt;li&gt;Third-party integrations&lt;/li&gt;
&lt;li&gt;Old versions of software&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Manual Testing (60% of time)
&lt;/h3&gt;

&lt;p&gt;Tools miss context. &lt;strong&gt;Manually analyze every request and response&lt;/strong&gt; [10]. Verify findings by hand before writing a report [2].&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Automated Scanning (20% of time)
&lt;/h3&gt;

&lt;p&gt;Use tools like Burp Suite, OWASP ZAP, or Nuclei, but don’t rely on them. &lt;strong&gt;Five tools mastered beat 40 tools half-used&lt;/strong&gt; [2].&lt;/p&gt;

&lt;h3&gt;
  
  
  Python Example: Simple API Endpoint Scanner
&lt;/h3&gt;

&lt;p&gt;Here’s a lightweight script to help you identify potential API endpoints during reconnaissance:&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;urllib.parse&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urlparse&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;scan_api_endpoints&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;common_paths&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Scan for common API endpoints on a target domain.
    Returns a list of valid endpoints.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;valid_endpoints&lt;/span&gt; &lt;span class="o"&gt;=&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;path&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;common_paths&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&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;base_url&lt;/span&gt;&lt;span class="si"&gt;}{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;allow_redirects&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;# Check for common API response patterns
&lt;/span&gt;            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-Type&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="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                    &lt;span class="n"&gt;valid_endpoints&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RequestException&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;continue&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;valid_endpoints&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;paths&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;/v1/users&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;/v1/auth/login&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;/v1/products&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;/api/graphql&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;/v2/orders&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;/health&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;endpoints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;scan_api_endpoints&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;paths&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;endpoints&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;Found &lt;/span&gt;&lt;span class="si"&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;endpoints&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; potential API endpoints:&lt;/span&gt;&lt;span class="sh"&gt;"&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;ep&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;endpoints&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;  ✅ &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ep&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="k"&gt;else&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;No API endpoints found.&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;p&gt;This script checks for JSON responses and common API paths. &lt;strong&gt;Run it on your target&lt;/strong&gt;, but remember: &lt;strong&gt;verify everything by hand&lt;/strong&gt; before reporting [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Specialize to Scale
&lt;/h2&gt;

&lt;p&gt;Once you’ve found a few bugs, &lt;strong&gt;specialize&lt;/strong&gt;. Don’t stay a generalist.&lt;/p&gt;

&lt;h3&gt;
  
  
  High-Value Specializations in 2026
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mobile app security&lt;/strong&gt; (iOS/Android) [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API and GraphQL vulnerabilities&lt;/strong&gt; [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud security&lt;/strong&gt; (AWS, Azure, GCP) [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blockchain and smart contract auditing&lt;/strong&gt; [1]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IoT and embedded device security&lt;/strong&gt; [1]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Specializing lets you find &lt;strong&gt;niche vulnerabilities&lt;/strong&gt; that generalists miss. Big bounties often hide in &lt;strong&gt;harder-to-understand domains&lt;/strong&gt; [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Report Quality = Payout Speed
&lt;/h2&gt;

&lt;p&gt;A good bug report gets paid faster. A bad one gets rejected.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Triagers Want
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clear reproduction steps&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact analysis&lt;/strong&gt; (what can the attacker do?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proof of concept&lt;/strong&gt; (code, screenshots, video)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggested fix&lt;/strong&gt; (optional but helpful)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Verify everything by hand before touching a report&lt;/strong&gt; [2]. 84% of automated findings fail validation [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Mindset and Consistency
&lt;/h2&gt;

&lt;p&gt;Bug bounty hunting is a marathon, not a sprint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Mindset Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency is critical&lt;/strong&gt;: Some days you find bugs, some days nothing [10]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on weekly/monthly goals&lt;/strong&gt;, not daily wins [10]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Variety in bugs&lt;/strong&gt;: Don’t only hunt XSS [10]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pivot perspectives, not targets&lt;/strong&gt; [3]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build a community&lt;/strong&gt;: Network with other researchers [7]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Demotivation is common in the first months. The solution is &lt;strong&gt;realistic goals&lt;/strong&gt; and focusing on your average performance over time [10].&lt;/p&gt;

&lt;h2&gt;
  
  
  Manage Your Money Like a Pro
&lt;/h2&gt;

&lt;p&gt;Earning $10k/year is great, but &lt;strong&gt;keeping it&lt;/strong&gt; is what matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Allocation Strategy (From a $100k Earner) [8]
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;38% for taxes&lt;/strong&gt; (adjust based on your bracket)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20% for long-term savings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30% for personal expenses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12% for operating costs&lt;/strong&gt; (tools, licenses, infrastructure)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Batch your payouts&lt;/strong&gt;: Wait until the end of the month or hit a threshold like $20,000 before allocating [8]. Automate transfers if your bank supports scheduled transfers [8].&lt;/p&gt;

&lt;p&gt;Review your setup &lt;strong&gt;monthly&lt;/strong&gt; and adjust percentages as needed [8].&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Action Plan for This Week
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sign up&lt;/strong&gt; for HackerOne and Bugcrowd [7]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete&lt;/strong&gt; 3 free modules on HackTheBox Academy [1]&lt;/li&gt;
&lt;li&gt;**Pick one program&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider &lt;a href="https://ko-fi.com/qingluan" rel="noopener noreferrer"&gt;buying me a coffee ☕&lt;/a&gt; — it keeps these articles coming!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Also check out my AI tools collection: &lt;a href="https://ai.xn--4ds5cia.xn--rhqv96g/" rel="noopener noreferrer"&gt;AI 次元世界&lt;/a&gt; — free AI tools for developers.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;🛠️ Useful resource: **Python Automation Scripts Pack (10 Ready-to-Use Tools)&lt;/em&gt;* — $14.99. Check it out on Gumroad!*&lt;/p&gt;

</description>
      <category>security</category>
      <category>bugbounty</category>
      <category>money</category>
      <category>hacking</category>
    </item>
    <item>
      <title>Build a Dependency Vulnerability Scanner with Python</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 18:00:20 +0000</pubDate>
      <link>https://dev.to/qingluan/build-a-dependency-vulnerability-scanner-with-python-hke</link>
      <guid>https://dev.to/qingluan/build-a-dependency-vulnerability-scanner-with-python-hke</guid>
      <description>&lt;h1&gt;
  
  
  Build a Dependency Vulnerability Scanner with Python
&lt;/h1&gt;

&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;p&gt;tags: python, security, devops, tools&lt;/p&gt;




&lt;h1&gt;
  
  
  Build a Dependency Vulnerability Scanner with Python
&lt;/h1&gt;

&lt;p&gt;Your &lt;code&gt;requirements.txt&lt;/code&gt; looks clean, but one of those dependencies might be a ticking time bomb waiting to expose your users to a data breach. You don’t need to wait for a security audit to find out—you can build your own lightweight vulnerability scanner in Python today and integrate it directly into your workflow.&lt;/p&gt;

&lt;p&gt;Security isn’t just about writing secure code; it’s about knowing what’s running in your environment. With thousands of Python packages available, the odds that you’re using a library with a known CVE (Common Vulnerabilities and Exposures) are high. Instead of relying solely on third-party tools like &lt;code&gt;pip-audit&lt;/code&gt; or &lt;code&gt;safety&lt;/code&gt; (which are excellent, but sometimes opaque), building your own scanner gives you full control over how vulnerabilities are detected, reported, and acted upon.&lt;/p&gt;

&lt;p&gt;Let’s build a practical, working dependency vulnerability scanner from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Build Your Own Scanner?
&lt;/h2&gt;

&lt;p&gt;Existing tools like &lt;code&gt;pip-audit&lt;/code&gt; [13], &lt;code&gt;safety&lt;/code&gt; [10], and &lt;code&gt;PySentry&lt;/code&gt; [4] are powerful, but they come with limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They may not support your specific output format (e.g., custom JSON for CI).&lt;/li&gt;
&lt;li&gt;They might not integrate cleanly with your private PyPI registry.&lt;/li&gt;
&lt;li&gt;You can’t easily tweak the logic to match your team’s risk tolerance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building your own scanner lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query the NVD (National Vulnerability Database) API directly.&lt;/li&gt;
&lt;li&gt;Parse &lt;code&gt;requirements.txt&lt;/code&gt;, &lt;code&gt;pyproject.toml&lt;/code&gt;, or &lt;code&gt;poetry.lock&lt;/code&gt; files flexibly.&lt;/li&gt;
&lt;li&gt;Generate reports in any format you need (Markdown, JSON, SARIF).&lt;/li&gt;
&lt;li&gt;Fail your CI pipeline automatically when critical CVEs are found.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus, it’s a great learning exercise in cybersecurity, API integration, and Python parsing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up Your Environment
&lt;/h2&gt;

&lt;p&gt;Before writing code, prepare a clean virtual environment to avoid false positives from global packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv scanner-env
&lt;span class="nb"&gt;source &lt;/span&gt;scanner-env/bin/activate
pip &lt;span class="nb"&gt;install &lt;/span&gt;requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’ll use the &lt;code&gt;requests&lt;/code&gt; library to query the NVD API. No heavy dependencies—just pure Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Parse Dependency Files
&lt;/h2&gt;

&lt;p&gt;Your scanner needs to read your project’s dependency manifest. We’ll start with &lt;code&gt;requirements.txt&lt;/code&gt;, the most common format.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_requirements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]]:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Parse requirements.txt and return list of (package, version) dicts.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;deps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&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;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;continue&lt;/span&gt;
            &lt;span class="c1"&gt;# Match package name and optional version specifier
&lt;/span&gt;            &lt;span class="n"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;^([a-zA-Z0-9_-]+)([=&amp;lt;&amp;gt;!~].*)?$&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&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;match&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;package&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;
                &lt;span class="n"&gt;deps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;package&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;version&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;deps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function handles comments, flags like &lt;code&gt;-e&lt;/code&gt;, and version specifiers like &lt;code&gt;==1.2.3&lt;/code&gt; or &lt;code&gt;&amp;gt;=1.0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Query the NVD API for CVEs
&lt;/h2&gt;

&lt;p&gt;The NVD API is the gold standard for vulnerability data. We’ll query it by product name and version.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;requests.exceptions&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RequestException&lt;/span&gt;

&lt;span class="n"&gt;NVD_API_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;https://services.nvd.nist.gov/rest/json/cves/2.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Fetch CVEs for a given package and version from NVD API.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;params&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;productName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;=&amp;lt;&amp;gt;!~&lt;/span&gt;&lt;span class="sh"&gt;'&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;version&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NVD_API_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;200&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;⚠️  Failed to fetch CVEs for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;package&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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&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="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&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;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;vulnerabilities&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="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;RequestException&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&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;⚠️  Network error for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;package&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;e&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="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: The NVD API requires no authentication for basic queries, but rate limits apply. For production use, consider caching results or using an API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Build the Scanner Class
&lt;/h2&gt;

&lt;p&gt;Now, let’s assemble everything into a reusable scanner.&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;class&lt;/span&gt; &lt;span class="nc"&gt;DependencyScanner&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requirements_file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parse_requirements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;requirements_file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Scan all dependencies and return list of vulnerabilities.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;dep&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;package&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dep&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;package&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dep&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="n"&gt;cves&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;version&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;vuln&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cves&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;cve_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;vuln&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cve&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="nb"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cve_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;severity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
                &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cve_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;descriptions&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="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&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="p"&gt;)[:&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

                &lt;span class="c1"&gt;# Extract severity from metrics if available
&lt;/span&gt;                &lt;span class="n"&gt;metrics&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cve_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;metrics&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="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssMetricV31&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;severity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssMetricV31&lt;/span&gt;&lt;span class="sh"&gt;'&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;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssData&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="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;severity&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;Unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssMetricV30&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;severity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssMetricV30&lt;/span&gt;&lt;span class="sh"&gt;'&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;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cvssData&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="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;severity&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;Unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;package&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cve_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;severity&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;severity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;description&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;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;report_markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Generate a Markdown report of vulnerabilities.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;# 🚨 Dependency Vulnerability Report&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✅ No vulnerabilities found!&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;report&lt;/span&gt;

        &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="o"&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;Found **&lt;/span&gt;&lt;span class="si"&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;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;** vulnerabilities:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vulnerabilities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="o"&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;- **&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;package&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cve_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;severity&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="n"&gt;report&lt;/span&gt; &lt;span class="o"&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;  &amp;gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;report&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Run the Scanner
&lt;/h2&gt;

&lt;p&gt;Create a &lt;code&gt;main.py&lt;/code&gt; to execute the scan:&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;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;scanner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DependencyScanner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;requirements.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;vulns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scanner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scan&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="n"&gt;scanner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;report_markdown&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get a clean Markdown report listing all CVEs, severities, and descriptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating with CI/CD
&lt;/h2&gt;

&lt;p&gt;To make this actionable today, integrate the scanner into your CI pipeline. Export JSON output and fail the build if any CVE has a score above 7.0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py &lt;span class="nt"&gt;--format&lt;/span&gt; json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; vulnerabilities.json
&lt;span class="c"&gt;# In CI: parse JSON and fail if high-severity CVEs exist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub Actions, GitLab CI, and Jenkins all support this pattern [3]. Mount your project, install the scanner, run the scan, and upload the report as an artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;You’ve built a working scanner, but you can extend it further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support &lt;code&gt;pyproject.toml&lt;/code&gt; and &lt;code&gt;poetry.lock&lt;/code&gt; parsing.&lt;/li&gt;
&lt;li&gt;Add SARIF output for IDE integration.&lt;/li&gt;
&lt;li&gt;Cache NVD responses to avoid rate limits.&lt;/li&gt;
&lt;li&gt;Auto-fix vulnerabilities using &lt;code&gt;pip-audit --fix&lt;/code&gt; logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The beauty of building your own tool is that you control every piece of the pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Take Action Today
&lt;/h2&gt;

&lt;p&gt;Don’t wait for a security incident to audit your dependencies. Run this scanner on your project right now, generate a report, and start patching. Share your findings with your team, set up a CI job to run it automatically, and make vulnerability scanning part of your development rhythm.&lt;/p&gt;

&lt;p&gt;Your code is only secure if your dependencies are secure. Build the scanner, integrate it, and stay ahead of the threats.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Try it now&lt;/strong&gt;: Clone the code, run it on your &lt;code&gt;requirements.txt&lt;/code&gt;, and see what vulnerabilities you uncover. Then, drop a comment below with your findings or ask for help extending the scanner to support your framework.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider &lt;a href="https://ko-fi.com/qingluan" rel="noopener noreferrer"&gt;buying me a coffee ☕&lt;/a&gt; — it keeps these articles coming!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Also check out my AI tools collection: &lt;a href="https://ai.xn--4ds5cia.xn--rhqv96g/" rel="noopener noreferrer"&gt;AI 次元世界&lt;/a&gt; — free AI tools for developers.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;🛠️ Useful resource: **Python Automation Scripts Pack (10 Ready-to-Use Tools)&lt;/em&gt;* — $14.99. Check it out on Gumroad!*&lt;/p&gt;

</description>
      <category>python</category>
      <category>security</category>
      <category>devops</category>
      <category>tools</category>
    </item>
    <item>
      <title>Python Developer's Complete Learning Path</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 17:17:13 +0000</pubDate>
      <link>https://dev.to/qingluan/python-developers-complete-learning-path-21ga</link>
      <guid>https://dev.to/qingluan/python-developers-complete-learning-path-21ga</guid>
      <description>&lt;h1&gt;
  
  
  Python Developer's Complete Learning Path
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Last updated: 2026-09-08&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome to the complete Python learning path! This guide organizes all my articles into structured series so you can learn systematically — whether you're a beginner or an advanced developer looking to level up.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Series Overview
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Series&lt;/th&gt;
&lt;th&gt;Articles&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🐍 &lt;strong&gt;Python Basics Series&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;508 articles&lt;/td&gt;
&lt;td&gt;Start here if you're new to Python. Covers fundamentals, syntax, data structures, and common patterns.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;₿ &lt;strong&gt;Python Crypto Series&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;4 articles&lt;/td&gt;
&lt;td&gt;Explore Python in the world of crypto, DeFi, and blockchain — from price tracking to smart contract interaction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Python Automation Series&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;47 articles&lt;/td&gt;
&lt;td&gt;Automate repetitive tasks, build bots, and create workflows that save you hours every week.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡ &lt;strong&gt;Python Advanced Series&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;5 articles&lt;/td&gt;
&lt;td&gt;Deep dives into async programming, performance optimization, design patterns, and architectural best practices.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total: 564 articles across 4 series&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🐍 Python Basics Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-your-first-freelance-client-on-upwork-3jd9"&gt;How to Get Your First Freelance Client on Upwork&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-type-hints-write-better-code-with-examples-49a9"&gt;Python Type Hints: Write Better Code with Examples&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/monetize-your-blog-with-ai-a-developers-guide-5ddn"&gt;Monetize Your Blog with AI: A Developer's Guide&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-chrome-extension-that-makes-money-97"&gt;How to Build a Chrome Extension That Makes Money&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/deploy-python-apps-for-free-complete-2025-guide-30il"&gt;Deploy Python Apps for Free: Complete 2025 Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-price-alert-bot-with-python-49pg"&gt;Build an Automated Price Alert Bot with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-200day-with-crypto-trading-bots-378g"&gt;How to Make $200/Day with Crypto Trading Bots&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/redis-tutorial-speed-up-your-app-10x-with-caching-5co9"&gt;Redis Tutorial: Speed Up Your App 10x with Caching&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-find-and-fix-security-vulnerabilities-for-money-32o8"&gt;How to Find and Fix Security Vulnerabilities for Money&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-saas-dashboard-with-fastapi-and-react-j8m"&gt;Build a SaaS Dashboard with FastAPI and React&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/earn-money-testing-websites-and-apps-complete-guide-1hhg"&gt;Earn Money Testing Websites and Apps: Complete Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-ai-to-write-code-10x-faster-5gpj"&gt;How to Use AI to Write Code 10x Faster&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-complete-guide-to-selling-digital-products-online-1519"&gt;The Complete Guide to Selling Digital Products Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-social-media-and-grow-to-10k-followers-197h"&gt;How to Automate Social Media and Grow to 10K Followers&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/microservices-with-python-build-scalable-applications-l9i"&gt;Microservices with Python: Build Scalable Applications&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-the-complete-guide-with-real-examples-2fnh"&gt;Python Decorators: The Complete Guide with Real Examples&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-rest-api-with-fastapi-in-30-minutes-2l5j"&gt;How to Build a REST API with FastAPI in 30 Minutes&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-1000-with-your-first-github-repository-1kag"&gt;How to Earn $1000 with Your First GitHub Repository&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-virtual-environments-a-complete-2025-guide-25c7"&gt;Python Virtual Environments: A Complete 2025 Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-dashboard-with-python-and-websockets-5gkp"&gt;Build a Real-Time Dashboard with Python and WebSockets&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-deploy-your-python-app-on-a-5month-server-e66"&gt;How to Deploy Your Python App on a $5/Month Server&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/nginx-python-the-perfect-production-setup-4144"&gt;Nginx + Python: The Perfect Production Setup&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-start-a-tech-blog-and-make-500month-3bhl"&gt;How to Start a Tech Blog and Make $500/Month&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/web-scraping-with-playwright-handle-any-website-5fjo"&gt;Web Scraping with Playwright: Handle Any Website&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/sell-your-code-how-to-package-and-monetize-python-libraries-58cl"&gt;Sell Your Code: How to Package and Monetize Python Libraries&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-lazy-developers-guide-to-making-money-online-14e0"&gt;The Lazy Developer's Guide to Making Money Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-crypto-portfolio-tracker-with-python-4ee9"&gt;Build a Crypto Portfolio Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-claude-api-to-build-profitable-ai-products-40i6"&gt;How to Use Claude API to Build Profitable AI Products&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/pydantic-tutorial-write-bulletproof-python-code-15dp"&gt;Pydantic Tutorial: Write Bulletproof Python Code&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-your-python-code-10x-faster-2680"&gt;How to Make Your Python Code 10x Faster&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-find-remote-python-jobs-that-pay-150k-1ji"&gt;How to Find Remote Python Jobs That Pay $150k+&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/celery-redis-background-tasks-made-simple-1lji"&gt;Celery + Redis: Background Tasks Made Simple&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-developers-guide-to-investing-passive-income-1231"&gt;The Developer's Guide to Investing Passive Income&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-client-invoicing-with-python-5a1k"&gt;How to Automate Client Invoicing with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/sqlalchemy-20-the-modern-way-to-work-with-databases-1f1l"&gt;SQLAlchemy 2.0: The Modern Way to Work with Databases&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-ai-to-generate-passive-income-in-2025-k6h"&gt;How to Use AI to Generate Passive Income in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-testing-write-tests-that-actually-catch-bugs-2b91"&gt;Python Testing: Write Tests That Actually Catch Bugs&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-personal-finance-dashboard-with-python-3amo"&gt;Build a Personal Finance Dashboard with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-10kmonth-as-an-indie-developer-2flh"&gt;How to Make $10k/Month as an Indie Developer&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-pdf-report-generator-with-python-3gfp"&gt;Build a PDF Report Generator with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-scale-a-python-app-to-handle-1-million-requests-4g7h"&gt;How to Scale a Python App to Handle 1 Million Requests&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-and-sell-notion-templates-for-500month-1lh0"&gt;How to Build and Sell Notion Templates for $500/Month&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-aws-lambda-build-serverless-apps-for-free-141f"&gt;Python + AWS Lambda: Build Serverless Apps for Free&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-and-sell-online-courses-as-a-developer-30kj"&gt;How to Create and Sell Online Courses as a Developer&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/advanced-python-generators-lazy-evaluation-explained-302i"&gt;Advanced Python Generators: Lazy Evaluation Explained&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-paid-for-writing-technical-documentation-246k"&gt;How to Get Paid for Writing Technical Documentation&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-your-freelance-workflow-with-python-2436"&gt;How to Automate Your Freelance Workflow with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-packaging-how-to-publish-your-first-pip-package-15fl"&gt;Python Packaging: How to Publish Your First pip Package&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-niche-website-as-a-developer-1d0j"&gt;How to Build a Profitable Niche Website as a Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/typescript-for-python-developers-a-practical-guide-8p0"&gt;TypeScript for Python Developers: A Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-chat-app-with-fastapi-and-websockets-5hap"&gt;Build a Real-Time Chat App with FastAPI and WebSockets&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-cli-tool-with-python-and-click-3omk"&gt;How to Build a CLI Tool with Python and Click&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/mastering-python-dataclasses-a-complete-guide-2p7e"&gt;Mastering Python Dataclasses: A Complete Guide&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-email-notification-system-with-python-2l5m"&gt;Build an Email Notification System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-scrape-javascript-heavy-sites-with-playwright-4hoc"&gt;How to Scrape JavaScript-Heavy Sites with Playwright&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-context-managers-the-complete-guide-2mgp"&gt;Python Context Managers: The Complete Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-openai-api-to-build-profitable-apps-1l8j"&gt;How to Use OpenAI API to Build Profitable Apps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/pandas-vs-polars-which-one-should-you-use-in-2025-57jf"&gt;Pandas vs Polars: Which One Should You Use in 2025?&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-url-shortener-with-fastapi-and-redis-2m9"&gt;Build a URL Shortener with FastAPI and Redis&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-deploy-python-apps-with-docker-compose-480"&gt;How to Deploy Python Apps with Docker Compose&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-logging-best-practices-for-production-apps-1ipl"&gt;Python Logging: Best Practices for Production Apps&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-file-sync-tool-with-python-and-watchdog-4dhc"&gt;Build a File Sync Tool with Python and Watchdog&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-write-clean-python-code-10-principles-4pmk"&gt;How to Write Clean Python Code: 10 Principles&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-rest-api-with-django-rest-framework-10j4"&gt;Build a REST API with Django REST Framework&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-multiprocessing-vs-threading-when-to-use-each-3dc2"&gt;Python multiprocessing vs threading: When to Use Each&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-web-crawler-with-scrapy-2aai"&gt;How to Build a Web Crawler with Scrapy&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-password-manager-with-python-4e9g"&gt;Build a Password Manager with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-anthropic-claude-api-for-automation-4h3l"&gt;How to Use Anthropic Claude API for Automation&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-metaclasses-explained-advanced-oop-jlg"&gt;Python Metaclasses Explained: Advanced OOP&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-simple-search-engine-with-python-18a5"&gt;Build a Simple Search Engine with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-github-copilot-effectively-as-a-developer-3663"&gt;How to Use GitHub Copilot Effectively as a Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-markdown-to-pdf-converter-with-python-3gi2"&gt;Build a Markdown-to-PDF Converter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-test-async-python-code-with-pytest-asyncio-3d0b"&gt;How to Test Async Python Code with pytest-asyncio&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-multi-agent-ai-system-with-langchain-2kd0"&gt;Build a Multi-Agent AI System with LangChain&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-protocol-types-duck-typing-done-right-i15"&gt;Python Protocol Types: Duck Typing Done Right&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-kubernetes-operator-with-python-58ib"&gt;Build a Kubernetes Operator with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-saas-with-stripe-and-fastapi-3202"&gt;How to Build a Profitable SaaS with Stripe and FastAPI&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/rust-for-python-developers-why-you-should-learn-it-oh2"&gt;Rust for Python Developers: Why You Should Learn It&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-voice-assistant-with-python-and-whisper-cpl"&gt;Build a Voice Assistant with Python and Whisper&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-vector-databases-for-ai-applications-jgp"&gt;How to Use Vector Databases for AI Applications&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-memory-management-how-it-actually-works-5a9e"&gt;Python Memory Management: How It Actually Works&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-qr-code-generator-with-python-4oho"&gt;Build a QR Code Generator with Python&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-chrome-extension-in-2025-3f74"&gt;How to Build a Profitable Chrome Extension in 2025&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-data-pipeline-with-apache-airflow-4i34"&gt;Build a Data Pipeline with Apache Airflow&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-2000month-as-a-technical-writer-5cb8"&gt;How to Make $2000/Month as a Technical Writer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-browser-automation-tool-with-selenium-2pca"&gt;Build a Browser Automation Tool with Selenium&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-abstract-base-classes-design-patterns-136l"&gt;Python Abstract Base Classes: Design Patterns&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-finance-tracker-app-with-python-and-sqlite-e7o"&gt;Build a Finance Tracker App with Python and SQLite&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-set-up-a-professional-python-development-environment-5h0o"&gt;How to Set Up a Professional Python Development Environment&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-and-sell-coding-challenges-online-dai"&gt;How to Build and Sell Coding Challenges Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-slots-optimize-your-classes-for-performance-14je"&gt;Python Slots: Optimize Your Classes for Performance&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-webhook-receiver-with-fastapi-3f69"&gt;Build a Webhook Receiver with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-ai-chatbot-for-businesses-1fo8"&gt;How to Build a Profitable AI Chatbot for Businesses&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-system-monitor-dashboard-with-python-2nj2"&gt;Build a System Monitor Dashboard with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-cloudflare-workers-for-free-hosting-247i"&gt;How to Use Cloudflare Workers for Free Hosting&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-string-methods-youre-probably-not-using-3ef6"&gt;Python String Methods You're Probably Not Using&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-notification-system-with-server-sent-events-3gd5"&gt;Build a Real-Time Notification System with Server-Sent Events&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-passive-income-blog-as-a-developer-42g8"&gt;How to Build a Passive Income Blog as a Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-llms-for-code-review-automation-afa"&gt;How to Use LLMs for Code Review Automation&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-walrus-operator-practical-use-cases-5ah8"&gt;Python walrus operator (:=): Practical Use Cases&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-micro-saas-in-48-hours-4981"&gt;How to Build a Micro-SaaS in 48 Hours&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-passive-income-with-open-source-software-3ni6"&gt;How to Earn Passive Income with Open Source Software&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-performance-profiling-find-and-fix-bottlenecks-57kn"&gt;Python Performance Profiling: Find and Fix Bottlenecks&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-currency-converter-with-python-4ifk"&gt;Build a Real-Time Currency Converter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-shopify-app-with-python-4gfj"&gt;How to Build a Shopify App with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-text-summarizer-with-hugging-face-transformers-3n83"&gt;Build a Text Summarizer with Hugging Face Transformers&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-terraform-with-python-for-infrastructure-28fo"&gt;How to Use Terraform with Python for Infrastructure&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-code-complexity-analyzer-with-python-pmd"&gt;Build a Code Complexity Analyzer with Python&lt;/a&gt; — 2 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-prompt-engineering-service-56bd"&gt;How to Build a Profitable Prompt Engineering Service&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-design-patterns-factory-singleton-observer-4bc5"&gt;Python Design Patterns: Factory, Singleton, Observer&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-500week-testing-apps-and-websites-5gjn"&gt;How to Make $500/Week Testing Apps and Websites&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-machine-learning-model-api-with-fastapi-5fha"&gt;Build a Machine Learning Model API with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-discord-community-5b53"&gt;How to Build a Profitable Discord Community&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-enum-when-and-how-to-use-it-4k70"&gt;Python Enum: When and How to Use It&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-hired-as-a-remote-python-developer-57kn"&gt;How to Get Hired as a Remote Python Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-pdf-text-extractor-with-python-4l8e"&gt;Build a PDF Text Extractor with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-profitable-web3-dapps-in-2025-4145"&gt;How to Build Profitable Web3 dApps in 2025&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-concurrency-asyncio-threading-multiprocessing-3jd7"&gt;Python Concurrency: asyncio, threading, multiprocessing&lt;/a&gt; — 2 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-smart-home-controller-with-python-and-mqtt-16e9"&gt;Build a Smart Home Controller with Python and MQTT&lt;/a&gt; — 2 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-saas-landing-page-that-converts-2mma"&gt;How to Build a SaaS Landing Page That Converts&lt;/a&gt; — 12 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-profitable-mobile-apps-as-a-python-dev-5dh7"&gt;How to Build Profitable Mobile Apps as a Python Dev&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-regular-expressions-the-definitive-guide-532h"&gt;Python Regular Expressions: The Definitive Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-network-scanner-with-python-and-scapy-5akf"&gt;Build a Network Scanner with Python and Scapy&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-ai-writing-assistant-3459"&gt;How to Build a Profitable AI Writing Assistant&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-time-series-forecasting-app-with-python-1592"&gt;Build a Time Series Forecasting App with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-linkedin-outreach-ethically-with-python-3o42"&gt;How to Automate LinkedIn Outreach (Ethically) with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-leaderboard-with-redis-and-fastapi-4271"&gt;Build a Real-Time Leaderboard with Redis and FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-functional-programming-functools-deep-dive-532o"&gt;Python Functional Programming: functools Deep Dive&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-serverless-python-app-on-aws-lambda-21d0"&gt;Build a Serverless Python App on AWS Lambda&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-no-code-tool-as-a-developer-5ba9"&gt;How to Build a Profitable No-Code Tool as a Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-itertools-10-tricks-for-cleaner-code-31ml"&gt;Python Itertools: 10 Tricks for Cleaner Code&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-10kyear-from-bug-bounties-3a1j"&gt;How to Earn $10k+/Year from Bug Bounties&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-local-llm-chatbot-with-ollama-and-python-53j8"&gt;Build a Local LLM Chatbot with Ollama and Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-technical-course-on-udemy-g41"&gt;How to Build a Profitable Technical Course on Udemy&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-descriptors-the-magic-behind-properties-oph"&gt;Python Descriptors: The Magic Behind Properties&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-smart-expense-tracker-with-ai-categorization-3i5o"&gt;Build a Smart Expense Tracker with AI Categorization&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-pathlib-modern-file-path-handling-guide-2aoa"&gt;Python pathlib: Modern File Path Handling Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-rate-limiter-from-scratch-with-python-36ki"&gt;Build a Rate Limiter from Scratch with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-twitterx-bot-with-python-in-2025-2kb6"&gt;How to Build a Twitter/X Bot with Python in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/understanding-python-gil-what-it-means-for-your-code-1kkh"&gt;Understanding Python GIL: What It Means for Your Code&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-task-queue-system-with-python-and-redis-2kae"&gt;Build a Task Queue System with Python and Redis&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-monetize-your-github-profile-in-2025-26g8"&gt;How to Monetize Your GitHub Profile in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-graphql-api-with-python-and-strawberry-gmc"&gt;Build a GraphQL API with Python and Strawberry&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-match-statement-pattern-matching-deep-dive-49eo"&gt;Python Match Statement: Pattern Matching Deep Dive&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-chrome-devtools-extension-4gf"&gt;How to Build a Chrome DevTools Extension&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-log-viewer-with-python-4d5i"&gt;Build a Real-Time Log Viewer with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-3000month-with-technical-consulting-4oh3"&gt;How to Earn $3000/Month with Technical Consulting&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-database-migration-tool-with-python-41k8"&gt;Build a Database Migration Tool with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-typing-advanced-type-hints-and-generics-3lpe"&gt;Python Typing: Advanced Type Hints and Generics&lt;/a&gt; — 30 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-api-business-fl9"&gt;How to Build a Profitable API Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-web-analytics-dashboard-from-scratch-3l6n"&gt;Build a Web Analytics Dashboard from Scratch&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/asyncio-patterns-producer-consumer-fan-out-pipelines-1nn0"&gt;Asyncio Patterns: Producer-Consumer, Fan-Out, Pipelines&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-sell-python-scripts-on-gumroad-for-passive-income-g94"&gt;How to Sell Python Scripts on Gumroad for Passive Income&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-dns-resolver-with-python-3pif"&gt;Build a DNS Resolver with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-a-profitable-developer-newsletter-1mn2"&gt;How to Create a Profitable Developer Newsletter&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-oauth2-server-with-python-and-fastapi-4b0a"&gt;Build an OAuth2 Server with Python and FastAPI&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-collections-module-beyond-lists-and-dicts-2j90"&gt;Python Collections Module: Beyond Lists and Dicts&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-land-your-first-10k-freelance-contract-8og"&gt;How to Land Your First $10k Freelance Contract&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-github-sponsors-to-fund-your-projects-417b"&gt;How to Use GitHub Sponsors to Fund Your Projects&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-feature-flag-system-with-python-32c1"&gt;Build a Feature Flag System with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-weakrefs-memory-management-you-should-know-2oc2"&gt;Python Weakrefs: Memory Management You Should Know&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-and-sell-developer-templates-1aoc"&gt;How to Create and Sell Developer Templates&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-load-testing-tool-with-python-and-asyncio-2mj"&gt;Build a Load Testing Tool with Python and asyncio&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-1000month-coding-youtube-channel-3054"&gt;How to Build a $1000/Month Coding YouTube Channel&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-static-site-generator-with-python-3fda"&gt;Build a Custom Static Site Generator with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-caching-strategies-from-simple-to-advanced-4p6i"&gt;Python Caching Strategies: From Simple to Advanced&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-secure-your-linux-server-in-10-steps-4l43"&gt;How to Secure Your Linux Server in 10 Steps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-explained-simply-2h55"&gt;Python Decorators Explained Simply&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/i-earned-my-first-50-writing-on-devto-heres-how-1i"&gt;I Earned My First $50 Writing on Dev.to (Here's How)&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-faq-excel-team-considering-python-as-scripting-language-asking-free-preview-20j6"&gt;Python FAQ: Excel team considering Python as scripting language: asking - Free Preview&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-with-developer-affiliate-programs-59l9"&gt;How to Earn with Developer Affiliate Programs&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-distributed-task-scheduler-with-python-27f2"&gt;Build a Distributed Task Scheduler with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-price-your-software-products-for-maximum-revenue-fko"&gt;How to Price Your Software Products for Maximum Revenue&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-collaborative-editor-with-python-3734"&gt;Build a Real-Time Collaborative Editor with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-subprocess-running-external-commands-safely-2d0c"&gt;Python subprocess: Running External Commands Safely&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/deep-dive-django-models-and-querysets-for-python-developers-4aoa"&gt;Deep Dive: Django Models and Querysets for Python Developers&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-telegram-channel-13i7"&gt;How to Build a Profitable Telegram Channel&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-event-driven-architecture-with-python-2lpb"&gt;Build an Event-Driven Architecture with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-secure-your-linux-server-in-10-steps-3o8p"&gt;How to Secure Your Linux Server in 10 Steps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-explained-simply-1hma"&gt;Python Decorators Explained Simply&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-async-web-scraping-scrape-1000-pages-in-seconds-478"&gt;Python Async Web Scraping: Scrape 1000 Pages in Seconds&lt;/a&gt; — 23 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-money-teaching-python-online-1kb0"&gt;How to Make Money Teaching Python Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-dataclass-vs-namedtuple-vs-typeddict-5aia"&gt;Python dataclass vs NamedTuple vs TypedDict&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-coding-bootcamp-content-1dfi"&gt;How to Build a Profitable Coding Bootcamp Content&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-secrets-manager-with-python-and-encryption-h5p"&gt;Build a Secrets Manager with Python and Encryption&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-1000-devto-followers-in-30-days-5a53"&gt;How to Get 1000 Dev.to Followers in 30 Days&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-postgresql-with-asyncpg-async-database-operations-29mj"&gt;Python PostgreSQL with asyncpg: Async Database Operations&lt;/a&gt; — 61 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-blue-green-deployment-system-with-python-4ej5"&gt;Build a Blue-Green Deployment System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-closures-and-nonlocal-advanced-scoping-1ghj"&gt;Python Closures and Nonlocal: Advanced Scoping&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-secure-your-linux-server-in-10-steps-342p"&gt;How to Secure Your Linux Server in 10 Steps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-explained-simply-4jgc"&gt;Python Decorators Explained Simply&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-500month-notion-integration-l0d"&gt;How to Build a $500/Month Notion Integration&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-circuit-breaker-pattern-in-python-pca"&gt;Build a Circuit Breaker Pattern in Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-money-with-python-web-scraping-services-2n80"&gt;How to Make Money with Python Web Scraping Services&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-plugin-system-with-python-importlib-20o8"&gt;Build a Plugin System with Python importlib&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-a-profitable-open-source-business-e4l"&gt;How to Create a Profitable Open Source Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-health-check-endpoint-with-best-practices-3aig"&gt;Build a Health Check Endpoint with Best Practices&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-struct-module-working-with-binary-data-2kd4"&gt;Python struct Module: Working with Binary Data&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-200article-writing-for-developer-blogs-1g0a"&gt;How to Earn $200/Article Writing for Developer Blogs&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/getting-started-with-deepseek-harness-a-practical-guide-2ba5"&gt;Getting Started with deepseek-harness: A Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/getting-started-with-graphify-a-practical-guide-216n"&gt;Getting Started with graphify: A Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-secure-your-linux-server-in-10-steps-p3o"&gt;How to Secure Your Linux Server in 10 Steps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-explained-simply-2aek"&gt;Python Decorators Explained Simply&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-error-handling-10-patterns-every-developer-should-know-eoc"&gt;Python Error Handling: 10 Patterns Every Developer Should Know&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/find-the-best-defi-yields-with-python-a-developers-guide-15h7"&gt;Find the Best DeFi Yields with Python: A Developer's Guide&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-retry-mechanism-with-exponential-backoff-5c53"&gt;Build a Retry Mechanism with Exponential Backoff&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-wordpress-plugin-26c2"&gt;How to Build a Profitable WordPress Plugin&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-prometheus-exporter-with-python-mkk"&gt;Build a Custom Prometheus Exporter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-inspect-module-runtime-introspection-guide-4fhm"&gt;Python inspect Module: Runtime Introspection Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-sell-code-snippets-for-passive-income-i2m"&gt;How to Sell Code Snippets for Passive Income&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-canary-deployment-system-with-python-5e2k"&gt;Build a Canary Deployment System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-2000month-consulting-side-hustle-359b"&gt;How to Build a $2000/Month Consulting Side Hustle&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/getting-started-with-open-design-a-practical-guide-2bk7"&gt;Getting Started with open-design: A Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-secure-your-linux-server-in-10-steps-a6b"&gt;How to Secure Your Linux Server in 10 Steps&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-explained-simply-2egd"&gt;Python Decorators Explained Simply&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-1000month-from-technical-ebooks-47md"&gt;How to Make $1000/Month from Technical Ebooks&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-service-mesh-monitor-with-python-2gbb"&gt;Build a Service Mesh Monitor with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-launch-a-profitable-saas-in-one-weekend-1577"&gt;How to Launch a Profitable SaaS in One Weekend&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-linter-with-python-ast-1ogf"&gt;Build a Custom Linter with Python AST&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-garbage-collection-how-to-avoid-memory-leaks-1107"&gt;Python Garbage Collection: How to Avoid Memory Leaks&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-income-from-stack-overflow-answers-5c2"&gt;How to Build Income from Stack Overflow Answers&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-grpc-service-with-python-836"&gt;Build a gRPC Service with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-monetize-a-developer-discord-server-4l56"&gt;How to Monetize a Developer Discord Server&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-package-manager-with-python-1g9"&gt;Build a Custom Package Manager with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-ctypes-calling-c-libraries-from-python-156d"&gt;Python ctypes: Calling C Libraries from Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-5000month-from-developer-education-47fd"&gt;How to Earn $5000/Month from Developer Education&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-zero-downtime-deployment-pipeline-47p"&gt;Build a Zero-Downtime Deployment Pipeline&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-a-technical-blog-that-makes-money-2214"&gt;How to Create a Technical Blog That Makes Money&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-testing-framework-with-python-3o8a"&gt;Build a Custom Testing Framework with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-signal-handling-graceful-shutdowns-578i"&gt;Python Signal Handling: Graceful Shutdowns&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-api-marketplace-listing-23pl"&gt;How to Build a Profitable API Marketplace Listing&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-request-tracing-system-with-python-p25"&gt;Build a Request Tracing System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-800month-from-github-copilot-tips-content-1hm4"&gt;How to Make $800/Month from GitHub Copilot Tips Content&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-scheduler-with-python-asyncio-4hd9"&gt;Build a Custom Scheduler with Python asyncio&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-mmap-memory-mapped-file-io-for-speed-3mpn"&gt;Python mmap: Memory-Mapped File I/O for Speed&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-sell-automation-scripts-to-small-businesses-3ng9"&gt;How to Sell Automation Scripts to Small Businesses&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-service-discovery-system-with-python-3ncb"&gt;Build a Service Discovery System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-3000month-youtube-automation-business-5949"&gt;How to Build a $3000/Month YouTube Automation Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-etl-pipeline-with-python-102i"&gt;Build a Custom ETL Pipeline with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-threadingevent-and-condition-sync-patterns-j55"&gt;Python threading.Event and Condition: Sync Patterns&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-400month-from-devto-sponsorships-4no9"&gt;How to Make $400/Month from Dev.to Sponsorships&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-chaos-engineering-tool-with-python-1ch1"&gt;Build a Chaos Engineering Tool with Python&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-income-streams-as-a-junior-developer-5gc9"&gt;How to Build Income Streams as a Junior Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-cli-framework-from-scratch-3bpn"&gt;Build a Custom CLI Framework from Scratch&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-selectors-efficient-io-multiplexing-345d"&gt;Python selectors: Efficient I/O Multiplexing&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-profitable-coding-challenges-platform-2dba"&gt;How to Create Profitable Coding Challenges Platform&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-configuration-management-system-with-python-33j3"&gt;Build a Configuration Management System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-1500month-from-technical-reviews-10io"&gt;How to Earn $1500/Month from Technical Reviews&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-dead-letter-queue-system-with-python-4ce0"&gt;Build a Dead Letter Queue System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-abc-to-protocol-evolution-of-type-checking-57b5"&gt;Python ABC to Protocol: Evolution of Type Checking&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-code-review-service-2238"&gt;How to Build a Profitable Code Review Service&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-load-balancer-with-python-3d44"&gt;Build a Custom Load Balancer with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-money-with-ai-generated-technical-content-3of3"&gt;How to Make Money with AI-Generated Technical Content&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-database-connection-pool-with-python-flc"&gt;Build a Database Connection Pool with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-contextvars-task-local-storage-explained-1kb5"&gt;Python contextvars: Task-Local Storage Explained&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-1000month-slack-app-business-369l"&gt;How to Build a $1000/Month Slack App Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-pubsub-system-with-python-and-redis-48d8"&gt;Build a Pub/Sub System with Python and Redis&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-paid-for-open-source-contributions-44pj"&gt;How to Get Paid for Open Source Contributions&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-web-framework-in-200-lines-of-python-4hil"&gt;Build a Custom Web Framework in 200 Lines of Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-heapq-priority-queues-and-top-k-problems-2e48"&gt;Python heapq: Priority Queues and Top-K Problems&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-developer-tools-business-28en"&gt;How to Build a Developer Tools Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-distributed-lock-with-redis-and-python-4118"&gt;Build a Distributed Lock with Redis and Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-600month-with-technical-ghostwriting-2li0"&gt;How to Make $600/Month with Technical Ghostwriting&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-dependency-injection-container-1edf"&gt;Build a Custom Dependency Injection Container&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-bisect-efficient-sorted-list-operations-25j0"&gt;Python bisect: Efficient Sorted List Operations&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-zapier-alternative-3non"&gt;How to Build a Profitable Zapier Alternative&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-websocket-chat-server-from-scratch-2561"&gt;Build a WebSocket Chat Server from Scratch&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-monetize-technical-documentation-writing-24bc"&gt;How to Monetize Technical Documentation Writing&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-object-storage-system-with-python-10nh"&gt;Build a Custom Object Storage System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-array-vs-list-when-to-use-each-329d"&gt;Python array vs list: When to Use Each&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-2000month-email-course-business-263j"&gt;How to Build a $2000/Month Email Course Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-data-streaming-pipeline-4ap5"&gt;Build a Real-Time Data Streaming Pipeline&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-profitable-open-source-plugins-3c1k"&gt;How to Create Profitable Open Source Plugins&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-http-server-with-python-asyncio-23lh"&gt;Build a Custom HTTP Server with Python asyncio&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-lrucache-and-other-caching-decorators-3e09"&gt;Python lru_cache and Other Caching Decorators&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-developer-job-board-that-earns-money-2el1"&gt;How to Build a Developer Job Board That Earns Money&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-30&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-log-aggregation-system-with-python-2ah6"&gt;Build a Log Aggregation System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-1000month-from-code-mentoring-1gh4"&gt;How to Make $1000/Month from Code Mentoring&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-api-gateway-with-fastapi-44gn"&gt;Build a Custom API Gateway with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-shelve-and-dbm-simple-persistent-storage-4poj"&gt;Python shelve and dbm: Simple Persistent Storage&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-github-actions-marketplace-1mhl"&gt;How to Build a Profitable GitHub Actions Marketplace&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-cqrs-architecture-with-python-18p5"&gt;Build a CQRS Architecture with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-4000month-as-a-part-time-cto-5e8i"&gt;How to Earn $4000/Month as a Part-Time CTO&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-reverse-proxy-with-python-25oa"&gt;Build a Custom Reverse Proxy with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-operator-module-functional-programming-tools-25dn"&gt;Python operator Module: Functional Programming Tools&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-saas-mvp-in-one-week-with-python-4g1j"&gt;How to Build a SaaS MVP in One Week with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-message-queue-with-python-o25"&gt;Build a Custom Message Queue with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-monetize-your-coding-live-streams-5i9"&gt;How to Monetize Your Coding Live Streams&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-distributed-cache-with-python-3n97"&gt;Build a Distributed Cache with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-textwrap-and-string-formatting-deep-dive-31o9"&gt;Python textwrap and string Formatting Deep Dive&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-500month-vs-code-extension-2bl3"&gt;How to Build a $500/Month VS Code Extension&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-workflow-engine-with-python-13ib"&gt;Build a Custom Workflow Engine with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-from-technical-podcast-sponsorships-19bm"&gt;How to Earn from Technical Podcast Sponsorships&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-anomaly-detection-system-1d82"&gt;Build a Real-Time Anomaly Detection System&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-dataclassesfield-advanced-configuration-5b6m"&gt;Python dataclasses.field: Advanced Configuration&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-api-documentation-service-2hc2"&gt;How to Build a Profitable API Documentation Service&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-python-repl-with-code-completion-1eni"&gt;Build a Custom Python REPL with Code Completion&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-750month-from-developer-sponsorships-kmj"&gt;How to Make $750/Month from Developer Sponsorships&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-saga-pattern-implementation-in-python-3f56"&gt;Build a Saga Pattern Implementation in Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-os-and-shutil-file-operations-masterclass-4o0d"&gt;Python os and shutil: File Operations Masterclass&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-1500month-technical-writing-agency-5bo3"&gt;How to Build a $1500/Month Technical Writing Agency&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-metrics-collection-system-1feo"&gt;Build a Custom Metrics Collection System&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-profitable-developer-cheat-sheets-497c"&gt;How to Create Profitable Developer Cheat Sheets&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-zero-knowledge-proof-demo-with-python-m8"&gt;Build a Zero-Knowledge Proof Demo with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-copy-shallow-vs-deep-copy-explained-1o48"&gt;Python copy: Shallow vs Deep Copy Explained&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-2500month-devops-consulting-practice-5f74"&gt;How to Build a $2500/Month DevOps Consulting Practice&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-ab-testing-framework-54l2"&gt;Build a Custom A/B Testing Framework&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-sell-python-automation-to-non-tech-companies-1n0n"&gt;How to Sell Python Automation to Non-Tech Companies&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-distributed-rate-limiter-with-redis-2e9c"&gt;Build a Distributed Rate Limiter with Redis&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-enumflag-bitwise-operations-made-easy-3oig"&gt;Python enum.Flag: Bitwise Operations Made Easy&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-saas-with-no-frontend-308p"&gt;How to Build a Profitable SaaS with No Frontend&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-object-relational-mapper-2ikn"&gt;Build a Custom Object Relational Mapper&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-2000month-from-developer-workshops-1egp"&gt;How to Earn $2000/Month from Developer Workshops&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-file-watcher-and-auto-deployer-with-python-359h"&gt;Build a File Watcher and Auto-Deployer with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-typingprotocol-structural-subtyping-guide-23kn"&gt;Python typing.Protocol: Structural Subtyping Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-a-1000month-technical-podcast-2cec"&gt;How to Create a $1000/Month Technical Podcast&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-paid-200hour-for-python-consulting-1gp2"&gt;How to Get Paid $200/Hour for Python Consulting&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-multi-tenant-saas-architecture-in-python-oi2"&gt;Build a Multi-Tenant SaaS Architecture in Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-zip-map-filter-functional-patterns-guide-4fam"&gt;Python zip, map, filter: Functional Patterns Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-developer-community-that-generates-revenue-3j17"&gt;How to Build a Developer Community That Generates Revenue&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-code-formatter-with-python-e1a"&gt;Build a Custom Code Formatter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-3000month-from-ai-training-data-3aap"&gt;How to Make $3000/Month from AI Training Data&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-self-healing-system-with-python-2j8f"&gt;Build a Self-Healing System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-queue-module-thread-safe-data-structures-al5"&gt;Python queue Module: Thread-Safe Data Structures&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-browser-extension-business-5bcb"&gt;How to Build a Profitable Browser Extension Business&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-log-parser-and-analyzer-2253"&gt;Build a Custom Log Parser and Analyzer&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-1000week-from-technical-interviews-prep-1oea"&gt;How to Earn $1000/Week from Technical Interviews Prep&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-dashboard-with-server-sent-events-ph3"&gt;Build a Real-Time Dashboard with Server-Sent Events&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-secrets-module-secure-random-generation-30hf"&gt;Python secrets Module: Secure Random Generation&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-4000month-saas-as-a-solo-developer-27d9"&gt;How to Build a $4000/Month SaaS as a Solo Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-middleware-system-with-python-kjo"&gt;Build a Custom Middleware System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-monetize-open-source-with-dual-licensing-1ca4"&gt;How to Monetize Open Source with Dual Licensing&lt;/a&gt; — 1 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-time-series-database-with-python-1l83"&gt;Build a Time-Series Database with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-importlib-dynamic-module-loading-50g6"&gt;Python importlib: Dynamic Module Loading&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-1000month-no-code-automation-agency-4nb6"&gt;How to Build a $1000/Month No-Code Automation Agency&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-serialization-format-with-python-dle"&gt;Build a Custom Serialization Format with Python&lt;/a&gt; — 20 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-500month-from-github-gists-59m4"&gt;How to Earn $500/Month from GitHub Gists&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-fault-tolerant-worker-pool-with-python-3glb"&gt;Build a Fault-Tolerant Worker Pool with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-functoolsreduce-when-and-how-to-use-it-41b1"&gt;Python functools.reduce: When and How to Use It&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-2000month-ai-consulting-business-141e"&gt;How to Build a $2000/Month AI Consulting Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-pubsub-event-bus-in-python-3flb"&gt;Build a Custom Pub/Sub Event Bus in Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-profitable-developer-toolkits-3b0n"&gt;How to Create Profitable Developer Toolkits&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-backpressure-system-for-python-microservices-ojf"&gt;Build a Backpressure System for Python Microservices&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-hashlib-secure-hashing-practical-guide-416b"&gt;Python hashlib: Secure Hashing Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-1500month-indie-hacker-income-4pbi"&gt;How to Build a $1500/Month Indie Hacker Income&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-sell-data-visualizations-as-a-service-k6f"&gt;How to Sell Data Visualizations as a Service&lt;/a&gt; — 2 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-bidding-system-with-python-nib"&gt;Build a Real-Time Bidding System with Python&lt;/a&gt; — 3 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-itertoolschain-and-combinations-deep-dive-1nac"&gt;Python itertools.chain and combinations Deep Dive&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-5000month-developer-education-platform-4dhi"&gt;How to Build a $5000/Month Developer Education Platform&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/10-python-one-liners-that-will-blow-your-mind-4cjj"&gt;10 Python One-Liners That Will Blow Your Mind&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-500month-with-python-automation-328d"&gt;How to Make $500/Month with Python Automation&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-complete-guide-to-crypto-airdrops-in-2025-5efp"&gt;The Complete Guide to Crypto Airdrops in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-web-scraper-in-10-minutes-complete-tutorial-19l4"&gt;Build a Web Scraper in 10 Minutes - Complete Tutorial&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/docker-for-beginners-a-complete-practical-guide-39l8"&gt;Docker for Beginners: A Complete Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-rent-out-your-gpu-and-earn-passive-income-2khc"&gt;How to Rent Out Your GPU and Earn Passive Income&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-ultimate-guide-to-making-money-with-open-source-160i"&gt;The Ultimate Guide to Making Money with Open Source&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-developers-guide-to-passive-income-in-2025-8l5"&gt;The Developer's Guide to Passive Income in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-and-sell-a-saas-product-as-a-solo-developer-4a0n"&gt;How to Build and Sell a SaaS Product as a Solo Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/web3-for-python-developers-a-beginners-complete-guide-2f5n"&gt;Web3 for Python Developers: A Beginner's Complete Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/mastering-async-python-complete-guide-with-examples-3lbp"&gt;Mastering Async Python: Complete Guide with Examples&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-paid-100hour-as-a-freelance-developer-20m8"&gt;How to Get Paid $100+/Hour as a Freelance Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-price-monitoring-bot-with-python-and-telegram-4id3"&gt;Build a Price Monitoring Bot with Python and Telegram&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-turn-your-python-skills-into-a-5000month-business-18h1"&gt;How to Turn Your Python Skills Into a $5000/Month Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/sqlite-vs-postgresql-choosing-the-right-database-ki"&gt;SQLite vs PostgreSQL: Choosing the Right Database&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/github-actions-automate-your-workflow-like-a-pro-1go2"&gt;GitHub Actions: Automate Your Workflow Like a Pro&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-scrape-linkedin-data-legally-and-make-money-1lg0"&gt;How to Scrape LinkedIn Data Legally (and Make Money)&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-your-own-chatgpt-with-free-apis-in-2025-3536"&gt;Build Your Own ChatGPT with Free APIs in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/kubernetes-for-beginners-deploy-your-first-app-ic0"&gt;Kubernetes for Beginners: Deploy Your First App&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-your-first-freelance-client-on-upwork-4nl8"&gt;How to Get Your First Freelance Client on Upwork&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-type-hints-write-better-code-with-examples-3m2i"&gt;Python Type Hints: Write Better Code with Examples&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/monetize-your-blog-with-ai-a-developers-guide-31cj"&gt;Monetize Your Blog with AI: A Developer's Guide&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-chrome-extension-that-makes-money-102c"&gt;How to Build a Chrome Extension That Makes Money&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/deploy-python-apps-for-free-complete-2025-guide-g6c"&gt;Deploy Python Apps for Free: Complete 2025 Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-price-alert-bot-with-python-3b1i"&gt;Build an Automated Price Alert Bot with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-200day-with-crypto-trading-bots-3m2j"&gt;How to Make $200/Day with Crypto Trading Bots&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/redis-tutorial-speed-up-your-app-10x-with-caching-420a"&gt;Redis Tutorial: Speed Up Your App 10x with Caching&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-find-and-fix-security-vulnerabilities-for-money-140i"&gt;How to Find and Fix Security Vulnerabilities for Money&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-saas-dashboard-with-fastapi-and-react-2c4h"&gt;Build a SaaS Dashboard with FastAPI and React&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/earn-money-testing-websites-and-apps-complete-guide-4egl"&gt;Earn Money Testing Websites and Apps: Complete Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-ai-to-write-code-10x-faster-2d49"&gt;How to Use AI to Write Code 10x Faster&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-complete-guide-to-selling-digital-products-online-177c"&gt;The Complete Guide to Selling Digital Products Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-social-media-and-grow-to-10k-followers-9h9"&gt;How to Automate Social Media and Grow to 10K Followers&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/microservices-with-python-build-scalable-applications-2gpc"&gt;Microservices with Python: Build Scalable Applications&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-decorators-the-complete-guide-with-real-examples-142p"&gt;Python Decorators: The Complete Guide with Real Examples&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-rest-api-with-fastapi-in-30-minutes-56cf"&gt;How to Build a REST API with FastAPI in 30 Minutes&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-1000-with-your-first-github-repository-375m"&gt;How to Earn $1000 with Your First GitHub Repository&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-virtual-environments-a-complete-2025-guide-13e0"&gt;Python Virtual Environments: A Complete 2025 Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-dashboard-with-python-and-websockets-9a5"&gt;Build a Real-Time Dashboard with Python and WebSockets&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-deploy-your-python-app-on-a-5month-server-3nho"&gt;How to Deploy Your Python App on a $5/Month Server&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/nginx-python-the-perfect-production-setup-439h"&gt;Nginx + Python: The Perfect Production Setup&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-start-a-tech-blog-and-make-500month-loo"&gt;How to Start a Tech Blog and Make $500/Month&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/web-scraping-with-playwright-handle-any-website-43oi"&gt;Web Scraping with Playwright: Handle Any Website&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/sell-your-code-how-to-package-and-monetize-python-libraries-i4k"&gt;Sell Your Code: How to Package and Monetize Python Libraries&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-lazy-developers-guide-to-making-money-online-2577"&gt;The Lazy Developer's Guide to Making Money Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-crypto-portfolio-tracker-with-python-1kal"&gt;Build a Crypto Portfolio Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-claude-api-to-build-profitable-ai-products-54b2"&gt;How to Use Claude API to Build Profitable AI Products&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/pydantic-tutorial-write-bulletproof-python-code-1l1f"&gt;Pydantic Tutorial: Write Bulletproof Python Code&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-your-python-code-10x-faster-5278"&gt;How to Make Your Python Code 10x Faster&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-find-remote-python-jobs-that-pay-150k-32d4"&gt;How to Find Remote Python Jobs That Pay $150k+&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/celery-redis-background-tasks-made-simple-5nf"&gt;Celery + Redis: Background Tasks Made Simple&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/the-developers-guide-to-investing-passive-income-2mk6"&gt;The Developer's Guide to Investing Passive Income&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-client-invoicing-with-python-hjo"&gt;How to Automate Client Invoicing with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/sqlalchemy-20-the-modern-way-to-work-with-databases-5gh0"&gt;SQLAlchemy 2.0: The Modern Way to Work with Databases&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-ai-to-generate-passive-income-in-2025-1e82"&gt;How to Use AI to Generate Passive Income in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-testing-write-tests-that-actually-catch-bugs-45d5"&gt;Python Testing: Write Tests That Actually Catch Bugs&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-personal-finance-dashboard-with-python-1k3e"&gt;Build a Personal Finance Dashboard with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-10kmonth-as-an-indie-developer-ljk"&gt;How to Make $10k/Month as an Indie Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-pdf-report-generator-with-python-lao"&gt;Build a PDF Report Generator with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-scale-a-python-app-to-handle-1-million-requests-1hha"&gt;How to Scale a Python App to Handle 1 Million Requests&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-and-sell-notion-templates-for-500month-4ofd"&gt;How to Build and Sell Notion Templates for $500/Month&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-aws-lambda-build-serverless-apps-for-free-28n4"&gt;Python + AWS Lambda: Build Serverless Apps for Free&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-create-and-sell-online-courses-as-a-developer-3le8"&gt;How to Create and Sell Online Courses as a Developer&lt;/a&gt; — 20 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/advanced-python-generators-lazy-evaluation-explained-4k4g"&gt;Advanced Python Generators: Lazy Evaluation Explained&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-paid-for-writing-technical-documentation-1cie"&gt;How to Get Paid for Writing Technical Documentation&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-your-freelance-workflow-with-python-3ba3"&gt;How to Automate Your Freelance Workflow with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-packaging-how-to-publish-your-first-pip-package-21dg"&gt;Python Packaging: How to Publish Your First pip Package&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-niche-website-as-a-developer-2743"&gt;How to Build a Profitable Niche Website as a Developer&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/typescript-for-python-developers-a-practical-guide-1hkg"&gt;TypeScript for Python Developers: A Practical Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-chat-app-with-fastapi-and-websockets-58m6"&gt;Build a Real-Time Chat App with FastAPI and WebSockets&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-cli-tool-with-python-and-click-4ejk"&gt;How to Build a CLI Tool with Python and Click&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/mastering-python-dataclasses-a-complete-guide-3495"&gt;Mastering Python Dataclasses: A Complete Guide&lt;/a&gt; — 12 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-email-notification-system-with-python-2eok"&gt;Build an Email Notification System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-scrape-javascript-heavy-sites-with-playwright-2jac"&gt;How to Scrape JavaScript-Heavy Sites with Playwright&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-context-managers-the-complete-guide-5518"&gt;Python Context Managers: The Complete Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-openai-api-to-build-profitable-apps-i2o"&gt;How to Use OpenAI API to Build Profitable Apps&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/pandas-vs-polars-which-one-should-you-use-in-2025-pgn"&gt;Pandas vs Polars: Which One Should You Use in 2025?&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-url-shortener-with-fastapi-and-redis-3fbe"&gt;Build a URL Shortener with FastAPI and Redis&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-deploy-python-apps-with-docker-compose-2dp4"&gt;How to Deploy Python Apps with Docker Compose&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-logging-best-practices-for-production-apps-4b4c"&gt;Python Logging: Best Practices for Production Apps&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-file-sync-tool-with-python-and-watchdog-5ak1"&gt;Build a File Sync Tool with Python and Watchdog&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-write-clean-python-code-10-principles-gkf"&gt;How to Write Clean Python Code: 10 Principles&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-rest-api-with-django-rest-framework-ndc"&gt;Build a REST API with Django REST Framework&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-multiprocessing-vs-threading-when-to-use-each-21ll"&gt;Python multiprocessing vs threading: When to Use Each&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-web-crawler-with-scrapy-2aof"&gt;How to Build a Web Crawler with Scrapy&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-password-manager-with-python-14ne"&gt;Build a Password Manager with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-anthropic-claude-api-for-automation-4koo"&gt;How to Use Anthropic Claude API for Automation&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-metaclasses-explained-advanced-oop-5gj2"&gt;Python Metaclasses Explained: Advanced OOP&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-simple-search-engine-with-python-3hhc"&gt;Build a Simple Search Engine with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-github-copilot-effectively-as-a-developer-188m"&gt;How to Use GitHub Copilot Effectively as a Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-markdown-to-pdf-converter-with-python-442p"&gt;Build a Markdown-to-PDF Converter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-test-async-python-code-with-pytest-asyncio-l48"&gt;How to Test Async Python Code with pytest-asyncio&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-multi-agent-ai-system-with-langchain-2epk"&gt;Build a Multi-Agent AI System with LangChain&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-protocol-types-duck-typing-done-right-2d11"&gt;Python Protocol Types: Duck Typing Done Right&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-kubernetes-operator-with-python-561i"&gt;Build a Kubernetes Operator with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-saas-with-stripe-and-fastapi-3gip"&gt;How to Build a Profitable SaaS with Stripe and FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/rust-for-python-developers-why-you-should-learn-it-4ep8"&gt;Rust for Python Developers: Why You Should Learn It&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-voice-assistant-with-python-and-whisper-1k8f"&gt;Build a Voice Assistant with Python and Whisper&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-vector-databases-for-ai-applications-l49"&gt;How to Use Vector Databases for AI Applications&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-memory-management-how-it-actually-works-l25"&gt;Python Memory Management: How It Actually Works&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-qr-code-generator-with-python-mij"&gt;Build a QR Code Generator with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-chrome-extension-in-2025-52d1"&gt;How to Build a Profitable Chrome Extension in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-data-pipeline-with-apache-airflow-593l"&gt;Build a Data Pipeline with Apache Airflow&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-2000month-as-a-technical-writer-kpd"&gt;How to Make $2000/Month as a Technical Writer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-browser-automation-tool-with-selenium-482g"&gt;Build a Browser Automation Tool with Selenium&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-abstract-base-classes-design-patterns-2keb"&gt;Python Abstract Base Classes: Design Patterns&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-finance-tracker-app-with-python-and-sqlite-1p8g"&gt;Build a Finance Tracker App with Python and SQLite&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-set-up-a-professional-python-development-environment-53md"&gt;How to Set Up a Professional Python Development Environment&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-and-sell-coding-challenges-online-5c05"&gt;How to Build and Sell Coding Challenges Online&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-slots-optimize-your-classes-for-performance-4lol"&gt;Python Slots: Optimize Your Classes for Performance&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-slots-optimize-your-classes-for-performance-4lol"&gt;Python Slots: Optimize Your Classes for Performance&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-webhook-receiver-with-fastapi-4k51"&gt;Build a Webhook Receiver with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-ai-chatbot-for-businesses-5de4"&gt;How to Build a Profitable AI Chatbot for Businesses&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-system-monitor-dashboard-with-python-34j7"&gt;Build a System Monitor Dashboard with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-cloudflare-workers-for-free-hosting-26e0"&gt;How to Use Cloudflare Workers for Free Hosting&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-string-methods-youre-probably-not-using-3bo7"&gt;Python String Methods You're Probably Not Using&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-script-to-monitor-crypto-funding-rates-and-spot-arbitrage-2eb"&gt;Python Script to Monitor Crypto Funding Rates and Spot Arbitrage&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-notification-system-with-server-sent-events-g9k"&gt;Build a Real-Time Notification System with Server-Sent Events&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-passive-income-blog-as-a-developer-gmh"&gt;How to Build a Passive Income Blog as a Developer&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-llms-for-code-review-automation-5d7c"&gt;How to Use LLMs for Code Review Automation&lt;/a&gt; — 11 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-walrus-operator-practical-use-cases-13dc"&gt;Python walrus operator (:=): Practical Use Cases&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-micro-saas-in-48-hours-2c75"&gt;How to Build a Micro-SaaS in 48 Hours&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/lessons-from-ask-hn-passive-income-ideas-for-solo-develop-57d9"&gt;Lessons from: Ask HN: Passive income ideas for solo develop&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-earn-passive-income-with-open-source-software-42h"&gt;How to Earn Passive Income with Open Source Software&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-performance-profiling-find-and-fix-bottlenecks-1b5f"&gt;Python Performance Profiling: Find and Fix Bottlenecks&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-currency-converter-with-python-2o6l"&gt;Build a Real-Time Currency Converter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-shopify-app-with-python-2j8b"&gt;How to Build a Shopify App with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-text-summarizer-with-hugging-face-transformers-171o"&gt;Build a Text Summarizer with Hugging Face Transformers&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-use-terraform-with-python-for-infrastructure-k37"&gt;How to Use Terraform with Python for Infrastructure&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-code-complexity-analyzer-with-python-20i5"&gt;Build a Code Complexity Analyzer with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-prompt-engineering-service-3gkh"&gt;How to Build a Profitable Prompt Engineering Service&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-design-patterns-factory-singleton-observer-13p9"&gt;Python Design Patterns: Factory, Singleton, Observer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-500week-testing-apps-and-websites-56c0"&gt;How to Make $500/Week Testing Apps and Websites&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-make-500week-testing-apps-and-websites-56c0"&gt;How to Make $500/Week Testing Apps and Websites&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-crypto-dashboard-track-btc-79759-and-eth-live-3i23"&gt;Python Crypto Dashboard: Track BTC ($79,759) and ETH Live&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-crypto-dashboard-track-btc-79759-and-eth-live-3i23"&gt;Python Crypto Dashboard: Track BTC ($79,759) and ETH Live&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-machine-learning-model-api-with-fastapi-4g24"&gt;Build a Machine Learning Model API with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-machine-learning-model-api-with-fastapi-4g24"&gt;Build a Machine Learning Model API with FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-discord-community-3io7"&gt;How to Build a Profitable Discord Community&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-enum-when-and-how-to-use-it-5558"&gt;Python Enum: When and How to Use It&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-get-hired-as-a-remote-python-developer-22eo"&gt;How to Get Hired as a Remote Python Developer&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-pdf-text-extractor-with-python-3mei"&gt;Build a PDF Text Extractor with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-profitable-web3-dapps-in-2025-25np"&gt;How to Build Profitable Web3 dApps in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-concurrency-asyncio-threading-multiprocessing-1fak"&gt;Python Concurrency: asyncio, threading, multiprocessing&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-automation-scripts-pack-10-ready-to-use-tools-free-preview-2fjm"&gt;Python Automation Scripts Pack (10 Ready-to-Use Tools) - Free Preview&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-smart-home-controller-with-python-and-mqtt-2gh"&gt;Build a Smart Home Controller with Python and MQTT&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-saas-landing-page-that-converts-26fo"&gt;How to Build a SaaS Landing Page That Converts&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/deep-dive-django-models-and-querysets-for-python-developers-pc6"&gt;Deep Dive: Django Models and Querysets for Python Developers&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-async-web-scraping-scrape-1000-pages-in-seconds-51am"&gt;Python Async Web Scraping: Scrape 1000 Pages in Seconds&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-profitable-mobile-apps-as-a-python-dev-4ln5"&gt;How to Build Profitable Mobile Apps as a Python Dev&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-regular-expressions-the-definitive-guide-fb3"&gt;Python Regular Expressions: The Definitive Guide&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-network-scanner-with-python-and-scapy-22pe"&gt;Build a Network Scanner with Python and Scapy&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-build-a-profitable-ai-writing-assistant-1cag"&gt;How to Build a Profitable AI Writing Assistant&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/async-python-asyncio-await-and-concurrent-programming-explained-1210"&gt;Async Python: asyncio, await, and Concurrent Programming Explained&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-postgresql-with-asyncpg-async-database-operations-fn7"&gt;Python PostgreSQL with asyncpg: Async Database Operations&lt;/a&gt; — 2 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-time-series-forecasting-app-with-python-32eg"&gt;Build a Time Series Forecasting App with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/how-to-automate-linkedin-outreach-ethically-with-python-2ai1"&gt;How to Automate LinkedIn Outreach (Ethically) with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-leaderboard-with-redis-and-fastapi-32p0"&gt;Build a Real-Time Leaderboard with Redis and FastAPI&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-functional-programming-functools-deep-dive-35hd"&gt;Python Functional Programming: functools Deep Dive&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ₿ Python Crypto Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-crypto-trading-dashboard-1i69"&gt;Build a Real-Time Crypto Trading Dashboard&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/websocket-trading-bot-monitor-markets-247-3hkk"&gt;Websocket Trading Bot: Monitor Markets 24/7&lt;/a&gt; — 3 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-real-time-crypto-trading-dashboard-4pp"&gt;Build a Real-Time Crypto Trading Dashboard&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/websocket-trading-bot-monitor-markets-247-ah9"&gt;Websocket Trading Bot: Monitor Markets 24/7&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🤖 Python Automation Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-discord-bot-that-monetizes-your-community-31d9"&gt;Build a Discord Bot That Monetizes Your Community&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-25&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-email-campaign-with-python-2eag"&gt;Build an Automated Email Campaign with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-news-aggregator-bot-that-sends-you-money-alerts-48bn"&gt;Build a News Aggregator Bot That Sends You Money Alerts&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-job-board-scraper-to-find-remote-opportunities-1ndl"&gt;Build a Job Board Scraper to Find Remote Opportunities&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-whatsapp-bot-for-your-business-4o7m"&gt;Build a WhatsApp Bot for Your Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/monitor-your-server-health-with-python-and-telegram-18aj"&gt;Monitor Your Server Health with Python and Telegram&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-content-scheduler-for-social-media-3i0e"&gt;Build a Content Scheduler for Social Media&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/automate-your-taxes-python-scripts-for-freelancers-3khc"&gt;Automate Your Taxes: Python Scripts for Freelancers&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-github-actions-bot-that-pays-you-416l"&gt;Build a GitHub Actions Bot That Pays You&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-slack-bot-that-automates-your-workflow-22i0"&gt;Build a Slack Bot That Automates Your Workflow&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-26&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-stock-price-alert-bot-with-python-4i0l"&gt;Build a Stock Price Alert Bot with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-newsletter-with-python-2ck7"&gt;Build an Automated Newsletter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-social-media-monitor-with-python-14ah"&gt;Build a Social Media Monitor with Python&lt;/a&gt; — 10 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-kubernetes-pod-autoscaler-with-python-11p"&gt;Build a Kubernetes Pod Autoscaler with Python&lt;/a&gt; — 20 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-subscription-box-price-tracker-with-python-126"&gt;Build a Subscription Box Price Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-ai-powered-resume-screener-with-python-53l7"&gt;Build an AI-Powered Resume Screener with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-27&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-website-health-checker-with-python-4j3m"&gt;Build a Website Health Checker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-competitor-price-tracker-with-python-2o4h"&gt;Build a Competitor Price Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-social-media-content-calendar-3773"&gt;Build an Automated Social Media Content Calendar&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-dependency-vulnerability-scanner-with-python-44l6"&gt;Build a Dependency Vulnerability Scanner with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-28&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-container-orchestrator-from-scratch-in-python-2i5o"&gt;Build a Container Orchestrator from Scratch in Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-git-hook-system-with-python-38eo"&gt;Build a Git Hook System with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/i-built-an-ai-bot-that-makes-money-while-i-sleep-ne0"&gt;I Built an AI Bot That Makes Money While I Sleep&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/free-ai-tools-that-replace-1000month-subscriptions-in-2025-2pmi"&gt;Free AI Tools That Replace $1000/Month Subscriptions in 2025&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/automate-everything-python-scripts-that-save-hours-daily-3c19"&gt;Automate Everything: Python Scripts That Save Hours Daily&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-telegram-bot-that-earns-money-automatically-5d99"&gt;Build a Telegram Bot That Earns Money Automatically&lt;/a&gt; — 10 reads &lt;em&gt;2026-09-03&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/linux-command-line-tricks-every-developer-must-know-3doa"&gt;Linux Command Line Tricks Every Developer Must Know&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-discord-bot-that-monetizes-your-community-156d"&gt;Build a Discord Bot That Monetizes Your Community&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-04&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-email-campaign-with-python-f34"&gt;Build an Automated Email Campaign with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-news-aggregator-bot-that-sends-you-money-alerts-ea8"&gt;Build a News Aggregator Bot That Sends You Money Alerts&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-job-board-scraper-to-find-remote-opportunities-351e"&gt;Build a Job Board Scraper to Find Remote Opportunities&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-whatsapp-bot-for-your-business-44pe"&gt;Build a WhatsApp Bot for Your Business&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/monitor-your-server-health-with-python-and-telegram-41cd"&gt;Monitor Your Server Health with Python and Telegram&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-content-scheduler-for-social-media-2m67"&gt;Build a Content Scheduler for Social Media&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/automate-your-taxes-python-scripts-for-freelancers-3flm"&gt;Automate Your Taxes: Python Scripts for Freelancers&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-github-actions-bot-that-pays-you-3h07"&gt;Build a GitHub Actions Bot That Pays You&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-slack-bot-that-automates-your-workflow-36o7"&gt;Build a Slack Bot That Automates Your Workflow&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-05&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-stock-price-alert-bot-with-python-44o8"&gt;Build a Stock Price Alert Bot with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-automated-newsletter-with-python-1mo"&gt;Build an Automated Newsletter with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-social-media-monitor-with-python-afk"&gt;Build a Social Media Monitor with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-kubernetes-pod-autoscaler-with-python-4210"&gt;Build a Kubernetes Pod Autoscaler with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-subscription-box-price-tracker-with-python-3h8l"&gt;Build a Subscription Box Price Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-06&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-an-ai-powered-resume-screener-with-python-g68"&gt;Build an AI-Powered Resume Screener with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-website-health-checker-with-python-cd9"&gt;Build a Website Health Checker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-website-health-checker-with-python-cd9"&gt;Build a Website Health Checker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-competitor-price-tracker-with-python-22oo"&gt;Build a Competitor Price Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-competitor-price-tracker-with-python-4j74"&gt;Build a Competitor Price Tracker with Python&lt;/a&gt; — 0 reads &lt;em&gt;2026-09-07&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ⚡ Python Advanced Series
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/my-take-on-your-ai-remembers-everything-and-trusts-all-o-lkh"&gt;My Take on: Your AI Remembers Everything and Trusts All o&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-orm-with-python-metaclasses-908"&gt;Build a Custom ORM with Python Metaclasses&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/python-ast-module-analyze-and-transform-code-3hm6"&gt;Python ast Module: Analyze and Transform Code&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-29&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-profiler-with-python-syssettrace-5mf"&gt;Build a Custom Profiler with Python sys.settrace&lt;/a&gt; — 0 reads &lt;em&gt;2026-08-31&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/qingluan/build-a-custom-python-debugger-hm7"&gt;Build a Custom Python Debugger&lt;/a&gt; — 20 reads &lt;em&gt;2026-09-01&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 How to Use This Learning Path
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick a series&lt;/strong&gt; that matches your current level or interest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow the articles in order&lt;/strong&gt; — each builds on the previous.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practice as you go&lt;/strong&gt; — run the code examples in your local environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow me&lt;/strong&gt; to get notified when new articles are added to each series.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Found this helpful? Drop a ❤️ and share with a fellow developer!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Python Itertools: 10 Tricks for Cleaner Code</title>
      <dc:creator>qing</dc:creator>
      <pubDate>Mon, 07 Sep 2026 16:01:52 +0000</pubDate>
      <link>https://dev.to/qingluan/python-itertools-10-tricks-for-cleaner-code-28n4</link>
      <guid>https://dev.to/qingluan/python-itertools-10-tricks-for-cleaner-code-28n4</guid>
      <description>&lt;h1&gt;
  
  
  Python Itertools: 10 Tricks for Cleaner Code
&lt;/h1&gt;

&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;p&gt;tags: python, programming, tips, tutorial&lt;/p&gt;




&lt;h1&gt;
  
  
  Python Itertools: 10 Tricks for Cleaner Code
&lt;/h1&gt;

&lt;p&gt;You’ve probably written a loop that felt like it was dragging your code into the mud. Maybe you concatenated lists with &lt;code&gt;+&lt;/code&gt;, zipped mismatched iterables and lost data, or manually tracked indices to count items. Before you add another &lt;code&gt;for&lt;/code&gt; loop to your script, consider this: Python’s &lt;code&gt;itertools&lt;/code&gt; module is a hidden superpower that can turn messy iteration logic into elegant, memory-efficient, and readable one-liners.&lt;/p&gt;

&lt;p&gt;Mastering &lt;code&gt;itertools&lt;/code&gt; doesn’t just make your code cleaner—it makes it faster, especially when working with large datasets or infinite sequences. Let’s dive into 10 practical tricks you can use &lt;strong&gt;today&lt;/strong&gt; to write better Python code.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Chain Multiple Lists Without Copying Memory
&lt;/h2&gt;

&lt;p&gt;When you need to merge several lists, the &lt;code&gt;+&lt;/code&gt; operator creates a new list in memory. That’s wasteful for large datasets. Instead, use &lt;code&gt;itertools.chain()&lt;/code&gt;, which yields items lazily—only when you need them.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;chain&lt;/span&gt;

&lt;span class="n"&gt;list1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;list2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&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;span class="n"&gt;list3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;merged&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;list3&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;merged&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="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 1, 2, 3, 4, 5, 6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach is &lt;strong&gt;memory-efficient&lt;/strong&gt; and ideal for streaming or processing huge collections [6].&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Zip Uneven Lists Without Losing Data
&lt;/h2&gt;

&lt;p&gt;The built-in &lt;code&gt;zip()&lt;/code&gt; stops when the shortest iterable ends. But what if you want to keep going and fill in missing values? Use &lt;code&gt;itertools.zip_longest()&lt;/code&gt; with a &lt;code&gt;fillvalue&lt;/code&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;zip_longest&lt;/span&gt;

&lt;span class="n"&gt;names&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;Alice&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;Bob&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;103&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;zip_longest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fillvalue&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Unknown&lt;/span&gt;&lt;span class="sh"&gt;"&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;name&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="nb"&gt;id&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Alice: 101
Bob: 102
Unknown: 103
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is perfect for aligning mismatched data streams [3].&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Generate Infinite Counters Gracefully
&lt;/h2&gt;

&lt;p&gt;Need a counter that never stops? &lt;code&gt;itertools.count()&lt;/code&gt; gives you an infinite iterator starting from a specified value. Always pair it with a &lt;code&gt;break&lt;/code&gt; condition to avoid infinite loops.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;

&lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;101&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;counter&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;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;105&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&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;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 101, 102, 103, 104, 105
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful for generating IDs, timestamps, or test cases [1].&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Slice Iterables Without Indexing
&lt;/h2&gt;

&lt;p&gt;Forget &lt;code&gt;list[i:j]&lt;/code&gt; when working with large or streaming iterables. &lt;code&gt;itertools.islice()&lt;/code&gt; lets you slice efficiently without creating intermediate lists.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;islice&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;first_five&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;islice&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="mi"&gt;5&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="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;first_five&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# [0, 1, 2, 3, 4]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially helpful when processing files or network streams [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Drop Items Until a Condition Is Met
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;itertools.dropwhile()&lt;/code&gt; skips elements until a condition becomes false, then yields the rest. Contrast this with &lt;code&gt;filter()&lt;/code&gt;, which removes items based on a condition.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dropwhile&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&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;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&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;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dropwhile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&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="n"&gt;data&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="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# [1, 2, 3, 0, 4]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great for cleaning up leading zeros or whitespace [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Take Exactly N Items from an Iterator
&lt;/h2&gt;

&lt;p&gt;If you only need the first few items from a large or infinite iterator, use &lt;code&gt;itertools.take()&lt;/code&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;islice&lt;/span&gt;

&lt;span class="n"&gt;infinite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;first_three&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;islice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&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="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;first_three&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# [1, 2, 3]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This avoids consuming the entire iterator and keeps memory usage low [1].&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Group Consecutive Items by Key
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;itertools.groupby()&lt;/code&gt; groups consecutive elements that share the same key. It’s perfect for analyzing logs, time-series data, or sorted lists.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;groupby&lt;/span&gt;

&lt;span class="n"&gt;data&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;A&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;A&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;B&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;B&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;B&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;A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;grouped&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;groupby&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="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;grouped&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="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&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="n"&gt;A&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;A&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;A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;B&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;B&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;B&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;B&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;A&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;p&gt;Note: &lt;code&gt;groupby&lt;/code&gt; only works on &lt;strong&gt;consecutive&lt;/strong&gt; items—sort first if needed [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Generate All Combinations Efficiently
&lt;/h2&gt;

&lt;p&gt;Need all possible pairs, triplets, or subsets? &lt;code&gt;itertools.combinations()&lt;/code&gt; generates them without nested loops.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;combinations&lt;/span&gt;

&lt;span class="n"&gt;letters&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;a&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;b&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;c&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;pairs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;combinations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;letters&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&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="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pairs&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# [('a', 'b'), ('a', 'c'), ('b', 'c')]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is cleaner and faster than manual loop logic [1].&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Repeat an Item or Sequence
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;itertools.repeat()&lt;/code&gt; lets you repeat a value or iterable a fixed number of times—or infinitely.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;repeat&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Python&lt;/span&gt;&lt;span class="sh"&gt;"&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;i&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;val&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0: Python
1: Python
2: Python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful for padding, default values, or test data generation [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Filter with &lt;code&gt;filterfalse()&lt;/code&gt; Instead of &lt;code&gt;filter()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;While &lt;code&gt;filter()&lt;/code&gt; keeps items that match a condition, &lt;code&gt;itertools.filterfalse()&lt;/code&gt; keeps items that &lt;strong&gt;don’t&lt;/strong&gt;. It’s the logical inverse and often more intuitive.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;itertools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;filterfalse&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&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;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&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;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;non_zeros&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;filterfalse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&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="n"&gt;data&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="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;non_zeros&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# [1, 2, 3]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This reduces mental overhead when excluding values [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  Put It All Together
&lt;/h2&gt;

&lt;p&gt;These tricks aren’t just about writing fewer lines—they’re about writing &lt;strong&gt;better&lt;/strong&gt; code. Cleaner logic, lower memory usage, and better performance are the real wins.&lt;/p&gt;

&lt;p&gt;Start small: replace one &lt;code&gt;for&lt;/code&gt; loop with &lt;code&gt;chain()&lt;/code&gt;, or swap &lt;code&gt;zip()&lt;/code&gt; for &lt;code&gt;zip_longest()&lt;/code&gt;. As you grow comfortable, you’ll find &lt;code&gt;itertools&lt;/code&gt; is your go-to for any iteration challenge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s your favorite &lt;code&gt;itertools&lt;/code&gt; function?&lt;/strong&gt; Share it in the comments below, and try combining two of these tricks in your next script. Let’s make Python iteration elegant again.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider &lt;a href="https://ko-fi.com/qingluan" rel="noopener noreferrer"&gt;buying me a coffee ☕&lt;/a&gt; — it keeps these articles coming!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Also check out my AI tools collection: &lt;a href="https://ai.xn--4ds5cia.xn--rhqv96g/" rel="noopener noreferrer"&gt;AI 次元世界&lt;/a&gt; — free AI tools for developers.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;喜欢这篇文章？关注获取更多Python自动化内容！&lt;/p&gt;




&lt;p&gt;&lt;em&gt;💡 Related: **Python Automation Scripts Pack (10 Ready-to-Use Tools)&lt;/em&gt;* — $14.99*&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>tips</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
