<?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: Tanay Dwivedi</title>
    <description>The latest articles on DEV Community by Tanay Dwivedi (@tanay_dwivedi9098).</description>
    <link>https://dev.to/tanay_dwivedi9098</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%2F2818945%2F79d1db89-beae-4352-a0d1-0b966ca2b64b.png</url>
      <title>DEV Community: Tanay Dwivedi</title>
      <link>https://dev.to/tanay_dwivedi9098</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanay_dwivedi9098"/>
    <language>en</language>
    <item>
      <title>Can WASM revive browser based gaming?</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sat, 10 Oct 2026 11:39:48 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/can-wasm-revive-browser-based-gaming-42io</link>
      <guid>https://dev.to/tanay_dwivedi9098/can-wasm-revive-browser-based-gaming-42io</guid>
      <description>&lt;p&gt;This week, a few leakers leaked GTA V and made it possible to run it in a browser. While I don't endorse or support piracy, what made me curious was the technology used to make a game developed in C/C++ run in a browser. And the answer I found was &lt;strong&gt;(WASM)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What WASM does is allow code written in languages like C/C++ to be compiled into a format that browsers can execute. A few months ago, I don't remember exactly when, perhaps the same group also leaked GTA Vice City and made it available to run in a browser using WASM.&lt;/p&gt;

&lt;p&gt;This makes me wonder, why did browser-based gaming decline? Why did Adobe discontinue Flash Player, which was once one of the key technologies for browser-based gaming?&lt;/p&gt;

&lt;p&gt;This Sunday, I'll be hyperfixating on WASM and its related technologies.&lt;/p&gt;

&lt;p&gt;Until then, tell me what you think about it in comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>👩🏻‍💻📓✍🏻💡 Week 3 learnings</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Mon, 05 Oct 2026 11:53:34 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/week-3-learnings-3hb4</link>
      <guid>https://dev.to/tanay_dwivedi9098/week-3-learnings-3hb4</guid>
      <description>&lt;p&gt;Last week was hectic, especially the weekend, as I was juggling one of my freelance projects alongside the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity AI Challenge&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Design and Analysis of Algorithms Revision
&lt;/h2&gt;

&lt;p&gt;Just a few weeks ago, I started learning one of the core subjects in computer science, &lt;strong&gt;Design and Analysis of Algorithms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After a few days, life happened, and I had to prioritize other stuffs. Still, last week, I decided to take the initiative to brush up on the concepts I had previously studied and learn a few new ones.&lt;/p&gt;

&lt;p&gt;I revised different types of algorithm analysis and some of the concepts I had covered initially. After that, I started learning new sorting algorithms, including &lt;strong&gt;Heapsort&lt;/strong&gt; and &lt;strong&gt;Quicksort&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 AI Terminology
&lt;/h2&gt;

&lt;p&gt;Like most people in tech, I also pretend to fully understand AI terminology like &lt;strong&gt;MCP, RAG, Transformers, temperature, context windows&lt;/strong&gt;, and so on.&lt;/p&gt;

&lt;p&gt;But, as you might have guessed, I didn't actually understand all of them as well as I thought I did. 😅&lt;/p&gt;

&lt;p&gt;So last week, I went back to the basics and brushed up on some of these concepts.&lt;/p&gt;

&lt;p&gt;I also started learning &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; in more detail. I am still exploring it, but I now have a much better understanding of what it is, why it exists, and how it differs from concepts like RAG.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏆 Sanity AI Challenge
&lt;/h2&gt;

&lt;p&gt;I signed up for and participated in the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity AI Challenge&lt;/a&gt;, where I built &lt;a href="https://money-verse-orpin.vercel.app/" rel="noopener noreferrer"&gt;MoneyVerse&lt;/a&gt;, a financial literacy game for kids.&lt;/p&gt;

&lt;p&gt;You can read the full write-up about the project &lt;a href="https://dev.to/tanay_dwivedi9098/moneyverse-a-financial-literacy-game-for-kids-553m"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One mistake I realized I might have made was related to how I structured the Sanity Studio. Some of the documentation seemed to suggest that the Studio shouldn't be embedded directly into the app when using a framework.&lt;/p&gt;

&lt;p&gt;Unfortunately, I realized this just a few minutes before the deadline 😭.&lt;/p&gt;

&lt;p&gt;I also planned to build another project called &lt;strong&gt;Budget-Bites&lt;/strong&gt; for Path 1 of the Sanity AI Challenge. The idea was to create an app that would help students achieve their health goals while staying within a budget. &lt;/p&gt;

&lt;p&gt;Unfortunately, I couldn't complete it before the deadline. I did, however, start working on it and have kept the incomplete version of the project on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ My Work
&lt;/h2&gt;

&lt;h3&gt;
  
  
  💰 MoneyVerse
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://money-verse-orpin.vercel.app/" rel="noopener noreferrer"&gt;MoneyVerse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/tanay9098/Money_verse" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Money_verse&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🥗  Budget-Bites
&lt;/h3&gt;

