<?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.us-east-2.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>The Other Side of the Table: What 10 Developer Interviews Taught Me About the AI Gap</title>
      <dc:creator>Kanishaka Pranjal</dc:creator>
      <pubDate>Thu, 17 Sep 2026 11:51:15 +0000</pubDate>
      <link>https://dev.to/reykankp/the-other-side-of-the-table-what-10-developer-interviews-taught-me-about-the-ai-gap-2c21</link>
      <guid>https://dev.to/reykankp/the-other-side-of-the-table-what-10-developer-interviews-taught-me-about-the-ai-gap-2c21</guid>
      <description>&lt;p&gt;A year ago I was the candidate. I hijacked my own intro call at WeAssist.io, shared my screen, and &lt;a href="https://www.kanishakapranjal.com/blog/zero-users-one-job-offer-honest-post-mortem-ai-side-project" rel="noopener noreferrer"&gt;demoed FableWeaver until they hired me in 30 minutes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was recently promoted to Dev Team Lead at WeAssist.io, on top of my founding engineer role on WorkStackOS. The first thing the new title handed me was the other side of the table. We needed developer interns for WorkStackOS, and I was now the person asking the technical questions.&lt;/p&gt;

&lt;p&gt;Between August 27 and September 1, I ran 10 technical interviews alongside our operations manager. Forty minutes each: 30 for the interview, 10 for the debrief. Some started at 4:30 AM my time.&lt;/p&gt;

&lt;p&gt;After the very first one, once the candidate had left the call, I asked our operations manager: "I was not rude, right?" It was my first time interviewing anyone. I had been firing questions fast and could not tell if that was leadership or nerves.&lt;/p&gt;

&lt;p&gt;By the tenth interview, I had a script, a scoring habit, and one uncomfortable conclusion. Most candidates are not ready for what AI-first companies are actually hiring for. Their AI knowledge is thin, and their personal projects fall apart the moment I open a private browser tab.&lt;/p&gt;

&lt;p&gt;Here is what I saw. No names, because none of this is about a person. It is about a pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Script I Ended Up With
&lt;/h2&gt;

&lt;p&gt;By day three the interview had a shape:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Share your screen and open GitHub.&lt;/strong&gt; Contribution graph, switch the years. Open your best repo. Click on the commits. Scroll slowly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo.&lt;/strong&gt; Not a recorded video. If it is not deployed, run it locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I try to break it.&lt;/strong&gt; Open a private tab, log in with the same account, check if the cart is still there. Submit a one-character password. Click the terms and conditions link. "So I can use anyone's email to create an account, right?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate yourself 0 to 10 in agentic AI.&lt;/strong&gt; Then I test the number. What is a tool? What is an agent? Do you know RAG? What are evals?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The novel problem.&lt;/strong&gt; 100,000 documents. 50,000 are chapters of one interconnected book series. 50,000 are random. Build an assistant that knows chapter 2 matters in chapter 100. How?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The reading test.&lt;/strong&gt; I paste a link to a GraphRAG doc and say: read it, then answer again. Close your eyes if you need to think.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The twist.&lt;/strong&gt; Now the app has a dashboard with live data from a database. Users should talk to an assistant instead of clicking through the UI. What changes?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core values.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 7 has a one-sentence answer. Give the model a tool that calls the API. Almost nobody said it without a hint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 1: The Self-Rating Collapse
&lt;/h2&gt;

&lt;p&gt;"How confident are you in agentic AI, 0 to 10?" was the most useful question I asked all week, because the follow-up is where the number goes to die.&lt;/p&gt;

&lt;p&gt;One candidate with 11 months of professional experience and "AI" on every line of the resume rated himself 8.9. His first reaction to the phrase "agentic AI" had been: "The vibe coding you are telling?" Then: "Using AI means using the integrated IDE?" When I asked whether he knew tools, MCP, agents, and agent frameworks, the answer was no. By the end of the section he re-rated himself: "I will rate myself now 6 because the basic flows I don't know."&lt;/p&gt;

