<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Prasiddh Naik</title>
    <description>The latest articles on Forem by Prasiddh Naik (@prasiddhnaik).</description>
    <link>https://forem.com/prasiddhnaik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3896171%2F3f38eb74-b076-4e13-808a-ac3a7d7d080a.jpeg</url>
      <title>Forem: Prasiddh Naik</title>
      <link>https://forem.com/prasiddhnaik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/prasiddhnaik"/>
    <language>en</language>
    <item>
      <title>BharatZero</title>
      <dc:creator>Prasiddh Naik</dc:creator>
      <pubDate>Fri, 08 May 2026 12:34:30 +0000</pubDate>
      <link>https://forem.com/prasiddhnaik/bharatzero-9ck</link>
      <guid>https://forem.com/prasiddhnaik/bharatzero-9ck</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;BharatZero is an India-focused legislative explorer that aggregates parliamentary data spanning 1947 to the present into a unified, searchable platform. The app solves a critical transparency problem: India's legislative information is scattered across dozens of government portals (Sansad, PRS Legislative Research, Parliament Digital Library, Data.gov.in), hidden in PDFs, and nearly impossible to navigate comprehensively.&lt;/p&gt;

&lt;p&gt;BharatZero brings it all together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4,708 bill records from three different official sources&lt;/li&gt;
&lt;li&gt;7,253 timeline events tracking parliamentary activity&lt;/li&gt;
&lt;li&gt;2,560 sitting days with chronological browsing&lt;/li&gt;
&lt;li&gt;Prime Minister term filtering—see what legislation passed during any PM's tenure&lt;/li&gt;
&lt;li&gt;Complete source attribution for data provenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The platform features eight sections: Overview, Houses (with Lok Sabha power charts), Timeline, Bills, Committees, Debates, Acts, and Sources. Every record shows exactly where it came from—critical for democratic transparency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&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://bharatzero.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;bharatzero.vercel.app&lt;/span&gt;
          

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


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prasiddhnaik" rel="noopener noreferrer"&gt;
        prasiddhnaik
      &lt;/a&gt; / &lt;a href="https://github.com/prasiddhnaik/Bharat0" rel="noopener noreferrer"&gt;
        Bharat0
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;BharatZero&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;BharatZero is an India-focused legislative explorer for bills, Acts, Parliament timelines, House power, Prime Minister terms, and official source coverage. It is built as a Vite/React frontend with a small Node API server, Prisma, and PostgreSQL/Neon.&lt;/p&gt;
&lt;p&gt;The current app is no longer just a static prototype. It uses generated legislative datasets plus a Prisma-backed repository path for runtime data.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Current Coverage&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Generated local datasets currently include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;4,708&lt;/code&gt; Bill records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;7,268&lt;/code&gt; Bill action records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;7,253&lt;/code&gt; timeline events&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;2,560&lt;/code&gt; sitting days&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;217&lt;/code&gt; Act records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;15&lt;/code&gt; Prime Minister profile records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;16&lt;/code&gt; Lok Sabha power snapshots&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Main source families:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sansad legislation data, as of &lt;code&gt;2026-04-25&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PRS historical bill data, &lt;code&gt;1992-2019&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Parliament Digital Library bill/proceeding data, &lt;code&gt;1947-2003&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Curated Prime Minister profile data from PM India&lt;/li&gt;
&lt;li&gt;Curated Lok Sabha power snapshots from ECI/IPU-style election summaries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The PDL sync now covers older Prime Ministers, including Nehru, Shastri, Nanda, and Indira Gandhi-era windows where source records exist.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prasiddhnaik/Bharat0" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Used Gemma 4
&lt;/h2&gt;

&lt;p&gt;I chose Gemma 4 31B Dense (gemma-4-31b-it) via the Gemini/OpenAI-compatible API for bill analysis generation. Legislative bills are dense, technical documents—often 50+ pages of legal language. Citizens, journalists, and researchers need accessible summaries, but manual summarization doesn't scale across 4,700+ bills.&lt;/p&gt;