&lt;p&gt;An incomplete project I started for &lt;strong&gt;Path 1 of the Sanity AI Challenge&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/tanay9098/Budget_Bites" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Budget_Bites&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Resources I Used
&lt;/h2&gt;

&lt;p&gt;Here are some of the resources I used for learning and building these projects:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/_g2CgoTcVME?start=1995" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/xprADgRU28w" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/z6DY_YSdyww?start=9617" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.sanity.io/learn" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;sanity.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🚀 MoneyVerse: a financial literacy game for kids.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sun, 04 Oct 2026 06:58:26 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/moneyverse-a-financial-literacy-game-for-kids-553m</link>
      <guid>https://dev.to/tanay_dwivedi9098/moneyverse-a-financial-literacy-game-for-kids-553m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path Two: Vibe-Code Something Strange&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎮 What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;MoneyVerse&lt;/strong&gt;, a financial-literacy game for kids aged 8–12. Pip, a piggy-bank guide, walks players through three missions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🛍️ &lt;strong&gt;Needs vs. Wants:&lt;/strong&gt; A 24-coin outing budget with trade-offs and opportunity cost.&lt;/li&gt;
&lt;li&gt;🐷 &lt;strong&gt;Savings Quest:&lt;/strong&gt; A jar that starts at 100 coins and aims for a 150-coin bicycle, with a simple-interest example.&lt;/li&gt;
&lt;li&gt;🍋 &lt;strong&gt;Lemonade Stand:&lt;/strong&gt; Supply costs, pricing, and profit = revenue − expenses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js framework (App Router) with React 19 and TypeScript, Tailwind CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CMS:&lt;/strong&gt; Sanity v6, with the Studio embedded at &lt;code&gt;/studio&lt;/code&gt;. It uses &lt;code&gt;next-sanity&lt;/code&gt;, &lt;code&gt;@sanity/client&lt;/code&gt;, GROQ queries, and &lt;code&gt;defineLive&lt;/code&gt; for live content updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; There are no accounts. Progress is saved in the player's own browser with &lt;code&gt;localStorage&lt;/code&gt;and it will reset if browsing history or browser cache is deleted.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 Studio Customization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Schemas for &lt;code&gt;lesson&lt;/code&gt; and &lt;code&gt;mission&lt;/code&gt;, plus the reusable objects they are built from (steps, choices, quiz questions, rewards).&lt;/li&gt;
&lt;li&gt;A review workflow on both lessons and missions with &lt;code&gt;draft&lt;/code&gt;, &lt;code&gt;inReview&lt;/code&gt;, and &lt;code&gt;approved&lt;/code&gt; states, and the document actions "Send for review" and "Approve".&lt;/li&gt;
&lt;li&gt;A custom &lt;code&gt;CoinField&lt;/code&gt; input.&lt;/li&gt;
&lt;li&gt;A mission Play preview inside the Studio.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://money-verse-orpin.vercel.app/" rel="noopener noreferrer"&gt;https://money-verse-orpin.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo link:&lt;/strong&gt; &lt;a href="https://github.com/tanay9098/Money_verse" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Money_verse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0bd3im7u94tjwu8lsuax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0bd3im7u94tjwu8lsuax.png" alt="Screenshot of my app" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔨 My Build Process
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;📅 30th September – 1st October:&lt;/strong&gt; I started by learning the basics of Sanity Studio through &lt;a href="https://www.sanity.io/learn/course/day-one-with-sanity-studio/prerequisites" rel="noopener noreferrer"&gt;Sanity Learn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I used ChatGPT to get an idea for the project, and I came across the idea of building &lt;strong&gt;MoneyVerse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I initialized the original MVP using Cursor AI. Later, I started using Claude Code for the rest of the code, as I had consumed 90% of my limits in Cursor 💀.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.ai/code/session_016JWnZKKEzZZDJnbeHBLdKh" rel="noopener noreferrer"&gt;Cursor Handoff to Claude Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I summarized the chat prompt from the Cursor implementation and later handed it off to Claude Code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 2nd October:&lt;/strong&gt; 2nd October was my birthday, so I didn't do any work. 🎂&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 3rd–4th October:&lt;/strong&gt; This is where I pushed the majority of the commits 💀.&lt;/p&gt;

&lt;p&gt;My initial version was a PWA with a fully working Google sign-in and cloud save of progress to Sanity. Later I removed those features (sign-in, cloud save, and PWA) to cut technical complexity and submit this blog on time. The shipped game is guest-only, and progress lives in &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.ai/code/session_01KESy3cnPeWaesHLPmHEC9p" rel="noopener noreferrer"&gt;Removal of Auth and PWA Features&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I prompted the AI agent to build the game, schemas, GROQ queries, and Studio, with a demo-content fallback for local development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 5th October:&lt;/strong&gt; I first assumed the deadline was 4th October, 12:30 PM Indian Standard Time, so I published a very unpolished first version of this blog in time. Later I realized the deadline is actually 5th October, 12:30 PM IST, so I unpublished the initial post and utilize the extra time to polish this post and the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.ai/code/session_01E3xTmfCbttXeg31NjSdujD" rel="noopener noreferrer"&gt;Polishing the app and blog&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 Making Sanity Essential to the Game
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The critique:&lt;/strong&gt; I noticed that the game didn't really depend on Sanity. So, I added a review workflow (&lt;code&gt;reviewStatus&lt;/code&gt;, "Send for review" / "Approve") to both lessons and missions.&lt;/p&gt;