&lt;p&gt;Another rated himself 7 to 8 because "I can give very good prompt." When I clarified that I meant tool calling and MCP, he said: "Sir, I am new. I am new. So I will rate myself around 2."&lt;/p&gt;

&lt;p&gt;One candidate told me MCP stands for "model context processor."&lt;/p&gt;

&lt;p&gt;One candidate, asked about RAG, said he had not gone through deep learning and machine learning yet. RAG is not deep learning. It is a retrieval pipeline you can build in an afternoon.&lt;/p&gt;

&lt;p&gt;One candidate had three AI projects on the resume and a document-chat app built on Qdrant. Asked about evals: "Eval means evaluation of RAG or something, means I don't get it." Two minutes earlier he had told me "we have to evaluate the RAG."&lt;/p&gt;

&lt;p&gt;And the resume with AI everywhere? When I asked how the AI actually helped the automation, the honest answer was: it checks whether login succeeded by reading the DOM, and it extracts a CSS selector when the hard-coded ones fail. That is a fallback, not an AI system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 2: Everything Is RAG
&lt;/h2&gt;

&lt;p&gt;The live-data twist exposed the same reflex in almost everyone. The app has a dashboard, the data changes every minute, and the user wants to ask the assistant about their pending orders.&lt;/p&gt;

&lt;p&gt;The answers I got, across the twist and the novel problem before it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Build a Graph RAG of the pages and the data on the pages and provide that to our chatbot."&lt;/li&gt;
&lt;li&gt;"Can we keep updating the Graph RAG?"&lt;/li&gt;
&lt;li&gt;"As soon as a change occurs in data, we can log that change in our vector Graph RAG."&lt;/li&gt;
&lt;li&gt;"Load the page and save it in chunks, and then we can train the model on it." That one confuses retrieval with training.&lt;/li&gt;
&lt;li&gt;"Due to RAG, it doesn't hallucinate."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;RAG has become the hammer, and every problem looks like a document. Nobody thinks about the model reaching out to the system it lives in. The closest anyone got unprompted was "he can access that database through API calls or MCP, whatever." That is the right instinct. Everyone else needed me to say it: "What if we just ask the AI to do the API call?"&lt;/p&gt;

&lt;p&gt;Sometimes a complex thing needs a simple thing. A tool call. The model asks your API, your API answers, the model reads the answer. That is what agentic means. If you cannot explain that, do not rate yourself above a 4.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 3: Projects That Could Not Survive a Private Tab
&lt;/h2&gt;

&lt;p&gt;This is the part I care about most, and I will admit my bias up front. My own job offer came from &lt;a href="https://www.kanishakapranjal.com/blog/zero-users-one-job-offer-honest-post-mortem-ai-side-project" rel="noopener noreferrer"&gt;a side project with zero users&lt;/a&gt;. So I believe a personal project is the single most honest signal a candidate can give. It is the only thing on the resume nobody else assigned you.&lt;/p&gt;

&lt;p&gt;Here is what the personal projects looked like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commit history.&lt;/strong&gt; One project had five commits, all pushed in one dump after two to three weeks of building: "I did the whole project at a time. After that, I commit the whole project." Another had six: "I work on the complete project and then upload all of it to the GitHub." A third had 12 commits over three months. The ones with 40-plus commits had messages nobody could read six months later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demos.&lt;/strong&gt; One candidate offered a recorded video instead of a live run, because the project was two months old and "I don't feel that much confident that it will run or not." When he ran it, he forgot to activate the virtual environment. Then the upload broke. "Something has broke."&lt;/p&gt;

&lt;p&gt;One joined from a company laptop and could not build his own personal project in Docker. "I cannot say confirm because I had not run this project."&lt;/p&gt;

