<?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: Kanishaka Pranjal</title>
    <description>The latest articles on DEV Community by Kanishaka Pranjal (@reykankp).</description>
    <link>https://dev.to/reykankp</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%2F1194217%2F91c3070d-1054-424b-8d62-ce6b8e6c5e82.jpg</url>
      <title>DEV Community: Kanishaka Pranjal</title>
      <link>https://dev.to/reykankp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reykankp"/>
    <language>en</language>
    <item>
      <title>Zero Users, One Job Offer: The Honest Post-Mortem of My AI Side Project</title>
      <dc:creator>Kanishaka Pranjal</dc:creator>
      <pubDate>Mon, 30 Mar 2026 13:49:16 +0000</pubDate>
      <link>https://dev.to/reykankp/zero-users-one-job-offer-the-honest-post-mortem-of-my-ai-side-project-211m</link>
      <guid>https://dev.to/reykankp/zero-users-one-job-offer-the-honest-post-mortem-of-my-ai-side-project-211m</guid>
      <description>&lt;p&gt;This is the story of how I spent seven months building an AI storytelling app, completely failed to market it, gave up on it in frustration, and still consider it the most successful failure of my career.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Weekend Grind (January to July 2025)
&lt;/h2&gt;

&lt;p&gt;At the start of 2025, I was in my 8th semester of B.Tech, juggling a flexible remote internship during the week. On paper, I was building my resume. In reality, the atmosphere was bleak. I was taking on freelance gigs just to stay afloat, and the looming dread of graduation without a full-time role lined up was a heavy physical weight.&lt;/p&gt;

&lt;p&gt;I knew that if I didn't land a job soon, the frustration was going to spiral. So, &lt;a href="https://dev.to/projects/fableweaver-ai"&gt;FableWeaver.ai&lt;/a&gt; became my weekend obsession. Every Saturday and Sunday for seven months, I locked myself in to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mental Anchor &amp;amp; The Inspiration
&lt;/h2&gt;

&lt;p&gt;Coding a massive full-stack Next.js/TypeScript application on top of a weekday internship and 4 to 5 hours of daily interview prep is a fast track to burnout. To survive, I built strict boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, I built a physical anchor.&lt;/strong&gt; Every morning, I hit the gym. Over 14 months, that daily discipline helped me drop from 83kg to a lean 64kg. It became my mental fortress, keeping the anxiety at bay and building the raw discipline I needed to code through the weekends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, I refused to give up my hobbies.&lt;/strong&gt; No matter how deep I was in the codebase, I carved out at least an hour every day to unplug and read web novels like &lt;em&gt;Omniscient Reader's Viewpoint&lt;/em&gt; and &lt;a href="https://www.amazon.in/Mother-of-Learning/dp/B0CHSJ19J9" rel="noopener noreferrer"&gt;&lt;em&gt;Mother of Learning&lt;/em&gt;&lt;/a&gt;. But those stories weren't just an escape; they were the blueprint.&lt;/p&gt;

&lt;p&gt;I was building FableWeaver for the community that raised me. I genuinely love these stories, and I have massive respect for the communities of readers and writers surrounding them. I wanted to give them a platform where AI characters could actually remember massive amounts of lore and interact autonomously.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Trenches
&lt;/h2&gt;

&lt;p&gt;Building FableWeaver forced me to solve problems that no basic tutorial covers. The hardest hurdle was what I call the "Goldfish Effect." &lt;/p&gt;

&lt;p&gt;The deeper a story went, the more the AI lost the plot arc. Imagine reading a 50-chapter fantasy book. In chapter 2, the author reveals a dark secret about the villain. But by chapter 15, the AI generating the story has completely forgotten the villain's motives and suddenly makes him a friendly barista serving the hero coffee. The context window just buckles under the weight of the lore.&lt;/p&gt;

&lt;p&gt;Fixing that (building complex context management systems to keep the AI anchored to the truth) took months of trial and error. It was brutal, but it forced me to actually engineer, not just write API wrappers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Marketing Wall &amp;amp; The Post-Mortem
&lt;/h2&gt;