&lt;p&gt;In the deployed site, the demo-content fallback is switched off. The game loads only &lt;strong&gt;published, approved&lt;/strong&gt; content from Sanity. If an editor hasn't approved and published a mission, players can't see it. The demo content is only a fallback for local development.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ Live Content
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;defineLive&lt;/code&gt; lets published missions appear without a redeploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  🗂️ Sanity Project Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content types:&lt;/strong&gt; &lt;code&gt;lesson&lt;/code&gt; and &lt;code&gt;mission&lt;/code&gt;, plus a review workflow (&lt;code&gt;reviewStatus&lt;/code&gt; and &lt;code&gt;reviewerNote&lt;/code&gt;) on both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery:&lt;/strong&gt; GROQ queries filtered to &lt;code&gt;reviewStatus == "approved"&lt;/code&gt;, using the &lt;code&gt;published&lt;/code&gt; perspective, with live updates via &lt;code&gt;defineLive&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup:&lt;/strong&gt; Project ID, &lt;code&gt;production&lt;/code&gt; dataset, a CORS origin, and &lt;code&gt;npm run seed:sanity&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few lessons were created by Claude, which I pushed to Sanity by running &lt;code&gt;npm run seed:sanity&lt;/code&gt; locally on my machine, using an Editor-level write token kept in &lt;code&gt;.env.local&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I also created an additional lesson, &lt;strong&gt;"Comparing Before You Buy,"&lt;/strong&gt; by manually entering everything into the Studio, as suggested by Claude, to see if it worked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.ai/code/session_01UvUbnrLNccpHbKn1wd2ZUt" rel="noopener noreferrer"&gt;Studio Schema Structure Overview and Changes&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Sanity Project
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.sanity.io/organizations/oiufsij01/project/8ndcaq5n" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;sanity.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  🤖 Agent Sessions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://claude.ai/code/session_016JWnZKKEzZZDJnbeHBLdKh" rel="noopener noreferrer"&gt;Cursor Handoff to Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://claude.ai/code/session_01KESy3cnPeWaesHLPmHEC9p" rel="noopener noreferrer"&gt;Removal of Auth and PWA Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://claude.ai/code/session_01UvUbnrLNccpHbKn1wd2ZUt" rel="noopener noreferrer"&gt;Studio Schema Structure Overview and Changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://claude.ai/code/session_01E3xTmfCbttXeg31NjSdujD" rel="noopener noreferrer"&gt;Polishing the app and blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
    <item>
      <title>🚀 My learning from last week: Linear Regression, trying Cursor, and building Jumpy Brain. My brain was literally jumping everywhere 😂</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Mon, 28 Sep 2026 08:28:50 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/my-learning-from-last-week-linear-regression-trying-cursor-and-building-jumpy-brain-my-brain-4d02</link>
      <guid>https://dev.to/tanay_dwivedi9098/my-learning-from-last-week-linear-regression-trying-cursor-and-building-jumpy-brain-my-brain-4d02</guid>
      <description>&lt;p&gt;Hello guys, I am back yet again with another weekly update on what I learned, built, and experimented with last week.&lt;/p&gt;

&lt;p&gt;I will be creating a series where, at the start of every new week, by &lt;strong&gt;11:59 PM, Monday IST&lt;/strong&gt;, I will share my learnings,things I built or experimented with so that I can stay accountable and inspire others to share their learnings. This will help us, as a community, become smarter and more accountable, and we can learn from others' experiences as well.&lt;/p&gt;

&lt;p&gt;If you guys haven't read my previous post, you can read it &lt;a href="https://dev.to/tanay_dwivedi9098/my-learnings-from-last-week-ml-fundamentals-security-and-backend-from-first-principles-bpp"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Unlike the week before last, last week wasn't very productive due to my health issues. Also, yesterday, on Sunday, I was supposed to attend a tech meetup in my city hosted by &lt;strong&gt;Qualcomm&lt;/strong&gt; and had planned to share the insights in the form of a blog, but my health didn't support me 😭 Hence, I couldn't attend the meetup.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Experimented with Cursor AI Start
&lt;/h2&gt;

&lt;p&gt;Last week, I tried the Cursor AI Start program, which was specifically launched for India at ₹649, equivalent to approximately $7 at the time of writing this blog. I will be writing a detailed blog about my experience with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  📈 What I Learned in Machine Learning
&lt;/h2&gt;

&lt;p&gt;This week, I deep-dived into Linear Regression and learned a few of its core fundamentals, such as how linear regression can help us predict trends based on past data by finding the &lt;strong&gt;best-fit line&lt;/strong&gt; from a &lt;strong&gt;scatter plot&lt;/strong&gt; and how we can find the &lt;strong&gt;best-fit line&lt;/strong&gt; by minimising the &lt;strong&gt;residual error&lt;/strong&gt; as much as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Building Jumpy Brain, an ADHD Productivity Application
&lt;/h2&gt;

