<?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: Ankan Mahapatra</title>
    <description>The latest articles on DEV Community by Ankan Mahapatra (@ankan2526).</description>
    <link>https://dev.to/ankan2526</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%2F727129%2F8f7de4a5-4e0e-4cd5-b046-059858cd28df.png</url>
      <title>DEV Community: Ankan Mahapatra</title>
      <link>https://dev.to/ankan2526</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ankan2526"/>
    <language>en</language>
    <item>
      <title>Friend.py — A Beginner’s Python Learning Buddy</title>
      <dc:creator>Ankan Mahapatra</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:13:29 +0000</pubDate>
      <link>https://dev.to/ankan2526/friendpy-a-beginners-python-learning-buddy-5d1f</link>
      <guid>https://dev.to/ankan2526/friendpy-a-beginners-python-learning-buddy-5d1f</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built Friend.py, a beginner-friendly Python learning app for a friend who is just starting to learn programming.&lt;/p&gt;

&lt;p&gt;It brings everything a beginner needs into one place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a structured Python curriculum&lt;/li&gt;
&lt;li&gt;lesson-based learning by topic&lt;/li&gt;
&lt;li&gt;a chat tutor that explains concepts in simple terms&lt;/li&gt;
&lt;li&gt;a quiz generator for practice&lt;/li&gt;
&lt;li&gt;a code editor to write and test code&lt;/li&gt;
&lt;li&gt;a sandboxed runner to execute Python safely&lt;/li&gt;
&lt;li&gt;a reviewer that gives hints when code fails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This solves a real problem: many beginners have to jump across multiple tools and tutorials just to learn one concept. Friend.py keeps the learning flow in one app, so they can learn, practice, and clear doubts in a single place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Deployed on Render: &lt;a href="https://friend-py.onrender.com/" rel="noopener noreferrer"&gt;Friend.py&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This app also works offline locally with Ollama, so it can be used without an internet connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub repo: &lt;a href="https://github.com/ankan2526/Friend.py" rel="noopener noreferrer"&gt;Friend.py&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I built Friend.py as a Streamlit app using a local-first open-weight AI architecture.&lt;/p&gt;

&lt;p&gt;What powers it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Streamlit for the browser interface&lt;/li&gt;
&lt;li&gt;Open-weight local inference via Ollama&lt;/li&gt;
&lt;li&gt;OpenAI-compatible client setup for local model access and cloud fallback&lt;/li&gt;
&lt;li&gt;Custom curriculum and challenge system&lt;/li&gt;
&lt;li&gt;Safe subprocess-based code execution with a short timeout and blocked unsafe imports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app is designed so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;locally, it connects to Ollama using the OpenAI-compatible endpoint&lt;/li&gt;
&lt;li&gt;in Render, it automatically switches to Groq using the &lt;code&gt;GROQ_API_KEY&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;the same learning experience works both offline and in deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI models used are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tutor and quiz generation: &lt;code&gt;llama3.1:8b&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Code review: &lt;code&gt;qwen2.5-coder:7b&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes the app practical for a beginner while also showing how open-source AI can be used without vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation matters here because it makes AI accessible, private, and flexible.&lt;/p&gt;

&lt;p&gt;This project is built around open-weight models and local inference, which means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the app can run offline&lt;/li&gt;
&lt;li&gt;the user’s learning session stays private&lt;/li&gt;
&lt;li&gt;there is no mandatory paid API dependency for local use&lt;/li&gt;
&lt;li&gt;the project can be deployed anywhere without being locked into one provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed API would have made this much harder to use for a beginner in a privacy-conscious, offline-friendly way. Open models made it possible to build a learning companion that works both locally and on Render, without sacrificing accessibility or control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Open Source AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I shared this with a friend who is a complete beginner in Python, and he absolutely loved it. Before using Friend.py, he had to switch between multiple tools just to learn one concept: reading tutorials, searching for explanations, trying code examples somewhere else, and then figuring out what went wrong on his own. With Friend.py, everything is in one place. He can learn through structured lessons, ask questions to the tutor, practice in the built-in code editor, test his code instantly, and get beginner-friendly feedback when something fails.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