&lt;p&gt;By July, the product was "done." It featured multiple AI agents interacting via &lt;a href="https://supabase.com/docs/guides/realtime" rel="noopener noreferrer"&gt;Supabase Realtime&lt;/a&gt; and layered context injection. It was technically sophisticated, but invisible.&lt;/p&gt;

&lt;p&gt;My marketing was a disaster. The bitter irony of FableWeaver is that the exact community I built it for—the readers and writers I loved—completely rejected it. I spent weeks lurking in Discord servers, desperately dropping links and pitching the app. Instead of welcoming the tool, I got swiftly hit with the ban hammer by mods for self-promotion.&lt;/p&gt;

&lt;p&gt;If I had to do it over, I would not have spent seven months building in absolute silence. I would have built in public from day one, shared the technical struggles of managing AI context on Twitter, and asked writers for feedback before I ever wrote a line of code. Dropping a finished link into a chatroom is not community building; it is trespassing.&lt;/p&gt;

&lt;p&gt;I lacked the resources and the audience to push it further. Exhausted, feeling the sting of rejection from my own community, and sitting at zero users, I looked at the finished product and did something rare in the "hustle" world: &lt;em&gt;I gave up.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The 30-Minute Plot Twist
&lt;/h2&gt;

&lt;p&gt;My primary reason for building FableWeaver wasn't to become a startup founder; it was to get a real job.&lt;/p&gt;

&lt;p&gt;In mid-August, shortly after graduating, I hit a breaking point with standard job applications. Out of sheer frustration, I built a custom AI Agent web app in a single day to completely automate my cold email outreach (a wild story for another time). That agent landed me an interview for an AI Engineer role at &lt;a href="https://weassist.io" rel="noopener noreferrer"&gt;WeAssist.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I wasn't interviewing with another engineer; I was sitting down with the Founder and the Product Manager. They needed someone who could bring deep AI knowledge to the table to actually build out their vision.&lt;/p&gt;

&lt;p&gt;I didn't wait for them to ask me abstract LeetCode questions. I intentionally hijacked the conversation. I wanted to show them what I could build and exactly how I utilized AI to do it.&lt;/p&gt;

&lt;p&gt;I pulled up the FableWeaver dashboard and took over the demo. I didn't even look for an "aha" moment from them; I was entirely laser-focused on showing the live product. I walked them through the autonomous AI group chats and explained how I solved the chapter context-loss problem under the hood. They saw the thousands of hours of weekend effort I had poured into the platform.&lt;/p&gt;

&lt;p&gt;They were so impressed, they hired me in under 30 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real ROI
&lt;/h2&gt;

&lt;p&gt;Today, as an AI Engineer, I can confidently say that &lt;a href="https://dev.to/projects/fableweaver-ai"&gt;FableWeaver.ai&lt;/a&gt; served its true purpose.&lt;/p&gt;

&lt;p&gt;It might have zero users, but the skills transferred exactly. Handling complex agents, knowing exactly when to use a tool call, managing context tokens, and optimizing API costs for web apps are second nature to me now. Why? Because I already bled over those exact issues on my own time.&lt;/p&gt;

&lt;p&gt;FableWeaver will likely never have a paying user. But a project with zero users is not a failure if it gets you exactly where you need to go. I didn't build a startup. I built a 2,000-hour technical interview that nobody could ignore.&lt;/p&gt;

&lt;p&gt;I didn't get the users, but I got the job. And honestly, that was the point all along.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>career</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Stop Building To-Do Lists: How My Passion Project for Web Novels Taught Me AI Engineering</title>
      <dc:creator>Kanishaka Pranjal</dc:creator>
      <pubDate>Mon, 16 Mar 2026 16:13:43 +0000</pubDate>
      <link>https://dev.to/reykankp/stop-building-to-do-lists-how-my-passion-project-for-web-novels-taught-me-ai-engineering-15c7</link>
      <guid>https://dev.to/reykankp/stop-building-to-do-lists-how-my-passion-project-for-web-novels-taught-me-ai-engineering-15c7</guid>
      <description>&lt;p&gt;In 2026, everyone is building "Chat with your PDF" apps and AI Resume Screeners. These are the new to-do lists. Tutorial projects that prove you can call an API but not much else.&lt;/p&gt;

