<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: riyaan amin</title>
    <description>The latest articles on Forem by riyaan amin (@riyaan_amin_603d648100a99).</description>
    <link>https://forem.com/riyaan_amin_603d648100a99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3808165%2F3ad7fb5e-736d-4107-ac91-9b25dbbdeab2.jpg</url>
      <title>Forem: riyaan amin</title>
      <link>https://forem.com/riyaan_amin_603d648100a99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/riyaan_amin_603d648100a99"/>
    <language>en</language>
    <item>
      <title>AI Didn't Write My Code. It Argued With Me. Here's the Difference.</title>
      <dc:creator>riyaan amin</dc:creator>
      <pubDate>Mon, 09 Mar 2026 15:17:46 +0000</pubDate>
      <link>https://forem.com/riyaan_amin_603d648100a99/ai-didnt-write-my-code-it-argued-with-me-heres-the-difference-lpf</link>
      <guid>https://forem.com/riyaan_amin_603d648100a99/ai-didnt-write-my-code-it-argued-with-me-heres-the-difference-lpf</guid>
      <description>&lt;p&gt;I'm building an F1 prediction app. I asked Claude to implement the ML service — specifically, a prediction function that takes a driver, a team, and a race, and returns a predicted finishing position.&lt;/p&gt;

&lt;p&gt;Claude wrote it. It looked right. Clean code, proper error handling, sensible fallbacks.&lt;/p&gt;

&lt;p&gt;Then it added a comment I hadn't asked for:&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;# Note: blending model output with heuristic baseline
# because with only 1 race in training data, pure model
# predictions will overfit to Australia-specific conditions
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hadn't thought about this. I was going to use the model output directly. Claude was pointing out, unprompted, that my approach was wrong.&lt;/p&gt;

&lt;p&gt;We went back and forth for probably 20 minutes. I argued that the model should just learn from whatever data it has. It explained why that would make predictions confidently wrong rather than honestly uncertain. I pushed back. It held its position and gave me a better explanation.&lt;/p&gt;

&lt;p&gt;Eventually I changed the implementation to match what it was suggesting.&lt;/p&gt;

&lt;p&gt;That's not code generation. That's a technical disagreement where the AI was right and I was wrong. And I only got the benefit of it because I was actually engaging with what it was saying rather than just copy-pasting output.&lt;/p&gt;




&lt;h2&gt;
  
  
  The thing nobody says about AI coding tools
&lt;/h2&gt;

&lt;p&gt;Everyone focuses on output speed. How fast can it write a function? How many lines per minute?&lt;/p&gt;

&lt;p&gt;The more useful question is: how often does it catch something you missed?&lt;/p&gt;

&lt;p&gt;In my experience, this happens constantly — but only if you read the code. The number of times I've had Claude write something, skimmed it, pasted it in, and had it fail in a way that was totally predictable from the code... that's on me, not the AI.&lt;/p&gt;

&lt;p&gt;The coding AI that makes you faster isn't the one that writes the most code. It's the one that writes code you actually understand, so you can argue with it when it's wrong and learn from it when it's right.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two patterns I've noticed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;When I describe a problem clearly&lt;/strong&gt;, Claude usually finds a better solution than what I had in mind. Not always, but enough that I've started treating my initial approach as a first draft hypothesis rather than a spec.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When I describe a solution&lt;/strong&gt; (i.e., "implement X using approach Y"), it just does that. No pushback, no alternatives, even if Y is a bad idea. The framing matters.&lt;/p&gt;

&lt;p&gt;The implication: if you want an AI to actually help you write better code, ask about problems, not implementations. "Here's what I need to achieve" gets you better results than "here's what I want you to build."&lt;/p&gt;




&lt;p&gt;I don't know if this is a universal experience or just how I use these tools. Would be curious if others find the same thing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's the most useful thing an AI coding tool has pushed back on for you?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Everyone Told Me to Pick One AI Tool and Master It. I Used Two Instead. Here's What Happened.</title>
      <dc:creator>riyaan amin</dc:creator>
      <pubDate>Mon, 09 Mar 2026 15:14:47 +0000</pubDate>
      <link>https://forem.com/riyaan_amin_603d648100a99/everyone-told-me-to-pick-one-ai-tool-and-master-it-i-used-two-instead-heres-what-happened-o6l</link>
      <guid>https://forem.com/riyaan_amin_603d648100a99/everyone-told-me-to-pick-one-ai-tool-and-master-it-i-used-two-instead-heres-what-happened-o6l</guid>
      <description>&lt;p&gt;The advice I kept seeing when I started learning to code with AI assistance: pick one tool, learn it deeply, don't context-switch.&lt;/p&gt;