&lt;p&gt;Two candidates had backends on Render's free tier that were asleep when the demo started. One had set up a cron to keep it warm and turned it off because he was about to hit the monthly hour limit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Breaking the demo.&lt;/strong&gt; On one e-commerce site, OTP was dead, the terms and conditions link went nowhere, there was no email verification, and the cart lived in browser localStorage, so it vanished when I opened a private tab. He also forgot the password to his own test account.&lt;/p&gt;

&lt;p&gt;On a chess platform, I asked the candidate to create a room and join it from a private tab with the same account. "So you are battling yourself with the same ID. What do you think about it?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data.&lt;/strong&gt; A railway assistant that ran on a 2017 CSV because there was no free real-time API. A flight booking system where Mumbai to Delhi returned nothing, because no flights had been added on that route.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Users.&lt;/strong&gt; Across all ten candidates, the number of personal projects with a real user who was not a friend was zero. The only real users belonged to client work and internships: a complaint system deployed across 100-plus service centers, a job-application tool with 20-plus users on a subscription, a management app for one local gym. Real, but not personal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ownership.&lt;/strong&gt; One candidate listed three client projects under "Projects." My first question was: "Do you know the difference between a project and work experience?" He said a project is a subset of work experience. For me that was a no from the start, and I said so in the debrief. I had read the resume thinking, wow, he built that for himself. He had not.&lt;/p&gt;

&lt;p&gt;Our operations manager put it best in one of the debriefs: when candidates for AI roles are asked for a personal project and cannot show anything outside of work, the doubts start right there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 4: Fundamentals You Studied Last Semester
&lt;/h2&gt;

&lt;p&gt;I did not ask LeetCode. I asked about things candidates told me they were good at.&lt;/p&gt;

&lt;p&gt;One candidate claimed strong DBMS experience. I asked for ACID properties. He said atomicity means two transactions should not interfere with each other, which is isolation. Then he said "A for availability." I gave him the letters. He gave the same definition for atomicity and isolation again and could not attempt durability.&lt;/p&gt;

&lt;p&gt;I told him why I cared. WorkStackOS has a ledger. If we do not have atomicity, the ledger fails. A $100 transfer either goes through or it does not. It cannot vanish in the middle.&lt;/p&gt;

&lt;p&gt;The same candidate declined the whiteboard twice when I asked for the Alice and Bob flow. "Can I explain verbally, sir? It will be better." It was not.&lt;/p&gt;

&lt;p&gt;In the debrief I said what I actually felt. I gave him so many chances to talk about what he knows, and he could not tell the basic thing. Not the AI thing. The basic thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern 5: Nobody Googled Us
&lt;/h2&gt;

&lt;p&gt;Asked what he knew about the company, one candidate said it is "an outsourcing company for the employees and the employee can work remotely." That is the description our operations manager had given him the day before, plus the LinkedIn header.&lt;/p&gt;

&lt;p&gt;One candidate had researched our time zone. One.&lt;/p&gt;

&lt;p&gt;And one candidate did something nobody else did. He messaged me on LinkedIn before the interview and asked how to prepare. I told him: personal project. He showed up with two deployed projects, found a sleeping Render service in the logs when I asked him to locate the issue himself, and sat through more than twenty technical questions. Another candidate that week got about five, and the technical round was over in minutes. Not because I was harsher. Because he had something to show, so I had something to ask.&lt;/p&gt;

&lt;p&gt;For contrast, our AI resume screener had ranked one candidate at a 90 percent match with a 99 percent assessment score. The resume mentioned TypeScript, React, and Supabase, and Supabase was in the job description. Asked how much she knew about LLMs and agentic AI: "Currently I have no idea in this topic." The keyword match got her the interview. It could not get her through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Five Who Advanced Did Differently
&lt;/h2&gt;