&lt;p&gt;BharatZero uses Gemma 4 to generate plain-language summaries, economic impact analysis, key provisions extraction, and social implications analysis. The model handles the bilingual nature of Indian legislation seamlessly—bill titles and summaries work in both English and Hindi contexts without separate model tuning.&lt;/p&gt;

&lt;p&gt;Analysis is expensive, so BharatZero implements a persistent cache layer. Once a bill is analyzed, results are stored in PostgreSQL. Subsequent requests serve cached results instantly.&lt;/p&gt;

&lt;p&gt;Why Gemma 4 31B Dense was the right fit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long context: Bills are lengthy documents; Gemma 4 handles full text input&lt;/li&gt;
&lt;li&gt;Structured output: Returns consistent JSON for parsing into the UI&lt;/li&gt;
&lt;li&gt;Factual accuracy: Critical for legislative analysis—hallucinations are dangerous&lt;/li&gt;
&lt;li&gt;Cost efficiency: More economical than alternatives for high-volume batch analysis
&amp;lt;!-- Don't forget to add a cover image if you want! --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>solana notes - week 2</title>
      <dc:creator>Prasiddh Naik</dc:creator>
      <pubDate>Wed, 06 May 2026 14:26:30 +0000</pubDate>
      <link>https://forem.com/prasiddhnaik/solana-notes-week-2-40bi</link>
      <guid>https://forem.com/prasiddhnaik/solana-notes-week-2-40bi</guid>
      <description>&lt;h1&gt;
  
  
  100DaysOfSolana
&lt;/h1&gt;

&lt;p&gt;i've used normal databases for years, so i kept trying to force solana into that shape. tables, rows, queries. some of that helps, a lot of it breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  what surprised me
&lt;/h2&gt;

&lt;p&gt;reading a balance is stupidly simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;balanceInLamports&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;rpc&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getBalance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetAddress&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the code is easy. the mental model is what's hard.&lt;/p&gt;

&lt;h2&gt;
  
  
  the click moment
&lt;/h2&gt;

&lt;p&gt;ran &lt;code&gt;solana account $(solana address)&lt;/code&gt; and saw my wallet data. then realized: anyone can do this. no api keys, no auth. just the public key and you're reading someone's balance.&lt;/p&gt;

&lt;p&gt;that's uncomfortable in a good way. in web2 data is hidden unless i expose it. here it's visible unless i design around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  the sdk
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;@solana/kit&lt;/code&gt; feels normal. not crusty like i expected. async/await, clean imports. the &lt;code&gt;devnet()&lt;/code&gt; and &lt;code&gt;mainnet()&lt;/code&gt; wrappers aren't just for show—they actually tag the network for type safety. someone thought about DX.&lt;/p&gt;

&lt;h2&gt;
  
  
  where the database comparison breaks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;normal thinking&lt;/th&gt;
&lt;th&gt;solana reality&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;sql joins&lt;/td&gt;
&lt;td&gt;lol no. fetch signatures, then fetch details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;private by default&lt;/td&gt;
&lt;td&gt;public by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i control who reads&lt;/td&gt;
&lt;td&gt;everyone reads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alter table, migrations&lt;/td&gt;
&lt;td&gt;nope. design upfront, serialize to bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;i keep wanting &lt;code&gt;SELECT * FROM transactions WHERE user_id = 123&lt;/code&gt;. instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signatures&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;rpc&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getSignaturesForAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// then fetch each one i guess&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;more manual. that's the tradeoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  devnet vs mainnet hit different
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--- Devnet ---
Balance : 0.001159846 SOL

--- Mainnet ---
Balance : 0.069875097 SOL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;same address, same code, different world. staging vs production except anyone can view production.&lt;/p&gt;