&lt;p&gt;I ignored it. I use Gemini for planning and Claude for coding, on every project. Here's what actually happened.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I use two
&lt;/h2&gt;

&lt;p&gt;It started by accident. I was planning a project in Gemini — laying out the architecture, reasoning through the components, figuring out what needed to exist before I built anything. Then I switched to Claude to write the actual code, because at the time I thought it was better at Python.&lt;/p&gt;

&lt;p&gt;The interesting thing: switching between them forced me to translate. Gemini's plan was a description. To get Claude to implement it, I had to turn that description into a precise technical spec. That translation step — which felt annoying at first  turned out to be where I actually understood what I was building.&lt;/p&gt;

&lt;p&gt;When I tried to do everything in one tool, I'd get architecture and implementation tangled together. The AI would start writing code before the design was solid. Then when the design needed to change, the code was already written and change felt expensive. Separating the tools separated the phases.&lt;/p&gt;




&lt;h2&gt;
  
  
  What each one is actually good at
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemini&lt;/strong&gt; is better at reasoning about trade-offs before any code exists. "Should I use FastAPI or Flask for this?" with context about what I'm building gets a genuinely useful answer with real reasoning. It thinks in systems and consequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude&lt;/strong&gt; is better at implementation details and catching edge cases in existing code. It'll write the function, then add a comment explaining why it did something a particular way, and sometimes that comment reveals a problem I hadn't considered.&lt;/p&gt;

&lt;p&gt;Neither of these is a universal truth. It's what I've found for my specific use case, building Python backends and Streamlit frontends. Your mileage will vary.&lt;/p&gt;




&lt;h2&gt;
  
  
  The actual cost
&lt;/h2&gt;

&lt;p&gt;Context-switching between tools does have a cost. Keeping two conversations going, translating between them, maintaining consistency  it takes more cognitive overhead than a single-tool workflow.&lt;/p&gt;

&lt;p&gt;Whether that overhead is worth it depends on the project complexity. For a simple script, one tool is obviously fine. For something with multiple layers — backend, ML service, frontend, data pipeline — the separation has been worth it for me.&lt;/p&gt;

&lt;p&gt;The other cost: you can't fully trust either tool's memory of what the other one said. You're the integration layer. Which means you actually have to understand the whole thing, which is probably a feature not a bug.&lt;/p&gt;




&lt;h2&gt;
  
  
  The question I'd actually ask
&lt;/h2&gt;

&lt;p&gt;Not "which AI tool is best" but "which part of building this thing am I most likely to get wrong without help?"&lt;/p&gt;

&lt;p&gt;For me that's usually the design phase I'm impatient and want to start coding before I've thought clearly about structure. So I force myself to use a planning tool first and not touch the code editor until the architecture makes sense on paper.&lt;/p&gt;

&lt;p&gt;The specific tools are almost secondary to that discipline.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's your setup? Single tool, multiple tools, no tools? Genuinely curious whether the two-tool thing is unusual or if others do the same.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Use Two AI Models to Build Projects. Here's Exactly How.</title>
      <dc:creator>riyaan amin</dc:creator>
      <pubDate>Fri, 06 Mar 2026 17:16:21 +0000</pubDate>
      <link>https://forem.com/riyaan_amin_603d648100a99/i-use-two-ai-models-to-build-projects-heres-exactly-how-4ak4</link>
      <guid>https://forem.com/riyaan_amin_603d648100a99/i-use-two-ai-models-to-build-projects-heres-exactly-how-4ak4</guid>
      <description>&lt;p&gt;Most people pick one AI and stick with it.&lt;/p&gt;

&lt;p&gt;I use two — and it's made me build faster, understand more, and actually finish projects instead of abandoning them halfway through. Here's my exact workflow, why it works, and how you can steal it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I use &lt;strong&gt;Antigravity&lt;/strong&gt; — a coding environment by Google that lets you run AI models directly inside your editor. It has a Claude extension built in, which means I can switch between Gemini and Claude without leaving the app.&lt;/p&gt;