&lt;p&gt;Earlier this year, I vibe-coded a Random Forest algorithm for the recommendations in my ADHD productivity app without understanding the fundamentals of ML algorithms. Later, I realised that building an ML model without having enough data is not a good idea. So, for the time being, I kept a rule-based heuristic.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Resources Which I Used
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Lb0JzFtTmBs" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>🚀 My Learnings from Last Week: ML Fundamentals, Security, and Backend from First Principles</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Mon, 21 Sep 2026 09:15:00 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/my-learnings-from-last-week-ml-fundamentals-security-and-backend-from-first-principles-bpp</link>
      <guid>https://dev.to/tanay_dwivedi9098/my-learnings-from-last-week-ml-fundamentals-security-and-backend-from-first-principles-bpp</guid>
      <description>&lt;p&gt;Last week, I explored three different areas of technology:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Machine Learning&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backend Development from First Principles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Application Security for Developers&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🧠 What I Learned in Machine Learning
&lt;/h2&gt;

&lt;p&gt;I covered some fundamental concepts, including the three main types of machine learning: &lt;strong&gt;Supervised Learning, Unsupervised Learning, and Reinforcement Learning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also learned about &lt;strong&gt;Exploratory Data Analysis (EDA)&lt;/strong&gt; and covered the basics of supervised machine learning, including the &lt;strong&gt;Linear Regression algorithm&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ What I Learned in Backend Development
&lt;/h2&gt;

&lt;p&gt;I covered an overview of how the backend works and learned some of its fundamental concepts, including &lt;strong&gt;domains, subdomains, and the HTTP protocol&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔐 What I Learned in Web Application Security
&lt;/h2&gt;

&lt;p&gt;I covered overview of different types of &lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; attacks, including &lt;strong&gt;Stored XSS, Reflected XSS, and DOM-based XSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also took a deep dive into how &lt;strong&gt;Stored XSS&lt;/strong&gt; can be used to exploit vulnerabilities and the strategies developers can use to defend against these attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Resources which I used
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/-GfSbk_VqSk?start=1845" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Lb0JzFtTmBs?start=1010" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/0Rwb4Xmlcwc" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>🧩 Don't make Tech your entire personality.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Tue, 15 Sep 2026 10:46:53 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/dont-make-tech-your-entire-personality-45dc</link>
      <guid>https://dev.to/tanay_dwivedi9098/dont-make-tech-your-entire-personality-45dc</guid>
      <description>&lt;p&gt;This is one of those articles that I wanted to write for many days, but I kept delaying it until, a few days ago, I read a blog by one of my friends, &lt;a href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt;, about the importance of networking. He shared several useful tips on &lt;em&gt;how to network&lt;/em&gt;, but while reading it, I realised that there was a root cause behind why some devs struggle with networking skills. So,I took this opportunity to explore this issue through my blog.&lt;/p&gt;

&lt;p&gt;It's not that being introverted is a problem. There are plenty of introverts who are great at networking and communicating with people. But I have noticed another pattern, both in myself and in many developers I've interacted with online and IRL that, &lt;strong&gt;sometimes, we unintentionally make Tech our entire life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've interacted with many developers both online and IRL, and I've noticed how easily our professional identity can intermingle with our sense of self and can make us think that somehow the world revolves around our profession. We work in Tech, spend a large portion of our day thinking about Tech, consume Tech-related content, participate in Tech communities, and then, when we finally decide to socialise, we often end up attending yet another "Tech meetup" or a "hackathon".&lt;/p&gt;

&lt;p&gt;There is nothing inherently wrong with that. In fact, Tech meetups and hackathons are a great way to network and meet other developers, and I attend it myself as well. The problem starts when they become our &lt;strong&gt;only&lt;/strong&gt; form of social interaction.&lt;/p&gt;

&lt;p&gt;Think about it for a moment. Tech, for the most part, is a desk-based and mentally demanding profession. Many of us spend most of our working day sitting in front of a screen, solving problems, attending meetings, writing code, debugging issues, or simply working quietly. By the time the workday ends, many of us don't have much mental bandwidth left to socialise.&lt;/p&gt;

&lt;p&gt;As a result, we may gradually interact with fewer people outside our usual circles. We get comfortable talking to people who already understand our work, our terminology, and our interests. But communicating with people from completely different backgrounds doesn't get the same amount of practice.&lt;/p&gt;

&lt;p&gt;And just like any other skill, communication benefits from practice.&lt;/p&gt;

&lt;p&gt;This can create an interesting cycle. We don't socialise much outside Tech because it feels uncomfortable or tiring. Then, because we don't socialise much, interacting with unfamiliar people feels even more uncomfortable the next time we try it.&lt;/p&gt;

&lt;p&gt;This is where having a life outside Tech becomes important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build a Life Outside Tech 🏖️
&lt;/h3&gt;

&lt;p&gt;Have some offline hobbies that has nothing to do with Tech.&lt;/p&gt;