&lt;p&gt;I was stuck in that loop too. Then I started building for an obsession I've had since I was a kid: stories.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Got Here
&lt;/h2&gt;

&lt;p&gt;I was 13 when I wrote my first lines of QBasic. But my obsession wasn't code. It was worlds. Cartoons first, then anime and manhwa (&lt;em&gt;Solo Leveling&lt;/em&gt; had me tracking power systems across 200+ chapters like a database), and eventually web novels. By the time I hit college at IIIT Sri City, I was reading &lt;em&gt;Omniscient Reader's Viewpoint&lt;/em&gt; and &lt;a href="https://www.amazon.in/Mother-of-Learning/dp/B0CHSJ19J9" rel="noopener noreferrer"&gt;&lt;em&gt;Mother of Learning&lt;/em&gt;&lt;/a&gt;. Stories with thousands of chapters, hundreds of characters, and lore systems deep enough to crash a context window.&lt;/p&gt;

&lt;p&gt;I didn't just want to read these stories. Since childhood, I'd wonder what it would be like to actually &lt;em&gt;talk&lt;/em&gt; to these characters. And by 2020, I had entire worlds spinning in my head that I wanted to write down, but my writing couldn't keep up with my imagination.&lt;/p&gt;

&lt;p&gt;So I built the tool I wished existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  FableWeaver.ai
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/projects/fableweaver-ai"&gt;&lt;strong&gt;FableWeaver.ai&lt;/strong&gt;&lt;/a&gt; is an AI-powered platform for writing interactive web novels. Not a wrapper around a chat API, but an actual system where characters remember their lore across hundreds of chapters and can talk to each other autonomously.&lt;/p&gt;

&lt;p&gt;Building it forced me into two engineering problems that no tutorial covers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: LLMs Forget Everything
&lt;/h2&gt;

&lt;p&gt;I call this the Goldfish Effect. Most student AI projects work fine for short documents. But feed an LLM a 200-chapter novel and it forgets the protagonist's hidden motive from Chapter 2 by the time you hit Chapter 50. The context window just isn't big enough to hold an entire world.&lt;/p&gt;

&lt;p&gt;My first instinct was basic &lt;a href="https://cloud.google.com/use-cases/retrieval-augmented-generation" rel="noopener noreferrer"&gt;RAG&lt;/a&gt;: retrieve relevant chunks and stuff them into the prompt. That works for documentation search. It does not work for narrative, where foreshadowing from 30 chapters ago matters as much as what happened last paragraph.&lt;/p&gt;