&lt;p&gt;Five of ten went to the founders' round. Not one of them was flawless. Here is what they had in common.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They could explain their own pipeline end to end.&lt;/strong&gt; One candidate walked me through hybrid retrieval: dense embeddings plus BM25, rerank to 15 chunks, cross-encoder down to the top 5, Gemini with a Groq fallback. He had zero web development experience for a Next.js role. He still advanced, because when I asked about GraphRAG he said "No idea," read the doc, and explained it back correctly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They learned in the room.&lt;/strong&gt; A third-year student read an unfamiliar GraphRAG article under time pressure and explained why relationships matter for "who was X and what did he do and why," which is exactly what the plain-RAG answers missed. When I told him to close his eyes and think, he did. He did not panic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They debugged live.&lt;/strong&gt; Sleeping service, stale key, failed test case. He opened the logs and found it. I told him I understood. I have failed the same way many times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They had shipped something real, somewhere.&lt;/strong&gt; A complaint management system replacing an Excel process across five states. OTP email verification actually implemented, not planned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They were honest.&lt;/strong&gt; "I don't want to lie and say I'm very confident. But I'm actually willing to learn." That candidate had tried BERT for a recommendation engine, measured the results, and switched to cosine similarity because it worked better. That is engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honesty, plus something runnable, plus the ability to learn on the spot. That beat every keyword-stuffed resume of the week.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned About Interviewing
&lt;/h2&gt;

&lt;p&gt;I was new at this too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Depth is gated by the candidate.&lt;/strong&gt; I can only dig as deep as the project allows. No project, no depth, short interview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The reading test stays.&lt;/strong&gt; Pasting a doc mid-interview and asking for a revised answer showed me more in five minutes than any question about experience. Our operations manager called it trial by fire. It is now a permanent part of how I interview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Close your eyes.&lt;/strong&gt; The moment a candidate starts typing, they are searching. Asking them to close their eyes and think produced better answers and told me who could handle pressure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time is the real cost.&lt;/strong&gt; Several candidates said they could reach an intermediate level in agentic AI in three to four weeks. I believed them. The question in the debrief was different: could we afford three to four weeks? For an intern who is supposed to multiply the team, that was usually the whole decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set the table.&lt;/strong&gt; We now tell every candidate before the call: have your GitHub and a live demo ready. If it is not ready, the interview ends early.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  If You Are Interviewing in 2026
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Warm up your demo the morning of.&lt;/strong&gt; Ping your free-tier backend with a cron. Read your own README. Run it once before the call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit as you build.&lt;/strong&gt; Five commits for three weeks of work tells me you either did not iterate or you are hiding the iteration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be explicit about ownership.&lt;/strong&gt; If it was client or contract work, label it that way. A resume that blurs the line reads as padding, and the next question will be: remove what the company did, what did you build from scratch?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate yourself one point lower than you want to.&lt;/strong&gt; The follow-up question is coming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn the vocabulary.&lt;/strong&gt; Tool. Agent. MCP is Model Context Protocol. RAG is retrieval, not training. Evals. Observability. This is a weekend of reading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not everything is RAG.&lt;/strong&gt; If the data is live, the answer is a tool call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assume I will open a private tab.&lt;/strong&gt; Verify emails. Persist state server-side. Make the terms link go somewhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get one real user.&lt;/strong&gt; One person who is not your friend. It changes every answer you give.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask how to prepare.&lt;/strong&gt; The one candidate who asked had the best interview of the week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;There is no cost excuse.&lt;/strong&gt; The Gemini API key is free for development. You will not max it out. There is no reason left for a 2026 project to have no AI feature.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A year ago, a side project with zero users got me hired in 30 minutes. This month I watched ten people sit where I sat. The ones who got through were not the ones with the best resumes. They were the ones who could run their thing, explain it, break it in front of me, and say "I don't know" without flinching.&lt;/p&gt;

&lt;p&gt;Build something. Keep it running. Know why it works. That is the whole interview.&lt;/p&gt;

</description>
      <category>career</category>
      <category>developers</category>
      <category>interview</category>
      <category>management</category>
    </item>
    <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>