&lt;p&gt;That's the key. Same environment, two models, completely different jobs.&lt;/p&gt;

&lt;p&gt;No tab switching. No copy pasting between windows. Just a clean switch from planning mode to building mode inside one tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Gemini for Planning
&lt;/h2&gt;

&lt;p&gt;Before I write a single line of code, I ask Gemini to create a PRD — a Product Requirements Document.&lt;/p&gt;

&lt;p&gt;I describe what I want to build in plain English. What it does, who uses it, what features it needs, what tech stack makes sense, what problems I might run into. Gemini is genuinely great at this. It thinks broadly, considers angles I hadn't thought of, and gives me a structured plan I can actually follow.&lt;/p&gt;

&lt;p&gt;For my current project &lt;strong&gt;GeoAlert&lt;/strong&gt; — a real-time global conflict tracker with an interactive world map, AI-generated conflict summaries, and a historical year filter — the Gemini PRD covered everything. Folder structure, which APIs to use (ACLED for conflict data, GDELT for news), how the React frontend and Python FastAPI backend talk to each other, a realistic six week build timeline, and potential problems I'd likely face.&lt;/p&gt;

&lt;p&gt;That planning session took maybe 20 minutes. And it meant when I actually started coding, I wasn't guessing. I had a roadmap. Every decision had already been thought through.&lt;/p&gt;

&lt;p&gt;The difference between starting with a plan and starting without one is massive. Without a plan you write code, hit a wall, rewrite everything, lose motivation, and abandon the project. With a plan you just follow the next step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Claude for Coding
&lt;/h2&gt;

&lt;p&gt;Once the plan is solid, I switch to Claude inside Antigravity and give it one instruction:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Use this plan and start building Stage 1."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude is better at staying consistent across a codebase. It follows the structure Gemini laid out, writes clean readable code, and — crucially — explains what it's doing if you ask it to.&lt;/p&gt;

&lt;p&gt;This is where context engineering makes the real difference. I don't just say "build this." I add this to every coding prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Add a comment above every function explaining what it does. Add inline comments on any line that isn't obvious. After each stage, pause and ask me if I understand before continuing."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That one addition completely changes the output. Claude stops being a code generator and becomes something closer to a patient tutor who happens to write perfect code. Every function is explained. Every confusing line has a note next to it. I move forward only when I actually understand what just got built.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. My first project — a Rubik's Cube simulator in pygame — was built with a single vague prompt. The code worked perfectly. I had no idea why. I couldn't explain a single function. That's not a portfolio, that's a magic trick someone else performed.&lt;/p&gt;

&lt;p&gt;The second time I built it with this workflow, I understood every line by the time it was done.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Two Models Instead of One?
&lt;/h2&gt;

&lt;p&gt;Each model has a genuinely different strength and trying to force one model to do everything well is fighting against how these tools actually work.&lt;/p&gt;

&lt;p&gt;Gemini thinks big picture. It's good at research, planning, weighing options, and structuring ideas across an entire project. Claude is precise and consistent. It's good at executing a specific plan, maintaining context across a long codebase, and explaining technical decisions clearly.&lt;/p&gt;

&lt;p&gt;Using one model for everything is like using a hammer for every job. Sometimes you need a screwdriver.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Full Workflow in 5 Steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Antigravity&lt;/li&gt;
&lt;li&gt;Ask Gemini: &lt;em&gt;"Create a full technical plan for [project]. Include folder structure, tech stack, build order, and potential problems I'll face."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Review the plan, ask follow up questions until it feels solid and complete&lt;/li&gt;
&lt;li&gt;Switch to Claude: &lt;em&gt;"Use this plan. Start with Stage 1. Add comments on every function and explain each part as you go."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Build stage by stage, understanding every line before moving to the next&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the whole system. No magic. Just being intentional about which tool does which job.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Point
&lt;/h2&gt;

&lt;p&gt;AI tools are only as good as how you use them. A bad prompt to a great model gives you code you don't understand. A great prompt to any model gives you something you can actually learn from, explain, and build on.&lt;/p&gt;

&lt;p&gt;The workflow I'm describing isn't about being lazy or cutting corners. It's about being deliberate, using planning tools to plan and coding tools to code, and making sure you genuinely understand what's being built at every stage.&lt;/p&gt;