&lt;p&gt;If you enjoy painting, attend a painting workshop. If you like photography, join a photography club. If you like books, attend a book club. The activity itself isn't the important part. The important part is that you are putting yourself in an environment where people aren't necessarily there to talk about Tech.&lt;/p&gt;

&lt;p&gt;You might discover that you have surprisingly interesting conversations with people who have completely different professions, experiences, and perspectives, and you don't have to become an &lt;strong&gt;extrovert&lt;/strong&gt; to do this. You can start small and slowly and steadily push your comfort zone.&lt;/p&gt;

&lt;p&gt;The goal isn't to change &lt;strong&gt;who you are&lt;/strong&gt;. It's simply to give yourself more opportunities to refine your communication skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Toastmasters and Improv Meetups Can Help 👥👥
&lt;/h3&gt;

&lt;p&gt;Another thing one can try is joining a Toastmasters club. It can be a good environment to practise public speaking, expressing your thoughts, speaking spontaneously, and interacting with people from different age groups and professional backgrounds.&lt;/p&gt;

&lt;p&gt;One thing I like about this kind of environment is that you don't just get to listen to people speaking, but you also get opportunities to speak yourself. This repeated exposure can make unfamiliar social situations feel less intimidating over time.&lt;/p&gt;

&lt;p&gt;Recently, I attended a Toastmasters club as a guest in my city. I was nervous too, especially because I hadn't attended such a formal meetup in months.&lt;/p&gt;

&lt;p&gt;And that is completely normal.&lt;/p&gt;

&lt;p&gt;You don't suddenly become comfortable just because you've decided that you want to improve your communication skills. The first few times can feel awkward. You may overthink what you're going to say, wonder whether someone is interested in talking to you, or simply feel like leaving early.&lt;/p&gt;

&lt;p&gt;That's okay.&lt;/p&gt;

&lt;p&gt;The point is to keep giving yourself opportunities to practise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reconnect With People You Already Know ⋆˙𖠋𖠋𖠋𖠋𖠋⋆˚
&lt;/h3&gt;

&lt;p&gt;Improving your communications skills doesn't always mean meeting complete strangers.&lt;/p&gt;

&lt;p&gt;Call your childhood friends. Plan a casual meetup instead of waiting for someone else to initiate it.&lt;/p&gt;

&lt;p&gt;And if you have friends on online communities, consider meeting those people IRL when it's practical and safe to do so.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I was in Bengaluru and met a few of my online friends from an ADHD community where I'm active. We had never spent that much time together offline, but once we met, we could simply joke around and talk about completely "nonsensical" things.&lt;/p&gt;

&lt;p&gt;And honestly, it felt really good.&lt;/p&gt;

&lt;p&gt;There was no discussion about improving our careers, building our portfolios, learning a new framework, or increasing productivity.&lt;/p&gt;

&lt;p&gt;We were just hanging out.&lt;/p&gt;

&lt;p&gt;I think that kind of interaction is valuable in itself.&lt;/p&gt;

&lt;p&gt;Not every conversation needs to have a purpose.&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking Is More Than Talking About Yourself 🌐
&lt;/h3&gt;

&lt;p&gt;This brings me to another misunderstood part of networking. Being good at it doesn't mean knowing how to introduce yourself or ask someone what they do.&lt;/p&gt;

&lt;p&gt;It also helps to be &lt;strong&gt;curious about the world outside your immediate professional bubble&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You don't need to be an expert in everything, but having a variety of interests gives you more opportunities to connect with people.&lt;/p&gt;

&lt;p&gt;You might be able to talk about a movie you watched, a book you're reading, a place you recently visited, a sport you follow, a hobby you've picked up, a restaurant you discovered, or something interesting you learned recently.&lt;/p&gt;

&lt;p&gt;And sometimes, you don't even need to know anything about the topic.&lt;/p&gt;

&lt;p&gt;You can simply say,&lt;/p&gt;

&lt;p&gt;"I don't know much about that. Tell me more."&lt;/p&gt;

&lt;p&gt;Being curious and active listening is much more valuable than trying to sound knowledgeable all the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't Turn This Into Another Hyperfixation 🌀
&lt;/h3&gt;

&lt;p&gt;When I say that you should learn about different subjects, I'm &lt;strong&gt;not&lt;/strong&gt; saying that you should turn this into "&lt;strong&gt;another productivity project&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;You don't need to hyperfixate on a random topic for hours, get yourself down into a rabbit hole, and then realise that you've spent the entire day researching something that wasn't even important to you.&lt;/p&gt;

&lt;p&gt;And doomscrolling social media for "NEWS" isn't necessarily the same as becoming knowledgeable either.&lt;/p&gt;

&lt;p&gt;Spending hours criticising or defending a politician or a government policy can give you the feeling that you're staying informed and presenting your own opinion, but consuming more information isn't automatically the same thing as developing a broader understanding of the world.&lt;/p&gt;

&lt;p&gt;The goal isn't to know everything, but to &lt;strong&gt;remain curious about things outside your usual social bubble&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  You Don't Need to Become an Extrovert 🌱
&lt;/h3&gt;

