<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mohan Builds]]></title><description><![CDATA[Mohan Builds]]></description><link>https://mohanbuilds.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/69f1ba28ad6e531c7284faa5/d3656515-c769-46e4-964e-748660ca87d4.png</url><title>Mohan Builds</title><link>https://mohanbuilds.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 11:06:17 GMT</lastBuildDate><atom:link href="https://mohanbuilds.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I Built My Developer Portfolio Using OpenCode — Here Is What AI-Assisted Development Actually Feels Like as a Beginner]]></title><description><![CDATA[The first thing I did after installing OpenCode was not build my portfolio.
I built a 3D Tic Tac Toe game in React and deployed it.
Not because I needed it. Just because I had just set up a terminal-b]]></description><link>https://mohanbuilds.hashnode.dev/i-built-my-developer-portfolio-using-opencode-here-is-what-ai-assisted-development-actually-feels-like-as-a-beginner</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-built-my-developer-portfolio-using-opencode-here-is-what-ai-assisted-development-actually-feels-like-as-a-beginner</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[AI]]></category><category><![CDATA[Career]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Fri, 05 Jun 2026 11:35:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/5b6408c9-404e-4d1a-92ef-6becda014a78.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The first thing I did after installing OpenCode was not build my portfolio.</p>
<p>I built a 3D Tic Tac Toe game in React and deployed it.</p>
<p>Not because I needed it. Just because I had just set up a terminal-based AI coding tool and I wanted to see what it would actually do. That small detour — typing a prompt, watching it scaffold something real, deploying it within the same session — is what convinced me to use it for something I actually cared about.</p>
<hr />
<h2>Why I Needed a Portfolio Right Then</h2>
<p>I had just moved back home after living in a hostel. Fresh engineering grad, no job yet, trying to get visible in the developer community. I needed a portfolio. I could have built it the usual way — picking a template, writing everything manually, spending days on layout decisions. Instead, I decided to try building it entirely through OpenCode and see what that experience was actually like.</p>
<hr />
<h2>What OpenCode Is (For Anyone Who Has Not Heard of It)</h2>
<p>OpenCode is an agentic ai coding tool that runs in your terminal. You describe what you want to build, it writes the code, you review and iterate. There is a desktop version too, but I used the terminal interface — which sounds intimidating if you have not used it before, but is genuinely just a conversation that produces code. It supports multiple models, and you can swap between them depending on what you are working on.</p>
<hr />
<h2>What Working With It Actually Felt Like</h2>
<p>I built the entire portfolio on free-tier models. Mainly Minimax V3 and DeepSeek V3 Flash — switching between them depending on the task.</p>
<p>That switching is where things got interesting.</p>
<p>No single model was perfect for everything. DeepSeek V3 Flash was faster for generating structure and layout — when I needed a section scaffolded quickly, it moved. Minimax V3 handled longer, more detail-heavy prompts better when I needed something more considered, like writing out the skills section or getting the project cards to look right.</p>
<p>The honest version of this is: I was not following a plan. I was figuring out which model behaved better for which kind of prompt as I went. That is not a flaw in the tool — it is just what using free-tier AI actually looks like. You learn the shape of each model through use.</p>
<hr />
<h2>Where I Still Had to Think</h2>
<p>The code was not the hard part. The decisions were.</p>
<p>OpenCode could generate a hero section. It could not tell me what to say in it. It could scaffold a projects section. It could not decide which projects were worth showing, or how to describe them in a way that would land with a recruiter reading for thirty seconds.</p>
<p>Every time I hit a content decision — what to include, how to frame my experience as a fresh grad with no full-time work history, which projects to lead with — I had to stop and think it through myself. The tool was waiting. The thinking was mine.</p>
<p>That is a useful thing to understand before you start: AI-assisted development with a tool like OpenCode accelerates the build. It does not replace the judgment calls about what you are building and why.</p>
<hr />
<h2>What the Portfolio Ended Up Looking Like</h2>
<p>The final version has a hero section, an about section, a skills overview, a projects section showing the things I have actually built, and contact links.</p>
<p>As a fresh grad, I made one deliberate choice: lead with projects over credentials. I do not have years of experience to list. But I have things I have shipped — including the AI Resume Tailor I built and deployed recently. That is what the portfolio shows.</p>
<p>You can see it here: <a href="http://mohan-portfolio-v1-0.vercel.app">mohan-portfolio-v1-0.vercel.app</a></p>
<hr />
<h2>The One Thing I Would Tell Another Fresh Grad Before They Try This</h2>
<p>OpenCode will move faster than you expect. The part that slows you down will not be the tool — it will be the moments where you have to decide what kind of developer you want to appear to be. No model can answer that for you.</p>
<p>Figure out what you want to say. Then let the tool help you say it faster.</p>
<hr />
<p>If you have used OpenCode or any other terminal-based AI coding tool, I am curious — did you stick with one model or end up switching around like I did? Drop it in the comments.</p>
]]></content:encoded></item><item><title><![CDATA[I Built a Multi-Agent AI Workflow as a Beginner — Here Is What Actually Happened]]></title><description><![CDATA[Before I wrote a single line of code, I made a decision that changed how the whole build went.
I spent an entire day just trying to understand what I was about to build. Not watching tutorials. Not fo]]></description><link>https://mohanbuilds.hashnode.dev/i-built-a-multi-agent-ai-workflow-as-a-beginner-here-is-what-actually-happened</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-built-a-multi-agent-ai-workflow-as-a-beginner-here-is-what-actually-happened</guid><category><![CDATA[AI]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Fri, 29 May 2026 17:19:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/c0ba5835-ff91-4205-9b60-33de925b0c73.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before I wrote a single line of code, I made a decision that changed how the whole build went.</p>
<p>I spent an entire day just trying to understand what I was about to build. Not watching tutorials. Not following along with someone else's repo. Just sitting with the concepts, asking questions, mapping out how the pieces connected. That decision is the reason this post exists — because if I had jumped straight to coding, I would have built something without understanding it. And I would have had nothing real to say about it afterward.</p>
<hr />
<h3>What the Project Actually Is</h3>
<p>The idea is simple once you see it: instead of one AI doing everything, you break the work into roles.</p>
<p>My project — <strong>Multi-Agent Orchestration Sim</strong> — runs a three-agent pipeline. A Researcher agent gathers and processes information on a given topic. A Writer agent takes that output and turns it into structured content. An Editor agent reviews the draft and refines it. Each agent has one job. The output of one becomes the input of the next. That handoff chain is what makes it "multi-agent."</p>
<p>If you have used an assembly line as a mental model for anything, this clicks immediately.</p>
<hr />
<h3>The Day I Did Not Touch the Code</h3>
<p>May 28 was a research day.</p>
<p>I went through the LangChain and LangGraph documentation, read about how state is passed between agents, and sat with questions I could not immediately answer: How do agents hand off context without losing information? What does LangGraph's state graph actually manage under the hood? Where does Groq fit into this — is it just the model provider, or does it change how I structure things?</p>
<p>Most of those questions did not have clean answers until I started building. But asking them first meant I was not reading error messages cold — I had enough mental context to understand what was breaking and why.</p>
<p>That phase is what separates a build you understand from one you just completed.</p>
<hr />
<h3>The Actual Build</h3>
<p>The stack: LangChain for agent logic, LangGraph for orchestrating the pipeline and managing state across agents, Groq as the LLM provider for fast inference. FastAPI backend, NextJS and TypeScript frontend.</p>
<p>I structured the graph with each agent as a node and defined the edges — the handoff points — explicitly. LangGraph's <code>StateGraph</code> manages what gets passed forward at each step, which meant I did not have to wire the agents together manually. I defined the state schema, connected the nodes, and let the graph handle execution order.</p>
<p>It is not a complex architecture. But it is a real one. And building it meant making actual decisions, not just following a predefined template.</p>
<hr />
<h3>The Two Things That Broke</h3>
<p><strong>First: deprecated syntax.</strong></p>
<p>I had learned LangChain from an older course. When I started building, a significant portion of the syntax I was relying on had been deprecated. Methods had been renamed, import paths had changed, some patterns had been replaced entirely. I spent time I had not planned for just searching for what the current replacements were — cross-referencing the docs, checking changelogs, testing whether the updated syntax behaved the same way.</p>
<p>It is a small thing in retrospect. But when you are a beginner and the code from your course stops working, it feels like the floor has moved.</p>
<p><strong>Second: a CORS error from a trailing slash.</strong></p>
<p>After deployment, API requests from the frontend were not reaching the backend. I opened the browser console and saw a CORS error — origin not allowed.</p>
<p>I already knew what CORS was, so I knew where to look. When I checked the backend configuration, I found it immediately: I had added the frontend production URL to the allowed origins list, but I had accidentally included a trailing slash at the end of the URL.</p>
<p><a href="https://myapp.vercel.app/"><code>https://myapp.vercel.app/</code></a> instead of <a href="https://myapp.vercel.app"><code>https://myapp.vercel.app</code></a></p>
<p>That single character blocked every request. Removed the slash, redeployed, everything worked. Ten seconds to fix, forty minutes to find.</p>
<hr />
<h3>Shipping It</h3>
<p>The repo is live and the project is deployed. That matters more than it sounds.</p>
<p>Not because of what it does — it is a beginner project. But because it exists outside my machine, it has a URL, and someone else can look at the code. That is a different category of thing than a project that lives in a local folder.</p>
<p>→ <a href="https://github.com/Mohanragul-01/multi-agent-orchestration-sim">GitHub repo</a></p>
<hr />
<h3>What Building Taught Me That Tutorials Never Did</h3>
<p>Watching someone build a multi-agent system teaches you the steps. Building one teaches you something different.</p>
<p><strong>You learn what the abstractions are actually hiding.</strong> LangGraph's state management felt clean in tutorials. When I had to define my own state schema and debug why context was not passing correctly, I understood what the library was doing — not just that it worked.</p>
<p><strong>You learn that documentation has a version.</strong> Nothing in a course tells you that the method you just learned might be deprecated. Building forces you to read the actual docs, check the version, and understand that libraries change.</p>
<p><strong>You learn that most errors are boring.</strong> The CORS error that blocked deployment was not a deep architectural failure. It was a slash. The deprecated syntax errors were not gaps in my understanding — they were just outdated. Beginners fear errors because they think they signal a fundamental misunderstanding. Usually they do not.</p>
<p><strong>You learn that finishing is a skill.</strong> The gap between "I understand this concept" and "I have shipped this project" is real and it takes practice to close. Every project you finish makes the next one easier to start.</p>
<hr />
<p>If you are stuck in tutorial loops right now — what is actually stopping you from just shipping something small?</p>
<p>The stack does not have to be impressive. The project does not have to be original. It just has to be finished.</p>
]]></content:encoded></item><item><title><![CDATA[I Wasted a Day, Then Built an AI That Identifies Bears — Here Is What 4 Days of Learning Actually Looks Like]]></title><description><![CDATA[May 17 was a write-off.
No learning. No building. Just YouTube, doom scrolling, and the slow awareness that I was avoiding everything I was supposed to be doing. Momentum gone. I did not spiral about ]]></description><link>https://mohanbuilds.hashnode.dev/i-wasted-a-day-then-built-an-ai-that-identifies-bears-here-is-what-4-days-of-learning-actually-looks-like</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-wasted-a-day-then-built-an-ai-that-identifies-bears-here-is-what-4-days-of-learning-actually-looks-like</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[AI]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[Career]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Wed, 20 May 2026 17:20:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/52f845d6-0f60-43a2-874c-aa70fe8bca40.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h3>May 17 was a write-off.</h3>
<p>No learning. No building. Just YouTube, doom scrolling, and the slow awareness that I was avoiding everything I was supposed to be doing. Momentum gone. I did not spiral about it. I just watched it happen and let the day end.</p>
<p>That is the honest starting point for this week.</p>
<hr />
<h3>May 18 — Doing a Little When You Do Not Feel Like It</h3>
<p>Recovery does not look dramatic. It looks like sitting down and doing something small even when nothing feels like it matters yet.</p>
<p>I worked on some communication materials, restarted FastAI, and got back into the course. Not a highly productive day by any measure. But motion is motion. The point of May 18 was not output — it was direction.</p>
<hr />
<h3>May 19 — The Workflow Started Making Sense</h3>
<p>Completed FastAI Modules 1 and 2 alongside the corresponding book chapters, then built the classic dog-vs-cat image classifier.</p>
<p>Most of the code was course-guided, but something clicked about the training and prediction workflow: you feed labeled images in, a model trains on them, and then you pass a new image through — it returns a label and a confidence score. That loop — train, predict, evaluate — is the foundation for everything else in this course. Seeing it run on something as simple as cats and dogs made it concrete in a way that reading about it had not.</p>
<hr />
<h3>May 20 — The Bear Classifier</h3>
<p>Module 3 done. Bear classifier built.</p>
<p>The model classifies images into three categories: black bear, grizzly bear, or teddy bear. It works. Watching it correctly label a grizzly I fed it was one of those small moments that feels disproportionately satisfying — you know it is a beginner project, but it is <em>your</em> beginner project and it ran.</p>
<p>One thing worth mentioning for anyone following the same course: the FastAI content is a few years old at this point, and the image collection section uses Bing Search API with a free tier that no longer exists without entering card details. I ran into that wall early. The fix was switching to DuckDuckGo image search via Python — fully free, works the same way for the purpose of pulling training images. Small detour, but worth knowing before you hit it.</p>
<p>Also started thinking more seriously about career direction today — researching job hunting resources, posting in dev communities, beginning to think about what comes after the learning phase.</p>
<hr />
<h3>What Four Days Actually Taught Me</h3>
<p>May 17 did not erase May 19 and May 20. That sounds obvious, but it is easy to treat one bad day like it resets your streak to zero.</p>
<p>The more useful thing I took from this week: small practical projects move understanding forward faster than rushing through theory. The dog-vs-cat classifier and the bear classifier are both simple. Neither of them required deep knowledge. But building them made concepts stick in a way that reading had not managed.</p>
<p>Consistency is not about perfect productivity. It is about what you do after the wasted day — whether you quietly get back in motion or let one day become three.</p>
<p>May 18 was not impressive. It was just necessary.</p>
<hr />
<p>What does your recovery day look like when you lose momentum? Do you push through, or do you let yourself reset first?</p>
]]></content:encoded></item><item><title><![CDATA[I Deleted My AI-Generated Project and Rebuilt It From Scratch — Here Is What That Taught Me]]></title><description><![CDATA[I had a working prototype in a few hours. It ran. It looked like something real.
I deleted it anyway.
Not because it was broken. Because I could not explain what it was doing — and that felt worse tha]]></description><link>https://mohanbuilds.hashnode.dev/i-deleted-my-ai-generated-project-and-rebuilt-it-from-scratch-here-is-what-that-taught-me</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-deleted-my-ai-generated-project-and-rebuilt-it-from-scratch-here-is-what-that-taught-me</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[AI]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Programming Blogs]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Sat, 16 May 2026 18:12:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/c65ca2d5-eb4a-4774-92f9-5f8ab2c4bdc7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<p>I had a working prototype in a few hours. It ran. It looked like something real.</p>
<p>I deleted it anyway.</p>
<p>Not because it was broken. Because I could not explain what it was doing — and that felt worse than having nothing at all.</p>
<hr />
<h3>May 13 — The Build and the Discard</h3>
<p>The project was an AI API Cost Optimizer. The idea was solid: monitor usage across multiple LLMs, route requests based on cost, handle circuit breakers and fallback logic when one model fails. Useful, technical, the kind of thing that looks impressive in a portfolio.</p>
<p>I used Cursor. It generated the structure fast — faster than I expected.</p>
<p>Then I sat down to review what had been built.</p>
<p>I could read the code. I could not explain it. There is a difference. If someone had asked me why a specific routing decision was made, or how the fallback chain was structured, or what would happen if two circuit breakers triggered at once — I would have guessed. And I would not have known whether I was right.</p>
<p>That moment — sitting with a working project I did not understand — is the one I keep coming back to.</p>
<p>I made the call to discard it entirely. Not to fix it, not to read through it slowly and hope comprehension would come. Delete and start over. It felt more honest than shipping something I could not own.</p>
<hr />
<h3>May 14 — The Day I Could Not Recover</h3>
<p>Laptop issues. A long trip to the service center. Hours of waiting and logistics that drained whatever focus I had left.</p>
<p>I knew the day was gone by mid-afternoon. I could not get back into the right headspace to do anything meaningful, so I did not force it. Some days are just the cost of having a life outside of building.</p>
<hr />
<h3>May 15 — The Rebuild</h3>
<p>I started over with Claude. But the tool was not really the point.</p>
<p>What changed was how I worked.</p>
<p>On May 13, I had described the full project and let Cursor generate most of it in one pass. On May 15, I built one small piece at a time. I got the basic API connection working and understood it before touching the next part. Then the routing logic — built it, read it, asked questions about it, moved on. Then the fallback handling. Each piece had to make sense to me before I added the next one.</p>
<p>It was slower. The project grew in a way I could follow.</p>
<p>By the end of the day, the MVP was rebuilt and deployed. Same project, same concept — but this time I could explain every decision in it. That is the difference between a project you built and a project that was built for you.</p>
<hr />
<h3>May 16 — The RAG Knowledge Assistant</h3>
<p>The next project was simpler in concept: a RAG Knowledge Assistant that answers questions from uploaded files. Upload a document, ask questions, get answers grounded in that document's content.</p>
<p>The development part went smoothly. Deployment did not.</p>
<p>Free-tier hosting limitations. Unexpected constraints. Hours of debugging infrastructure that had nothing to do with the AI logic itself. The kind of problems that do not show up in tutorials because they assume everything just works.</p>
<p>It still shipped (Frontend only). But the real lesson from that day was not about RAG pipelines — it was about deployment. Getting something running locally is one thing. Getting it running somewhere else, under real constraints, with free-tier limits fighting you the whole way, is a completely different skill. That part is just as important to learn as the AI logic, and it gets skipped over constantly.</p>
<hr />
<h3>The Realization</h3>
<p>AI can move fast. That speed is real and genuinely useful.</p>
<p>But speed without understanding creates a different kind of problem — you end up with things you cannot maintain, cannot debug, and cannot honestly call your own work. The impressive-looking project that you cannot explain in an interview is not an asset.</p>
<p>What I am changing: I am not generating whole projects anymore. I am building in pieces, staying at the edge of what I understand, and using AI to help me move that edge forward — not to jump past it entirely.</p>
<p>The goal is not to ship fast. The goal is to understand what I am shipping.</p>
<hr />
<h3>Where Things Stand</h3>
<p>Two more projects deployed in the last few days. The <a href="http://fast.ai">fast.ai</a> course running alongside. The workflow is still being figured out, but it is moving in a direction that feels more solid than it did a week ago.</p>
<p>If you have ever accepted generated code you did not fully understand just to keep moving — what made you stop and question it, or did you ship it anyway?</p>
]]></content:encoded></item><item><title><![CDATA[I Planned My AI Project for Days. Then Everything Failed on Day One.]]></title><description><![CDATA[I had everything ready before I wrote a single line of code.
Detailed prompts. System design notes. Tech stack decisions. Workflow documents. A content strategy. I had spent days preparing so that whe]]></description><link>https://mohanbuilds.hashnode.dev/i-planned-my-ai-project-for-days-then-everything-failed-on-day-one</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-planned-my-ai-project-for-days-then-everything-failed-on-day-one</guid><category><![CDATA[beginner]]></category><category><![CDATA[AI]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Career]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Wed, 13 May 2026 08:14:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/ccd5ff0c-e92e-464c-a5e6-91c4c0908f36.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I had everything ready before I wrote a single line of code.</p>
<p>Detailed prompts. System design notes. Tech stack decisions. Workflow documents. A content strategy. I had spent days preparing so that when I finally sat down to build, nothing would slow me down.</p>
<p>Then I started building. And almost all of it fell apart.</p>
<hr />
<h3>May 10 — The Day the Plan Fell Apart</h3>
<p>I opened my notes with genuine excitement. Everything was documented. This was supposed to be the easy part.</p>
<p>The prompts I had crafted did not produce what I expected. Outputs were inconsistent. Quality kept dropping below what I needed. I spent hours refining them — restructuring, rewording, testing again, getting slightly better results, then slightly worse ones.</p>
<p>At some point in the middle of that loop, I hit a wall.</p>
<p>I realized I was not building. I was still preparing — just in a different form. The planning had shape-shifted into prompt obsession, and I had not noticed the switch.</p>
<p>That is when I made the only decision that actually moved things forward: stop chasing the perfect setup and focus on creating a workable foundation instead.</p>
<p>It sounds obvious when you write it down. It did not feel obvious at hour four of testing prompts that were close but never quite right. The shift was not dramatic. I just stopped optimizing for ideal and started building for functional. That change in how I was thinking about the day is what made May 11 possible.</p>
<hr />
<h3>May 11 — The Day It Actually Worked</h3>
<p>I started the morning differently. Instead of jumping straight into building, I used AI as a thinking partner — asking questions, stress-testing my understanding of the concepts, filling gaps I had not noticed during prep. Not generating outputs. Just understanding the problem properly.</p>
<p>Once I felt grounded in what I was actually building, I started coding.</p>
<p>By the end of the day, I had built and deployed <strong>AI Resume Tailor</strong> — an AI-powered web app that analyzes a user's resume against a job description and returns a match score along with an AI-tailored version of the resume. Flask backend, React frontend, Gemini Flash API handling the intelligent text processing.</p>
<p>It is live: <a href="http://ai-resume-polisher.vercel.app">Live App</a></p>
<p>What that day confirmed for me: learning accelerates when combined with real implementation. The prep I had done for days started clicking into place only once I was building with it. Theory alone did not do that. The combination did.</p>
<p>There was one bottleneck. I hit the AI usage limit partway through the day. It forced a pause I did not want, but it also forced me to think about something I had been ignoring — my workflow is not organized for limits. I rely heavily on AI-assisted momentum, and when that cuts off, I do not always have a clean fallback. Something to fix.</p>
<hr />
<h3>May 12 — The Day That Fought Back</h3>
<p>I accidentally deleted an important AI conversation.</p>
<p>It had concept explanations I had been building on for Project 1 — the kind of working context that is annoying to reconstruct because you cannot remember exactly what you asked or how the explanation landed the first time.</p>
<p>I sat with that frustration for a moment. Then I redid it.</p>
<p>Not gracefully. Not without muttering about it. But I redid it, moved on, and kept working through the concepts I needed for the next project despite a day full of small interruptions that kept breaking my focus.</p>
<p>That night, I started <a href="http://fast.ai">fast.ai</a>'s <em>Deep Learning for Coders</em> and finished Lesson 1.</p>
<p>It was a small move. But it was a deliberate one — I was behind where I wanted to be and I made a choice to keep the forward motion going even when the day had been mostly friction.</p>
<hr />
<h3>The Pattern I Noticed</h3>
<p>Three days is not a lot of data. But it was enough to see something clearly.</p>
<p>I move fast. I rely heavily on structured AI workflows. I sometimes overprepare — building elaborate systems before I have tested whether the foundation is solid. And I occasionally lose momentum to overthinking or poor organization, like not having a backup for important AI conversations, or not accounting for usage limits in my daily workflow.</p>
<p>I am not writing this as a resolved problem. I have not fixed any of it yet.</p>
<p>But I have noticed it. And there is something useful in noticing a pattern before you can name a solution — it means the next time it happens, you will recognize it faster.</p>
<p>Despite wasted time, mistakes, and imperfect days, I still continued building, learning, and moving forward. That is the only part I am confident about right now.</p>
<hr />
<h3>What Is Live</h3>
<p>AI Resume Tailor is deployed and working.</p>
<p>→ <a href="https://github.com/Mohanragul-01/ai-resume-polisher">GitHub repo</a> → <a href="https://ai-resume-polisher.vercel.app">Live app</a> → <a href="https://ai-resume-polisher.onrender.com">Backend on Render</a></p>
<p>Three messy days still shipped something real. Preparation alone does not guarantee progress — but apparently, neither does its absence.</p>
<hr />
<h3>What Comes Next</h3>
<p>The next project is already in progress. The <a href="http://fast.ai">fast.ai</a> course is running alongside it. The workflow is imperfect, the usage limits are still a problem, and the tendency to overprepare has not disappeared — but things are moving.</p>
<hr />
<p>Have you ever prepared so thoroughly for something that the preparation itself became the obstacle?</p>
]]></content:encoded></item><item><title><![CDATA[I Built 10 AI Applications in 4 Days as a Beginner — Here Is What Actually Happened]]></title><description><![CDATA[Four days ago I was reading about what an API is.
By day four I had a working RAG application running locally on my machine — one that could answer questions using documents I fed it, without sending ]]></description><link>https://mohanbuilds.hashnode.dev/i-built-10-ai-applications-in-4-days-as-a-beginner-here-is-what-actually-happened</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-built-10-ai-applications-in-4-days-as-a-beginner-here-is-what-actually-happened</guid><category><![CDATA[Python]]></category><category><![CDATA[AI]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Sat, 09 May 2026 09:11:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/05fbc27a-85c4-43e4-88f5-9be6a69688f5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Four days ago I was reading about what an API is.</p>
<p>By day four I had a working RAG application running locally on my machine — one that could answer questions using documents I fed it, without sending anything to an external server.</p>
<p>I am still not sure how that happened. But I want to write it down before the feeling fades.</p>
<hr />
<h3>Where this fits in the journey</h3>
<p>I am midway through the IBM Applied AI Developer Professional Certificate. Courses 5 and 6 are where everything shifted — from understanding concepts to actually building things. Ten projects across five days.</p>
<p>This is not a course review. It is an account of what building actually felt like.</p>
<hr />
<h3>Course 5 — Flask and backend development</h3>
<p>I went in thinking the backend would be manageable.</p>
<p>I had learned Node.js in my first year of college during a MERN stack module. I remembered the basics — routing, requests, how a server works. Enough to feel like I had a foundation.</p>
<p>What I did not account for was that after first year, I completely stopped touching backend. My focus drifted entirely to frontend. For two years I wrote UI, helped friends debug their projects occasionally, and let everything else fade. By third year, even that stopped.</p>
<p>So when Flask came up, I did not remember Node as much as I thought I did. What I remembered was the concept — how a backend is supposed to work. That was enough to adapt to Flask, even though the syntax was completely different.</p>
<p>What surprised me more was unit testing.</p>
<p>I had seen it mentioned in Job roles, Internet and even in Course Works. I had always skipped past it mentally — something I filed under "I will care about this later." During Course 5, I actually understood what it was for the first time. What it checks. Why it matters. Why writing tests is not extra work but part of writing real software.</p>
<p>Here is the part I am still thinking about: during campus placements in my final year, the first company that came to our college selected me through a hackathon round and called me for a final interview. They asked if I was comfortable with a testing role.</p>
<p>I said I did not know much about testing and would prefer frontend, web development, or AI.</p>
<p>I did not get the offer.</p>
<p>I am not saying that was definitely why. But sitting in a Flask unit testing module two years later, understanding what I casually dismissed in that room — that landed.</p>
<p>The Finance Tracker, Sentiment Analyzer, and Emotion Detector came out of Course 5. First time I connected a real frontend to a Flask backend. First time I saw how AI output fits into an application as a feature rather than the whole thing.</p>
<hr />
<h3>Course 6 — Building GenAI powered applications</h3>
<p>This is where the ten projects came together. Image Captioner, Chatbot, Voice Assistant, Meeting Assistant, Translation Assistant, Job Application Coach — and the one I want to spend the most time on.</p>
<p>Let me be honest about a few things first.</p>
<p><strong>The BlenderBot problem</strong></p>
<p>The chatbot in the course used <code>BlenderBot</code> model from Meta. I want to say something clearly: in my experience, it was not BlenderBot. It was BlunderBot.</p>
<p>It did not answer questions the way I expected. The responses were off — sometimes irrelevant, sometimes just strange. I spent time trying to figure out if I had built it wrong before I realized the model itself was the issue. Using a better model would have changed the experience completely.</p>
<p>That was a useful lesson in its own way — the model matters as much as the application around it.</p>
<p><strong>The translation app detour</strong></p>
<p>The IBM translation API I was supposed to use was not accessible from my setup. So I found my own path.</p>
<p>I used <code>Whisper</code> for speech-to-text and <code>Piper</code> for text-to-speech. What I did not know going in: <code>Piper</code> requires downloading an <code>ONNX</code> model file separately. I did not know that. The app broke. I searched, figured it out, downloaded the file.</p>
<p>Then I found out Japanese voice models were not available in the configuration I was using. Then the audio format Piper produced was not compatible with the frontend.</p>
<p>Each of those was a small wall. I went over each one. The final app worked. It was not the one the course intended — but it was mine.</p>
<p><strong>The LangChain version issue</strong></p>
<p>This one cost me more time than anything else. The course imports used <code>langchain.chains</code>. In the current version of LangChain, that has moved to <code>langchain_classic</code>. The course materials had not been updated.</p>
<p>The application simply would not run. No obvious error message pointing at the real cause. I eventually found it — either downgrade the package version or update every import.</p>
<p>I updated the imports. This is the kind of thing that does not come up in passive learning — you encounter it only when you are actually building something.</p>
<p><strong>The Private RAG Application</strong></p>
<p>RAG — Retrieval-Augmented Generation — is when an AI application retrieves relevant information from your own documents before generating a response. Instead of relying purely on what the model was trained on, it pulls from a source you control.</p>
<p>Building this one felt different from the others.</p>
<p>It was the first project where I could see how a real AI system is actually structured — not just a model answering questions, but a pipeline. Documents go in, get processed, get stored, get retrieved, and the model uses them to respond. Local. Private. Yours.</p>
<p>That architecture made something click that the earlier courses had only described.</p>
<hr />
<h3><strong>The honest part — and the most important paragraph in this post</strong></h3>
<p>Most of these were guided projects. I followed course instructions. I used provided code as a starting point.</p>
<p>But here is what I will say clearly: wherever I could, I built my own version. I swapped APIs. I changed the frontend. I broke things and fixed them.</p>
<p>And even in the guided parts — practical implementation exposes gaps that passive learning hides.</p>
<p>Reading about LangChain imports does not teach you what happens when they break. Understanding RAG conceptually does not show you what building the pipeline actually feels like. You find out what you do not know only when the code does not run.</p>
<hr />
<h3>Day 5 is less about building fast and more about slowing down.</h3>
<p>Today, I’m revisiting everything I’ve learned so far — reviewing my work, filling gaps, and understanding things more deeply instead of just moving on.</p>
<p>I’m also starting to plan and explore what comes next: AI Agents and Practical Deep Learning.</p>
<p>But before jumping into another structured path, I want to build something independently first.<br />No tutorials. No step-by-step course.<br />Just a real problem, curiosity, and the tools I’ve learned so far.</p>
<hr />
<p><strong>What is next</strong></p>
<p>Phase one is done. The foundation is there.</p>
<p>Phase two is building without a guide. That is where I will find out what actually stuck.</p>
<p>I will write about it when I do — including the parts that do not work.</p>
<hr />
<p><strong>If you have built guided projects before — when did it start feeling like your own work? Was there a specific moment, or did it happen gradually?</strong></p>
<p>Drop it in the comments. I am genuinely trying to figure out where that line is.</p>
]]></content:encoded></item><item><title><![CDATA[I Thought I Knew Python. I Was Wrong — Here Is What Relearning It Actually Felt Like]]></title><description><![CDATA[I opened IBM Course 4 — Python for Data Science, AI and Development — fully expecting to breeze through it.
I had used Python before. In college. In personal projects. It was supposed to be the comfor]]></description><link>https://mohanbuilds.hashnode.dev/i-thought-i-knew-python-i-was-wrong-here-is-what-relearning-it-actually-felt-like</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-thought-i-knew-python-i-was-wrong-here-is-what-relearning-it-actually-felt-like</guid><category><![CDATA[Python]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[learning]]></category><category><![CDATA[webdev]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Tue, 05 May 2026 09:04:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/e7034b1c-b71b-40f3-840b-dea7090575f3.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I opened IBM Course 4 — Python for Data Science, AI and Development — fully expecting to breeze through it.</p>
<p>I had used Python before. In college. In personal projects. It was supposed to be the comfortable one.</p>
<p>Then <em><strong>**kwargs</strong></em> showed up.</p>
<hr />
<h3><strong>A quick timeline before I get into it</strong></h3>
<p>My previous post went up on May 2. After that, I finished IBM Course 3 on Prompt Engineering.</p>
<p>On May 3, I started Course 4 — the Python one. Finished a major portion of it the same day.</p>
<p>May 4, I wrapped it up.</p>
<p>Two days. But they did not feel easy.</p>
<hr />
<h3>This one was different from the start</h3>
<p>The earlier IBM courses — Introduction to AI, Generative AI, Prompt Engineering — were heavy on concepts. I could follow along, absorb the ideas, take notes.</p>
<p>This one required me to actually do things.</p>
<p>You cannot half-pay-attention your way through a coding module. The moment you try to rush it, you get stuck. And I got stuck more than I expected to.</p>
<p>That gap — between passively understanding something and actively using it — is something nobody really warns you about. I felt it clearly here.</p>
<hr />
<h3><strong>The moment it stopped feeling familiar</strong></h3>
<p>I was fine with <code>*args</code>. I had used it before. Pass in multiple positional arguments, collect them as a tuple — fine.</p>
<p>Then <code>**kwargs</code> came up.</p>
<p>Collect keyword arguments as a dictionary. I had never actually used this. I had probably seen it in someone else's code and skimmed past it. The syntax looked familiar enough that my brain filed it under "things I know."</p>
<p>It was not.</p>
<pre><code class="language-python">def introduce(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

introduce(name="John", role="Developer", learning="Python")
# name: John
# role: Developer
# learning: Python
</code></pre>
<p>It is not a complicated concept. But I had to stop, reread it, try it, and actually think about when you would want this over a regular dictionary parameter.</p>
<p>That pause told me something. There were gaps I had not accounted for.</p>
<hr />
<h3><strong>What I actually relearned</strong></h3>
<p>Beyond <code>**kwargs</code>, the course pushed me back through things I thought I had covered:</p>
<ul>
<li><p>Variables, data types, control structures — the bones of Python</p>
</li>
<li><p>Functions, including how to document them properly using docstrings and how they connect to the <code>help()</code> function (genuinely did not know this was a thing)</p>
</li>
<li><p>Parameter handling — <code>*args</code> for positional arguments, <code>**kwargs</code> for keyword arguments as a dictionary</p>
</li>
<li><p>Exception handling — and this is where it got messy</p>
</li>
</ul>
<hr />
<p><strong>The errors vs exceptions thing — I still have not fully resolved this</strong></p>
<p>I went in thinking I understood the difference. I came out less sure.</p>
<p>Technically, errors in Python are things like <code>SyntaxError</code> — problems the interpreter catches before your code even runs. Exceptions are runtime issues — <code>ValueError</code>, <code>TypeError</code>, <code>FileNotFoundError</code> — things that happen while the code is executing.</p>
<p>But in practice? The line gets blurry. Developers use the terms interchangeably all the time, and even experienced ones do not always handle exceptions properly.</p>
<p>Research on mobile app development found that around 80% of exception bugs cause serious problems like crashes or unstable behavior. That is not a beginner problem — that is an industry-wide one. [<a href="https://arxiv.org/pdf/1908.06567">arxiv</a>]</p>
<p>A study analyzing 16 open-source Java and C# projects found exception handling anti-patterns in every single one of them. Every. Single. One. [<a href="https://arxiv.org/pdf/1704.00778">arxiv</a>]</p>
<p>And it is not just academic research flagging this. Developers on platforms like [<a href="http://Dev.to">Dev.to</a>] have written about how one of the most common mistakes — especially among newer developers — is using exceptions as a mechanism for regular control flow, when exceptions are meant to signal genuinely abnormal conditions. [<a href="https://dev.to/be11amer/mastering-exception-handling-best-practices-and-common-pitfalls-1b7l">DEV Community</a>]</p>
<p>The bare <code>except</code> block in Python is one version of this — catching everything indiscriminately, including errors you never intended to handle, and silently hiding bugs in the process.</p>
<p>I got confused during the course. I still am, a little. I am leaving it here honestly rather than pretending I have a clean answer, because I think that is more useful.</p>
<hr />
<h3><strong>May 4 — finishing the course</strong></h3>
<p>The second day covered:</p>
<ul>
<li><p>Working with files and different file formats</p>
</li>
<li><p><code>pandas</code> and <code>NumPy</code> — first real exposure to these in a structured way</p>
</li>
<li><p>Basics of web scraping</p>
</li>
<li><p>Working with APIs in Python</p>
</li>
</ul>
<p>These felt like what the course was building toward. The fundamentals from day one started making sense in context here.</p>
<hr />
<h3><strong>The actual realization</strong></h3>
<p>There is a difference between familiarity and understanding.</p>
<p>I was familiar with Python. I had used it enough to feel comfortable. But familiarity is not the same as knowing why something works, or when to use one approach over another, or what happens when you get it wrong.</p>
<p>Relearning made that distinction very clear.</p>
<p>Going back to something you already "know" and finding gaps is uncomfortable. It is also — once you get past the initial deflation — one of the more useful things you can do.</p>
<hr />
<h3><strong>What I am walking away with</strong></h3>
<p>Familiarity is not the same as fluency. Assuming you know something is a good way to stop learning it.</p>
<p><code>**kwargs</code> is small. The lesson behind it is not.</p>
<p>Exception handling is something I need to sit with longer. I will come back to it.</p>
<hr />
<h3><strong>What I will try next</strong></h3>
<p>Projects. That is the only way any of this becomes real.</p>
<p>The courses gave me the foundation. Now I need to build something with it — break things, debug things, and find out what I actually retained versus what I just read.</p>
<p>I will share it when I do.</p>
<hr />
<p><strong>Have you ever gone back to something you thought you knew and found gaps you did not expect? How did you handle that feeling — push through, or start over?</strong></p>
<p>Drop it in the comments. Genuinely curious.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[I Am Starting Over in Public]]></title><description><![CDATA[That's the honest starting point.
I graduated, looked at my skills, and realized that a lot of what the real world is talking about — GenAI, prompt design, modern full-stack tools — either wasn't cove]]></description><link>https://mohanbuilds.hashnode.dev/i-am-starting-over-in-public</link><guid isPermaLink="true">https://mohanbuilds.hashnode.dev/i-am-starting-over-in-public</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[AI]]></category><category><![CDATA[MERN Stack]]></category><category><![CDATA[Career]]></category><dc:creator><![CDATA[Mohanragul]]></dc:creator><pubDate>Fri, 01 May 2026 18:38:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/69f1ba28ad6e531c7284faa5/e889a3b0-b215-4736-a06a-85d93a65938d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>That's the honest starting point.</h3>
<p>I graduated, looked at my skills, and realized that a lot of what the real world is talking about — GenAI, prompt design, modern full-stack tools — either wasn't covered in my coursework or went past me without landing.</p>
<p>I could have waited until I felt ready to talk about any of this.</p>
<p>Instead, I decided to relearn it in public.</p>
<hr />
<h3>Who I am</h3>
<p>Fresh engineering grad. Interested in AI and full-stack development, and currently figuring out how to get better at both at the same time.</p>
<p>I am not here to perform expertise I don't have. I am here to build, document what I learn, and eventually land a job that lets me keep doing this.</p>
<hr />
<h3>What I am relearning and building</h3>
<p>Four things are on my plate right now:</p>
<ul>
<li><p>AI/ML fundamentals — from the ground up, not just theory</p>
</li>
<li><p>MERN stack — building real full-stack projects</p>
</li>
<li><p>React → Next.js — making the transition properly</p>
</li>
<li><p>JavaScript → TypeScript — because I keep seeing it everywhere and I want to stop avoiding it</p>
</li>
</ul>
<p>These are not goals I set to sound ambitious. They are the gaps I noticed when I looked at job listings and honest with myself.</p>
<hr />
<h3>Where I am in the learning path</h3>
<p>I started with <em>Elements of AI</em> from the University of Helsinki — a good, low-pressure way to rebuild the foundation.</p>
<p>Then <em>Generative AI for Beginners</em> from Google.</p>
<p>Right now I am working through the IBM Applied AI Developer Professional Certificate. Three courses done:</p>
<ul>
<li><p>Introduction to AI ✅</p>
</li>
<li><p>Generative AI – Introduction and Applications ✅</p>
</li>
<li><p>Generative AI – Prompt Engineering Basics ✅</p>
</li>
</ul>
<p>Three more to go.</p>
<p>The prompt engineering course is where something actually clicked for me. I have been using ChatGPT and Claude for a while. I thought prompts were just — type what you need, maybe fix your grammar, get an answer. That was it.</p>
<p>Turns out prompts have types. Paradigms. Building blocks. There are tools built specifically to optimize them. There is an entire process called prompt engineering that I had seen mentioned a hundred times but never actually understood.</p>
<p>The fact that I specialized in AI in college and still missed this tells me everything about the gap between academic curricula and where the field actually is.</p>
<p>The Intro to AI course also introduced me to responsible AI — why it matters now and why it will matter more as these systems get bigger. That one I want to come back to in a future post.</p>
<hr />
<h3>What comes next</h3>
<p>Projects.</p>
<p>I will share what I build, what breaks, what I figure out, and what I wish someone had told me earlier. Not just polished final results — the messy middle too.</p>
<p>I will also share dev news, tools, and things I come across that seem worth passing on. This won't only be about my own work.</p>
<hr />
<h3>The honest goal</h3>
<p>I want to land a job in AI or full-stack development. I am not hiding that.</p>
<p>But I also want to keep growing after I get there. Building in public is how I plan to stay accountable to that — not just during the job hunt, but after it.</p>
<p>If you are somewhere in a similar phase — relearning, rebuilding, or just starting — I would genuinely like to know.</p>
<p><strong>What's one thing you wish your college had actually taught you about working in tech?</strong></p>
<p>Drop it in the comments. I am curious.</p>
<hr />
<p><code>#beginners</code> <code>#ai</code> <code>#webdev</code> <code>#career</code></p>
]]></content:encoded></item></channel></rss>