&lt;h2&gt;
  
  
  still fuzzy on
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PDAs&lt;/strong&gt; - when do i actually use them vs regular accounts?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rent&lt;/strong&gt; - deposit not fee, but the exact economics? need to build something that creates/closes accounts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cross-program calls&lt;/strong&gt; - just words to me right now&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;writing transactions&lt;/strong&gt; - reading is safe. writing feels serious. nervous about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;send a simple transaction&lt;/li&gt;
&lt;li&gt;one PDA example end to end&lt;/li&gt;
&lt;li&gt;build something that actually writes, not just reads&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  where i'm at
&lt;/h2&gt;

&lt;p&gt;day 12. not an expert. but less intimidated.&lt;/p&gt;

&lt;p&gt;the code looks familiar while the assumptions underneath are totally different. public data by default. accounts instead of tables. pay for storage not queries. still rewiring my brain.&lt;/p&gt;

&lt;p&gt;if you're also confused by accounts, PDAs, or why everything is public: same. i think that's just part of it.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>devjournal</category>
      <category>javascript</category>
      <category>web3</category>
    </item>
    <item>
      <title>What Does "Identity" Actually Mean on a Blockchain?</title>
      <dc:creator>Prasiddh Naik</dc:creator>
      <pubDate>Sat, 25 Apr 2026 11:17:13 +0000</pubDate>
      <link>https://forem.com/prasiddhnaik/what-does-identity-actually-mean-on-a-blockchain-3l69</link>
      <guid>https://forem.com/prasiddhnaik/what-does-identity-actually-mean-on-a-blockchain-3l69</guid>
      <description>&lt;p&gt;If you've been writing code for a while, you've probably used SSH keys. You generate a key pair, drop the public key on a server, and from that point on, you prove who you are by holding the private key. No username, no password reset. You either have the key, or you don't&lt;/p&gt;

&lt;p&gt;Solana identity works on the same principle: you have the key, or you don't — except that, instead of a single server, it's the entire network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem with Web2 identity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Web2, you have no power; you're just renting space. You don't control your GitHub or Google accounts; the company does. They give you access, but they can also take it away.&lt;/p&gt;

&lt;p&gt;Even when it feels like yours, it isn't. Your email address exists because Google or Microsoft allows it to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Solana does it differently&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On Solana, your identity starts with a single cryptographic keypair — a public key and a private key. The public key is your address, something like &lt;code&gt;14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5&lt;/code&gt;. That's what the world sees. The private key never leaves your wallet, and it's the only thing that can authorize actions on your behalf.&lt;/p&gt;

&lt;p&gt;No company issues this key pair. No server stores it. You generate it yourself, you hold it, and it works across every application on the Solana network without asking anyone's permission. There's no sign-up form, no email verification, no "log in with Google." Your keypair is your identity, and it's yours in a way that a Web2 account never is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ownership that actually means something&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the part that takes a moment to sink in: on Solana, only the holder of the private key can sign transactions for an account. Not a company. Not an admin. Not a support team. There's no password reset flow, no "verify your identity" email, no override. If you hold the private key, you control the account. If you lose it, it can't be recovered.&lt;/p&gt;

&lt;p&gt;That sounds scary, and it is if you're careless. But it also means no one can lock you out of your own account. No platform ban, no policy change, no company going bankrupt takes your identity with it. The tradeoff is real responsibility — but so is real ownership.&lt;br&gt;
What this identity actually unlocks&lt;/p&gt;

&lt;p&gt;On-chain identity isn't just a replacement for a username. Because it's cryptographic, it becomes the foundation for everything else on the network. Token ownership is tied to your keypair. When you vote in a DAO governance proposal, your keypair is the vote. When you interact with a program, your keypair authorizes it. When you build a reputation across DeFi protocols or NFT platforms, it all traces back to the same address.&lt;/p&gt;

&lt;p&gt;In Web2, your reputation on GitHub doesn't carry over to LinkedIn, which doesn't carry over to your bank. Each platform starts from zero. On Solana, your keypair is consistent across the entire ecosystem. Any application can read your on-chain history without you having to re-verify anything.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>beginners</category>
      <category>web3</category>
      <category>solana</category>
    </item>
  </channel>
</rss>
