<?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: Arpita Singh</title>
    <description>The latest articles on DEV Community by Arpita Singh (@arpitasi1gh).</description>
    <link>https://dev.to/arpitasi1gh</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%2F4158263%2Fb5948960-3874-48aa-bda0-5e3603be87f9.png</url>
      <title>DEV Community: Arpita Singh</title>
      <link>https://dev.to/arpitasi1gh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arpitasi1gh"/>
    <language>en</language>
    <item>
      <title>What Now? – A Local-First AI Next-Action Coach for a Tired College Student</title>
      <dc:creator>Arpita Singh</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:58:30 +0000</pubDate>
      <link>https://dev.to/arpitasi1gh/what-now-a-local-first-ai-next-action-coach-for-a-tired-college-student-2ec6</link>
      <guid>https://dev.to/arpitasi1gh/what-now-a-local-first-ai-next-action-coach-for-a-tired-college-student-2ec6</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 &lt;strong&gt;What Now?&lt;/strong&gt; for a friend of mine. She's 20, in her second year of CS, and she has the kind of schedule that looks fine on paper and falls apart by evening.&lt;/p&gt;

&lt;p&gt;Here's what I kept noticing. She isn't confused about what matters. She has a DBMS assignment due tomorrow, placement prep she's behind on, a gym membership she pays for and doesn't use, and a real need to rest. She knows all of it. But at 7:30 PM, after a full day of college, the gap between knowing and starting is where the evening goes. One reel becomes ten. "I'll start after this episode" becomes three. The assignment stays open in a tab she doesn't touch.&lt;/p&gt;

&lt;p&gt;It isn't laziness. Deciding what to start takes more energy than starting it.&lt;/p&gt;

&lt;p&gt;What she needed wasn't another planner. She's tried those. They hand her a list of twelve things and call it clarity, which is the same problem wearing a nicer font. What she needed was for something else to make the call. One thing. Right now. Small enough that saying yes doesn't feel like a commitment.&lt;/p&gt;

&lt;p&gt;That's what I built. A loop, not an app. She opens it, sets her energy on a 1–5 slider, says how many minutes she has, and hits one button. The app pulls her active tasks, sends the context to a language model running locally, and gets back a single action:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Open the DBMS assignment PDF and write the first SQL query for Q1.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Why: due tomorrow at 9 AM, high urgency.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;First step: open the PDF. Timebox: 15 minutes.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Fallback: if still low energy, review one DSA problem instead.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the whole output. No list. No options. No priority matrix asking her to rank things she's too tired to rank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The flow, end to end:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;She adds her tasks once, whenever she has the energy to think about them. Title, deadline, roughly how long it'll take, how much energy it costs, and how much it matters.&lt;/li&gt;
&lt;li&gt;Later that evening, she opens the app. Nothing to re-enter. Her tasks are already there.&lt;/li&gt;
&lt;li&gt;She sets energy to 2 and minutes to 45. The check-in form is the first thing on the page, because that's the only decision I want her making at 7:30 PM.&lt;/li&gt;
&lt;li&gt;The app sends her context to Gemma 3 4B, running locally through Ollama, and gets back one action with a reason, a two-minute first step, a timebox, and a fallback.&lt;/li&gt;
&lt;li&gt;The action card appears below the form. She reads it, and either starts or she doesn't.&lt;/li&gt;
&lt;li&gt;Either way, she taps &lt;strong&gt;Done&lt;/strong&gt;, &lt;strong&gt;Skip&lt;/strong&gt;, or &lt;strong&gt;Blocked&lt;/strong&gt;. The outcome gets logged, so the app builds up a history of what actually got done versus what got suggested.&lt;/li&gt;
&lt;li&gt;Next time she checks in, the loop runs again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal was never to turn her into a productivity machine. She can still watch her shows and play guitar. The goal was to close the gap between knowing and starting.&lt;/p&gt;

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

&lt;p&gt;Local-first, so there's no hosted URL, the app runs on her laptop alongside Ollama.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0qw7uvc7tguc6esiqggb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0qw7uvc7tguc6esiqggb.png" alt="Low energy, no task added in queue, suggested next action by model" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1vqu4d3jictcb2iae5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1vqu4d3jictcb2iae5e.png" alt="Medium energy, tasks added in queue with importance level, suggested next action by model" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/arpitasi1gh/what-now/" rel="noopener noreferrer"&gt;GITHUB&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; FastAPI with HTMX on the front end, SQLite for storage, and Gemma 3 4B running locally through Ollama.&lt;/p&gt;