&lt;p&gt;That's not vibe coding. That's engineering.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm an IB student in Mumbai documenting my CS journey while applying to university.Follow along if you're on a similar path.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Just published my first dev post how I rebuilt a project from scratch 
because I didn't understand the AI-generated code</title>
      <dc:creator>riyaan amin</dc:creator>
      <pubDate>Thu, 05 Mar 2026 17:15:06 +0000</pubDate>
      <link>https://forem.com/riyaan_amin_603d648100a99/just-published-my-first-dev-post-how-i-rebuilt-a-project-from-scratch-because-i-didnt-understand-4m2m</link>
      <guid>https://forem.com/riyaan_amin_603d648100a99/just-published-my-first-dev-post-how-i-rebuilt-a-project-from-scratch-because-i-didnt-understand-4m2m</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/riyaan_amin_603d648100a99" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3808165%2F3ad7fb5e-736d-4107-ac91-9b25dbbdeab2.jpg" alt="riyaan_amin_603d648100a99"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/riyaan_amin_603d648100a99/i-asked-ai-to-build-me-a-rubiks-cube-simulator-it-worked-i-had-no-idea-why-4k26" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I Asked AI to Build Me a Rubik's Cube Simulator. It Worked. I Had No Idea Why.&lt;/h2&gt;
      &lt;h3&gt;riyaan amin ・ Mar 5&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>python</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Asked AI to Build Me a Rubik's Cube Simulator. It Worked. I Had No Idea Why.</title>
      <dc:creator>riyaan amin</dc:creator>
      <pubDate>Thu, 05 Mar 2026 17:11:56 +0000</pubDate>
      <link>https://forem.com/riyaan_amin_603d648100a99/i-asked-ai-to-build-me-a-rubiks-cube-simulator-it-worked-i-had-no-idea-why-4k26</link>
      <guid>https://forem.com/riyaan_amin_603d648100a99/i-asked-ai-to-build-me-a-rubiks-cube-simulator-it-worked-i-had-no-idea-why-4k26</guid>
      <description>&lt;p&gt;So there I was, staring at a fully working Rubik's Cube simulator on my screen.&lt;/p&gt;

&lt;p&gt;Colors, grid, faces — everything exactly where it should be. It ran first try.&lt;/p&gt;

&lt;p&gt;And I had absolutely no idea what any of the code did.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With "It Works"
&lt;/h2&gt;

&lt;p&gt;I'm an IB student trying to build a CS portfolio for university applications. Everyone says the same thing: &lt;em&gt;build projects, put them on GitHub, show you can code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I did what most students do. I described what I wanted to an AI, it gave me the code, I ran it, it worked. Done. Next project.&lt;/p&gt;

&lt;p&gt;Except — when I looked at the code, it was completely foreign to me. I knew what I &lt;em&gt;asked&lt;/em&gt; for. I had no idea what the AI had actually &lt;em&gt;built&lt;/em&gt;. I couldn't explain a single function if someone asked me to.&lt;/p&gt;

&lt;p&gt;That's not a portfolio. That's a magic trick I didn't understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rebuild
&lt;/h2&gt;

&lt;p&gt;I decided to start over. Same project, same AI tools — but this time with one rule: I don't move to the next line until I understand the current one.&lt;/p&gt;

&lt;p&gt;The difference was in how I prompted. Instead of just saying &lt;em&gt;"build me a Rubik's cube simulator in pygame,"&lt;/em&gt; I wrote something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Add a comment above every function explaining what it does. Add inline comments on any line that isn't obvious. After each stage, pause and ask me if I understand before continuing."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That one change made everything different. Suddenly the AI wasn't just handing me a finished product — it was teaching me as it built.&lt;/p&gt;

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

&lt;p&gt;This isn't really about Rubik's Cubes or pygame. It's about &lt;strong&gt;context engineering&lt;/strong&gt; — the quality of what AI gives you is entirely determined by the quality of how you ask.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The cube now has a full 2D net, live notation input, and a kociemba solver in progress. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;I'm an IB student documenting my CS journey while applying to university. Drop a comment if you're doing the same.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>basic</category>
      <category>ai</category>
      <category>python</category>
    </item>
  </channel>
</rss>