&lt;p&gt;Ultimately, I don't think the solution to networking difficulties is to force yourself to become an extrovert.&lt;/p&gt;

&lt;p&gt;If you're introverted, you're still going to be introverted. And that's perfectly fine.&lt;/p&gt;

&lt;p&gt;What you can change is the environment you put yourself in and how often you expose yourself to unfamiliar social situations.&lt;/p&gt;

&lt;p&gt;Go to a workshop that has nothing to do with Tech. Reconnect with an old friend. Join a club. Meet an online friend IRL. Talk to someone who works in a completely different profession.&lt;/p&gt;

&lt;p&gt;Do it gradually.&lt;/p&gt;

&lt;p&gt;The more you expose yourself to different social situations, the more you will start finding it easier.&lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Nova: Your friendly and not-so-average extraterrestrial life coach.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Fri, 31 Jul 2026 13:35:29 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/nova-your-friendly-and-not-so-average-extraterrestrial-life-coach-1jc8</link>
      <guid>https://dev.to/tanay_dwivedi9098/nova-your-friendly-and-not-so-average-extraterrestrial-life-coach-1jc8</guid>
      <description>&lt;p&gt;Long time no see. Many of you guys here at Dev.to might have forgotten me, as I was pretty much inactive for the past couple of weeks. Life happens, and sometimes you gotta prioritize stuff that's important. Now that I'm back, you guys will see me active and, if I'm lucky enough, winning a few hackathons as well.&lt;/p&gt;

&lt;p&gt;Two weeks ago, I completed an AI-powered application while learning Generative AI from &lt;a href="https://www.youtube.com/watch?v=vwncYfhxbR0" rel="noopener noreferrer"&gt;Shriyans Coding School&lt;/a&gt;. In this particular tutorial, it was taught how one can create their own personal assistant using LangChain. After completing it, I built my very own AI assistant, Nova, who will guide you through the struggles of your daily life with his philosophical insights, as he is way more evolved than us Earthlings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/tanay9098/Nova" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Nova&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;App Link&lt;/strong&gt;: &lt;a href="https://tanay9098-nova-app-ippn9j.streamlit.app/" rel="noopener noreferrer"&gt;https://tanay9098-nova-app-ippn9j.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dudimmpdn4h2iiddgsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dudimmpdn4h2iiddgsz.png" alt="Nova app screenshot" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools I used 🧰
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;LangChain: A framework to build an LLM-powered application using Mistral AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python: For coding and other stuff.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Streamlit: For UI and hosting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Claude Code and Codex: To make development faster and easier.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Struggles I faced 😭
&lt;/h2&gt;

&lt;p&gt;It was my first time building a Gen AI-powered application, so I had to read LangChain documentation from scratch and figure out stuff on my own as I was progressing while building this application. Another struggle was that the tutorial video was recorded 3 months ago, and in just that much time, the LangChain docs got updated and many things got deprecated, so I had to fix that as well. One time accidently I exposed my Mistral API key to claude code so needed to rotate it as well. &lt;/p&gt;

&lt;h2&gt;
  
  
  Learnings 📖
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;One of the most important things I learnt that how I can activate and use virtual environment for python projects and how it resolves the version conflict issue when someone else is running my app locally on their machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another thing I learnt about Messages Types properties in LangChain like &lt;strong&gt;SystemMessage&lt;/strong&gt;, &lt;strong&gt;HumanMessage&lt;/strong&gt;, &lt;strong&gt;AIMessage&lt;/strong&gt; from &lt;strong&gt;langchain_core.messages&lt;/strong&gt; and how they can use to structure chat while talking with LLM model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conversation history and how I can implement in my LLM-powered application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embeddings and how they power LLMs (it can be a separate topic on its own which I will write about in my later blogs)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all from my side. I hope that you guys enjoyed my content. Feedback and suggestions to improve my content quality is welcome. &lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>github</category>
      <category>python</category>
    </item>
    <item>
      <title>I developed an App that can k!ll you.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sat, 20 Jun 2026 07:57:26 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/i-developed-an-app-that-can-kll-you-2oad</link>
      <guid>https://dev.to/tanay_dwivedi9098/i-developed-an-app-that-can-kll-you-2oad</guid>
      <description>&lt;p&gt;Now as I got all the attention, I would like to tell it's not like that😆. Recently, I watched a Kdrama, &lt;strong&gt;"If wishes could kill"&lt;/strong&gt;. Taking inspiration from that, I built &lt;strong&gt;Girigo&lt;/strong&gt;(app's name in the show).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmthg0vt1tllgiaognlr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmthg0vt1tllgiaognlr5.png" alt=" " width="562" height="909"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repo&lt;/strong&gt;: &lt;a href="https://github.com/tanay9098/Girigo" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Girigo&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;App live link&lt;/strong&gt;: &lt;a href="https://girigofrontend.netlify.app/" rel="noopener noreferrer"&gt;https://girigofrontend.netlify.app/&lt;/a&gt;   &lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stacks used 🤖
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web Frontend&lt;/td&gt;
&lt;td&gt;React 19, Vite 8, PWA (Workbox), Web Crypto API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js, Express 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase (PostgreSQL + Storage + Auth)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job Queue&lt;/td&gt;
&lt;td&gt;BullMQ, Redis, IORedis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push Notifications&lt;/td&gt;
&lt;td&gt;Web Push API (VAPID), web-push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encryption&lt;/td&gt;
&lt;td&gt;AES-256-GCM, PBKDF2 (310k iterations)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Netlify (frontend), Render.com (backend + worker)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Project Directory 📖
&lt;/h2&gt;