&lt;p&gt;Four files carry the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;prompts.py&lt;/code&gt; holds the system prompt. It tells the model to return strict JSON with five fields: &lt;code&gt;action&lt;/code&gt;, &lt;code&gt;why&lt;/code&gt;, &lt;code&gt;first_step&lt;/code&gt;, &lt;code&gt;timebox_minutes&lt;/code&gt;, &lt;code&gt;fallback&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;agent.py&lt;/code&gt; calls Ollama's &lt;code&gt;/api/generate&lt;/code&gt; endpoint with &lt;code&gt;format: "json"&lt;/code&gt;, which constrains output to valid JSON at the sampler level. No markdown fences, no "Sure, here's your answer."&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;db.py&lt;/code&gt; stores tasks and logs every action with its outcome.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;main.py&lt;/code&gt; wires the routes and swaps HTML fragments with HTMX.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The prompt does most of the heavy lifting. It tells the model to pick exactly one task, to respect energy levels (if energy is 2 or below, no high-energy tasks unless the deadline is under 24 hours), to keep timeboxes under 25 minutes, and to write like a peer rather than a coach. No "let's crush it" or "you got this." The model isn't doing anything clever here. The context carries the thinking. The model just picks and phrases.&lt;/p&gt;

&lt;p&gt;Swapping models is one environment variable:&lt;br&gt;
&lt;code&gt;WHATNOW_MODEL=qwen2.5:7b uv run uvicorn src.what_now.main:app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I went with Ollama over the alternatives because it handles quantization, memory, and model downloads without me writing any of that myself. It exposes a plain HTTP endpoint, so the Python side is a single &lt;code&gt;httpx&lt;/code&gt; call. Nothing about the app is tied to Gemma specifically. The prompt, the schema, and the check-in flow all work with any instruction-following model you can run locally.&lt;/p&gt;

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

&lt;p&gt;Her task list contains her exam schedule, her placement prep, and goals she hasn't shared with anyone. A closed API would mean sending that to a server, paying per call, and trusting a vendor's logs.&lt;/p&gt;

&lt;p&gt;Running Gemma locally through Ollama means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nothing leaves her laptop.&lt;/li&gt;
&lt;li&gt;No API bills and no rate limits.&lt;/li&gt;
&lt;li&gt;Every prompt is in the repo. She can read exactly what the model sees.&lt;/li&gt;
&lt;li&gt;When a better open model comes out, she swaps one environment variable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is the part I keep coming back to. If I'd built this on a closed API, the project would be a wrapper around someone else's product, and it would stop working the day they change their pricing or deprecate the model. Because the model runs on her machine, it's hers. She can read it, change it, or replace it without asking anyone.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Introduction to Object-Oriented Programming (OOP)</title>
      <dc:creator>Arpita Singh</dc:creator>
      <pubDate>Fri, 02 Oct 2026 18:38:53 +0000</pubDate>
      <link>https://dev.to/arpitasi1gh/introduction-to-object-oriented-programming-oop-2g9l</link>
      <guid>https://dev.to/arpitasi1gh/introduction-to-object-oriented-programming-oop-2g9l</guid>
      <description>&lt;p&gt;Object-Oriented Programming (OOP) is a programming paradigm centered around structuring code into self-contained units called objects. Instead of storing related data across separate, disconnected arrays, OOP bundles data and actions together to model real-world entities cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Building Blocks:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;i) Class: The structural blueprint or template (e.g., User or BankAccount). It defines what fields and methods its instances will have.&lt;/p&gt;

&lt;p&gt;ii) Object: A concrete instance created from a class residing in memory (e.g., user1).&lt;/p&gt;

&lt;p&gt;iii) State (Fields): The data or properties an object holds, such as email, balance, or status.&lt;/p&gt;

&lt;p&gt;iv) Behavior (Methods): The actions an object can perform, such as login(), deposit(), or withdraw().&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The 4 Core Pillars:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;i) Encapsulation: Hides internal data using private fields and exposes controlled access via getters and setters to protect data integrity.&lt;/p&gt;

&lt;p&gt;ii) Abstraction: Exposes essential features while hiding underlying implementation details using abstract classes and interfaces.&lt;/p&gt;

&lt;p&gt;iii) Inheritance: Enables child classes to reuse properties and methods from a parent class via extends.&lt;/p&gt;

&lt;p&gt;iv) Polymorphism: Allows methods to execute differently based on the object invoking them, through method overloading and dynamic overriding.&lt;/p&gt;

&lt;p&gt;By enforcing separation of concerns, OOP prevents silent data corruption, eliminates synchronization bugs, and makes large software applications modular, scalable, and easy to maintain.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>oop</category>
    </item>
  </channel>
</rss>