&lt;p&gt;So I built a layered summary system instead. Three tiers of context, each serving a different purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;World lore:&lt;/strong&gt; the rules of the universe, character backstories, magic systems. Static. Never changes unless the author edits it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arc summaries:&lt;/strong&gt; a compressed version of the current ~10-chapter plot arc. Updated every few chapters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chapter recap:&lt;/strong&gt; a detailed summary of the immediately preceding chapter. Regenerated every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the AI writes a new chapter, it gets all three layers injected into the prompt. It knows the world, it knows the current plot arc, and it knows what just happened.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Fetch the three context layers for prompt injection&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;layers&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;supabase&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;context_layers&lt;/span&gt;&lt;span class="dl"&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;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type, content&lt;/span&gt;&lt;span class="dl"&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;in&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;world_lore&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;arc_summary&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chapter_recap&lt;/span&gt;&lt;span class="dl"&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;order&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worldLore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;layers&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;world_lore&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arcSummary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;layers&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;arc_summary&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lastChapter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;layers&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chapter_recap&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)?.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`World: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worldLore&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
Current Arc: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;arcSummary&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
Previous Chapter: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;lastChapter&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;

Continue the story. Write Chapter &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;currentChapter&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Problem 2: Characters That Talk to Each Other
&lt;/h2&gt;

&lt;p&gt;While most people build 1-on-1 chatbots, I wanted a full cast that could argue with each other. And with the reader.&lt;/p&gt;

&lt;p&gt;Each character is its own AI agent with a system prompt that locks down their voice, their secrets, and their constraints. A brooding anti-hero gets &lt;em&gt;"Never agree easily. Question motives. Use short sentences."&lt;/em&gt; A court scholar gets &lt;em&gt;"Speak formally. Reference historical precedents. Never use contractions."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The tricky part was orchestration. I wired it up with &lt;a href="https://supabase.com/docs/guides/realtime" rel="noopener noreferrer"&gt;Supabase Realtime&lt;/a&gt; so the agents run in a shared channel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user drops a message into the group chat.&lt;/li&gt;
&lt;li&gt;The hero agent responds.&lt;/li&gt;
&lt;li&gt;The rival agent "hears" the response, runs it through a personality-weighted prompt, and decides whether to interject or stay quiet.&lt;/li&gt;
&lt;li&gt;A turn-taking manager prevents infinite agent loops. This was a real problem in early builds. Two agents would just argue forever.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result is a conversation that feels alive. You're not chatting with a bot; you're in a room with characters who have their own agendas.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Broke
&lt;/h2&gt;

&lt;p&gt;Two things nearly killed the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary decay.&lt;/strong&gt; I initially had the AI summarize the &lt;em&gt;previous summary&lt;/em&gt; every few chapters. Classic shortcut. By chapter 20, it was like a game of telephone. The plot had hallucinated into something unrecognizable. A character's betrayal got softened into a "disagreement," key plot points vanished entirely. I fixed this by anchoring every 5th summary back to the original world lore, so the summaries could never drift too far from ground truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Character bleed.&lt;/strong&gt; After about 10 messages in the group chat, every character started sounding the same. Polite, helpful, agreeable. Turns out LLMs have a strong gravitational pull toward a "default helpful assistant" voice. I had to fight this with negative prompting: explicitly telling each agent what they would &lt;em&gt;never&lt;/em&gt; say or do. That made the difference between a cast of identical chatbots and characters with actual friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;My first shipped project was &lt;a href="https://good-will-2-0.vercel.app/" rel="noopener noreferrer"&gt;GoodWill&lt;/a&gt;, a messy MERN stack app connecting NGOs with donors. Three organizations actually used it. The tech was barely held together, but it taught me something no tutorial ever did: a shipped, imperfect product is worth more than a perfect one that never leaves localhost.&lt;/p&gt;

&lt;p&gt;FableWeaver was the same lesson at a harder difficulty. It taught me context window management, multi-agent orchestration, and real-time state management. Not because I was following a curriculum, but because I needed to solve these problems to make my thing work.&lt;/p&gt;

&lt;p&gt;In 2026, the bar has moved. Recruiters don't care that you can call an API. They want to see that you can manage state, handle latency, and keep an AI system coherent over time. You learn that by building something you actually care about, something where cutting corners means &lt;em&gt;your own experience&lt;/em&gt; gets worse.&lt;/p&gt;

&lt;p&gt;Find the gap in your hobbies. Build the bridge.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.kanishakapranjal.com/blog/stop-building-todo-lists-passion-project-ai" rel="noopener noreferrer"&gt;kanishakapranjal.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>hobbies</category>
      <category>novel</category>
    </item>
    <item>
      <title>The True Mother of Learning</title>
      <dc:creator>Kanishaka Pranjal</dc:creator>
      <pubDate>Wed, 04 Mar 2026 08:04:32 +0000</pubDate>
      <link>https://dev.to/reykankp/the-true-mother-of-learning-20nn</link>
      <guid>https://dev.to/reykankp/the-true-mother-of-learning-20nn</guid>
      <description>&lt;p&gt;If you had to answer the question, &lt;strong&gt;"What is the mother of learning?"&lt;/strong&gt; what would you say?&lt;/p&gt;

&lt;p&gt;It is a slightly philosophical question, and the answer varies. Some might say patience. Others might say curiosity. For me, &lt;strong&gt;the absolute mother of learning is applying.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Quick aside for the fantasy fans:&lt;/strong&gt; &lt;a href="https://www.amazon.in/Mother-of-Learning/dp/B0CHSJ19J9" rel="noopener noreferrer"&gt;Mother of Learning&lt;/a&gt; is a legendary web novel where the protagonist masters magic by reliving a one-month time loop hundreds of times. The principle is simple: progressive repetition, applied relentlessly, until mastery.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Universally, &lt;strong&gt;the core of human skill acquisition is progressive repetition&lt;/strong&gt;. We try something, we fail, we adjust our approach, and we try again. We loop through the problem until it clicks.&lt;/p&gt;

&lt;p&gt;The most fascinating part about this concept? &lt;strong&gt;That is exactly how Artificial Intelligence learns, too.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human and Machine Parallel
&lt;/h2&gt;

&lt;p&gt;When we look at Machine Learning, models go through &lt;strong&gt;"epochs"&lt;/strong&gt;: massive cycles of progressive repetition. They ingest data, make a prediction, calculate the error, adjust their parameters, and repeat.&lt;/p&gt;

&lt;p&gt;Whether human or machine, &lt;strong&gt;mastering a new skill requires looping through the data&lt;/strong&gt; until the patterns make sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  My AI Journey: From Curiosity to Production
&lt;/h2&gt;

&lt;p&gt;My own journey into the world of AI mirrored this exact process. Back in 2022, I didn't start with complex architectures. &lt;strong&gt;I started simply as a curious user&lt;/strong&gt; messing around in the OpenAI Playground.&lt;/p&gt;

&lt;p&gt;I was hooked. I spent my weekends reading articles, consuming documentation, and testing prompts. Soon, I was in the Playground &lt;strong&gt;at least five times a week&lt;/strong&gt;, pushing the limits of what the models could generate.&lt;/p&gt;

&lt;p&gt;But I realized early on—whether I was 13 writing my first lines of QBasic or later building full-stack applications—&lt;strong&gt;a shipped, imperfect product teaches you more than a polished tutorial ever could.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used progressive repetition to go from testing basic prompts to &lt;strong&gt;engineering actual products&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice-based AI:&lt;/strong&gt; Integrating OpenAI's Realtime API and WebRTC to build interview simulators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generative Storytelling:&lt;/strong&gt; Leveraging the Gemini API for platforms like &lt;strong&gt;FableWeaver.ai&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecting the Future
&lt;/h2&gt;

&lt;p&gt;Fast forward to today, and that initial curiosity has evolved into &lt;strong&gt;my daily reality as an AI Engineer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I went from testing prompts to &lt;strong&gt;building entire platforms from scratch&lt;/strong&gt;. Today, my work revolves around architecting &lt;strong&gt;AI-powered full-stack systems&lt;/strong&gt; with &lt;strong&gt;Next.js, TypeScript, and AWS&lt;/strong&gt;. I build platforms where AI handles the operational grunt work so humans can focus on the work that requires actual judgment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;If you want to understand Artificial Intelligence, &lt;strong&gt;you cannot just read about it&lt;/strong&gt;. You have to get your hands dirty.&lt;/p&gt;

&lt;p&gt;Find a tool, hit the API rate limit, figure out why your WebSocket dropped, and &lt;strong&gt;build it better&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://www.kanishakapranjal.com/blog/the-true-mother-of-learning" rel="noopener noreferrer"&gt;kanishakapranjal.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mother of learning is applying.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's discuss:&lt;/strong&gt; What is one project you "applied" yourself to that taught you more than any book ever did? Drop it in the comments!&lt;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