&lt;p&gt;Girigo/&lt;br&gt;
├── frontend/          # React + Vite SPA&lt;br&gt;
│   └── src/&lt;br&gt;
│       ├── components/    # VideoRecorder, WishForm, CountDown, …&lt;br&gt;
│       ├── hooks/         # useMediaRecorder, useCountdown, usePush&lt;br&gt;
│       ├── lib/           # crypto.js, api.js, supabase.js&lt;br&gt;
│       └── pages/         # AuthPage, DashboardPage&lt;br&gt;
├── backend/           # Express API + BullMQ worker&lt;br&gt;
│   ├── routes/        # wishes.js, push.js&lt;br&gt;
│   ├── jobs/          # worker.js (scheduled notifications)&lt;br&gt;
│   ├── middleware/    # auth.js (Supabase JWT)&lt;br&gt;
│   └── lib/           # queue.js, storage.js, webpush.js, supabase.js&lt;br&gt;
└── supabase/&lt;br&gt;
    └── migrations/    # SQL schema migrations&lt;/p&gt;

&lt;h2&gt;
  
  
  Struggles and learnings 🎓
&lt;/h2&gt;

&lt;p&gt;It was my one of the few apps that I put in production so I had to resolve production issues which many AI and LLM tools were not able to do so,it helps me to improve my debugging skills to a great extent and most importantly, I learnt how to prompt properly.&lt;/p&gt;

&lt;p&gt;I also knew what &lt;strong&gt;.toml&lt;/strong&gt; and &lt;strong&gt;.yaml&lt;/strong&gt; files are, and how it saves our time for configuring our application for deployment.&lt;/p&gt;

&lt;p&gt;Earlier I didn't knew much about security concepts but building this application pushed me to learn security concepts to prevent users to access someone's else data and video-encryption. Few of these concepts are, &lt;strong&gt;Row-Level-Security&lt;/strong&gt;, &lt;strong&gt;SHA-256&lt;/strong&gt;,&lt;strong&gt;PBKDF-2&lt;/strong&gt;, and, &lt;strong&gt;AES 256 GCM&lt;/strong&gt; for video encryption. Now explaining these security concepts and how they work in tandem with each other deserves its own dedicated blog, which I will share next time.&lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>web</category>
    </item>
    <item>
      <title>PokeDex: A pokemon based NFT platform</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sun, 07 Jun 2026 21:17:48 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/pokedex-a-pokemon-based-nft-platform-1352</link>
      <guid>https://dev.to/tanay_dwivedi9098/pokedex-a-pokemon-based-nft-platform-1352</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pokémon and all Pokémon character names are trademarks of Nintendo. This project is intended for educational purposes only.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What I Built ⚒️
&lt;/h2&gt;

&lt;p&gt;I built a full stack Pokemon based NFT platform where you can trade, collect and battle Pokemon based NFT cards hosted on Polygon blockchain. All the Pokemon based digital collectibles properties is fetched from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech stacks I used 🤖
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Smart Contracts&lt;/td&gt;
&lt;td&gt;Solidity 0.8.25, Hardhat, OpenZeppelin v5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain&lt;/td&gt;
&lt;td&gt;Polygon (Amoy Testnet / Mainnet)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web Frontend&lt;/td&gt;
&lt;td&gt;React 19, TypeScript, Vite 5, ethers.js v6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile App&lt;/td&gt;
&lt;td&gt;Expo ~54, React Native 0.81, Expo Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;PokéAPI (pokemon data), Pinata (IPFS metadata; planned for future release)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repo:&lt;/strong&gt;&lt;a href="https://github.com/tanay9098/PokeDex" rel="noopener noreferrer"&gt;https://github.com/tanay9098/PokeDex&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Web app version:&lt;/strong&gt;&lt;a href="https://pokedex9098.netlify.app/" rel="noopener noreferrer"&gt;https://pokedex9098.netlify.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Mobile version(Android build stable version):&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://expo.dev/accounts/tanay9098/projects/PokeDex/builds/53d0f4cf-14a8-4856-bcb4-12d5314cf417" rel="noopener noreferrer"&gt;https://expo.dev/accounts/tanay9098/projects/PokeDex/builds/53d0f4cf-14a8-4856-bcb4-12d5314cf417&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/BTO3eJf65rg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story 🏋️‍♂️
&lt;/h2&gt;

&lt;p&gt;Few months ago, I was learning React Native from &lt;a href="https://www.linkedin.com/in/betomoedano/" rel="noopener noreferrer"&gt;Alberto Moedano&lt;/a&gt; on one of his  &lt;a href="https://www.youtube.com/watch?v=BUXnASp_WyQ&amp;amp;t=1502s" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; video on his &lt;a href="https://www.youtube.com/@codewithbeto" rel="noopener noreferrer"&gt;Youtube channel&lt;/a&gt; where he taught React Native by building an application named, PokeDex, hence lazy me named it just like that 😂. Now coming to the main part, it was just a simple React Native project which used to fetch Pokemons from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt; and later I thought of improvising and adding new changes such as building a Pokemon based NFT trading card platform or Pokemon based battle game but I procrastinated and almost gave up on it, until one day I saw a mail from DEV.to for GitHub Finish-Up-A-Thon challenge which ignited a fire🔥 in me to complete it. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ahm81n9kld0cmlhtq3d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ahm81n9kld0cmlhtq3d.png" alt="Earlier static version of PokeDex" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
          &lt;em&gt;Earlier static version of PokeDex&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How GitHub Copilot helped me ❤️‍🩹
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot helped me to save a lot of time by rewriting a separate version for web which otherwise would take a hell lot of time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5feqlq09uteiws01pfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5feqlq09uteiws01pfw.png" alt="Separate version web" width="799" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also helped me with Blockchain implementation wherever necessary&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywhdvspc7nyxc5wke65l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywhdvspc7nyxc5wke65l.png" alt="Blockchain implementation" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It critiqued my development approach and corrected me wherever I was going wrong&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsg649aow41eb8mrfvjzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsg649aow41eb8mrfvjzm.png" alt="Critiquing my approach" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Struggles and learning 😣
&lt;/h2&gt;

&lt;p&gt;This was my first web3/blockchain project and at that time I just had a surface level knowledge of it, hence I had to learn web3/blockchain-based technologies especially &lt;strong&gt;Solidity&lt;/strong&gt; programming language.&lt;/p&gt;

&lt;p&gt;I was using claude Haiku model in GitHub copilot free tier and there were times when it was generating hallucinated codes so I had  go through the code structure and read each code line by line which enabled me to debug the issues and make few contextual changes. &lt;/p&gt;

&lt;p&gt;Also I encountered several build errors related to android and I learned a lesson the hard way, that always keep a separate branch for preview and production and don't push everything to main/production branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyybs2rn4gwqr6yrlbz97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyybs2rn4gwqr6yrlbz97.png" alt="Build errors" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations and Future Enhancements 📚
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unintentional Technical Trade-offs
&lt;/h3&gt;

&lt;p&gt;This project demonstrates the web 3 enabled frontend and how it interacts with wallet integration(Metamask), Smart Contracts and Blockchain based transactions, but I didn't fully implement NFT based market architecture. Instead of that, I implemented the logic of NFT like ownership such that it can be simulated locally on your machine. Other trade-offs were no integration of multiplayer battle mode, rudimentary implementation of Mobile app and zero synchronization between mobile and web app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations due to Technical Trade-offs&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ownership is not stored on-chain as purchased pokemons are tracked locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Non transferable assests as Pokemon cards aren't minted as NFTs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Purchased collectibles are stored locally on browser and mobile device hence if you clear the browsing data,cache, or switch devices then it will reset the collection.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application only demonstrates the purchase flow but doesn't demonstrate peer-to-peer trade or transactions. The transaction gets send to a hardcoded deployer address only(which is me).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No sync between mobile and web due to changes being implemented locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pokemon battle feature includes battle logic(single player only) but doesn't have multiplayer feature.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Right now there are few issues with respect to wallet connection in mobile version as for it I am using &lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;thirdweb&lt;/a&gt; whose few package is in conflict with few of react-native packages hence need to find a workaround. Hence implementation is pretty much rudimentary in nature.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's all because of few things that I didn't factor in while starting this project. One of the few thing I thought to implement was minted NFT Pokemon cards(or purchased Pokemon cards) can be used in Battles but due to lack of technical knowledge for now, I wasn't able to implement multiplayer mode. Another issue is there is no synchronization between web and mobile due to absence of a unified backend and blockchain services to keep track of changes remotely, which brings me to the last part, that &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt; being a read only public API, it has no such concept of ownership because it is accessible to everyone for public use. Hence for example, if one have to purchase Bulbasaur NFT card from my app, its data will be fetched from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt;, hence the question would be who owns the Bulbasaur NFT before a user buys it? Someone has to mint it and put it for sale and that someone has to have a proof of an actual ownership of the Bulbasaur NFT but as mentioned that data is being fetched from a public API.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Future Enhancements and Solutions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Adding multiplayer battle mode by implementing socket.io or WebRTC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enabling sync between mobile and web&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To support actual NFT ownership and trading, I would need to design and maintain my own data layer consisting of a dedicated database for Pokémon assets, user inventories, marketplace listings, transaction records, and metadata. This would also require implementing custom read and write APIs, backend services, authentication, and synchronization between the database and blockchain smart contracts. Inculcating all these changes just would expand the scope and complexity of the project further which is why it has a dedicated space for itself for a full-scale project which I will implement it in future. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solve the conflict issue of mobile version with &lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;Third web&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
  </channel>
</rss>
