<?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: Hala Kabir</title>
    <description>The latest articles on DEV Community by Hala Kabir (@halakabir234hub).</description>
    <link>https://dev.to/halakabir234hub</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%2F3648193%2F98075c33-a355-4103-8adb-90ed38b5b12a.png</url>
      <title>DEV Community: Hala Kabir</title>
      <link>https://dev.to/halakabir234hub</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/halakabir234hub"/>
    <language>en</language>
    <item>
      <title>How I Built a Counter Program in Anchor and Learned to Trust My Tests -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sun, 21 Jun 2026 21:38:47 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/how-i-built-a-counter-program-in-anchor-and-learned-to-trust-my-tests-hala-kabir-1743</link>
      <guid>https://dev.to/halakabir234hub/how-i-built-a-counter-program-in-anchor-and-learned-to-trust-my-tests-hala-kabir-1743</guid>
      <description>&lt;p&gt;Nothing exposes fuzzy understanding faster than trying to explain your own code. Over the last few days of the #100DaysOfSolana challenge, I’ve been building, testing, and intentionally breaking a decentralized counter program using the Anchor framework.&lt;/p&gt;

&lt;p&gt;When you're writing smart contracts on Solana, a green test suite feels great—but it can also hide silent assumptions. Today, I want to pull back the curtain on how my first Anchor program works and show exactly how I broke it on purpose to prove my test suite actually does real work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Entry Point: Solana's Guard Rails
&lt;/h2&gt;

&lt;p&gt;The biggest paradigm shift when moving from Web2 to Solana development is how state is handled. In Solana, programs (smart contracts) are stateless; all data lives inside external accounts. To create an account, Anchor uses an accounts validation struct. Here is how my &lt;code&gt;Initialize&lt;/code&gt; struct is laid out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#[derive(Accounts)]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Initialize&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;#[account(init,&lt;/span&gt; &lt;span class="nd"&gt;payer&lt;/span&gt; &lt;span class="nd"&gt;=&lt;/span&gt; &lt;span class="nd"&gt;authority,&lt;/span&gt; &lt;span class="nd"&gt;space&lt;/span&gt; &lt;span class="nd"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="err"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="err"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nd"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nd"&gt;#[account(mut)]&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Signer&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;system_program&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Program&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This struct functions as our security guard before the main logic ever runs. The &lt;code&gt;#[account(...)]&lt;/code&gt; macro tells Anchor to initialize a brand-new &lt;code&gt;counter&lt;/code&gt; account, forces the transaction &lt;code&gt;authority&lt;/code&gt; to pay the SOL storage rent, and allocates exactly enough memory space (8 bytes for the Anchor discriminator, 32 bytes for the public key, and 8 bytes for our data number).&lt;/p&gt;

&lt;h2&gt;
  
  
  Short Handlers and Iron-Clad Access Control
&lt;/h2&gt;

&lt;p&gt;Because the accounts struct handles the heavy lifting of security and allocation, our actual instruction handlers inside the &lt;code&gt;pub mod&lt;/code&gt; can be beautifully short and concise.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ctx.accounts&lt;/code&gt; object lets us confidently unpack the validated accounts. But initialization is only half the battle. What stops a malicious actor from modifying someone else's state? This is where access control shines in our &lt;code&gt;Increment&lt;/code&gt; instruction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#[derive(Accounts)]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Increment&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;#[account(mut,&lt;/span&gt; &lt;span class="nd"&gt;has_one&lt;/span&gt; &lt;span class="nd"&gt;=&lt;/span&gt; &lt;span class="nd"&gt;authority)]&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Signer&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;'info&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By adding &lt;code&gt;has_one = authority&lt;/code&gt;, Anchor automatically enforces a strict on-chain check: the key signing this transaction must match the public key permanently stored inside the &lt;code&gt;counter.authority&lt;/code&gt; field. If it doesn't, execution completely halts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proving the Tests Earn Their Keep
&lt;/h2&gt;

&lt;p&gt;To make sure this logic holds up, I wrote a test suite tracking both the happy path and critical failure states using an integrated test runner:&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="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Initializes then increments successfully&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;({...}).&lt;/span&gt;&lt;span class="nf"&gt;signers&lt;/span&gt;&lt;span class="p"&gt;([...]).&lt;/span&gt;&lt;span class="nf"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;({...}).&lt;/span&gt;&lt;span class="nf"&gt;signers&lt;/span&gt;&lt;span class="p"&gt;([...]).&lt;/span&gt;&lt;span class="nf"&gt;rpc&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;account&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;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;counterKeypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toNumber&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Assertion Failed!&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="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Why this test exists: If the runtime environment introduces a regression where state transitions fail silently or data math corrupts, this test will instantly trip.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Increment fails when the wrong authority signs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;authorityB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;signers&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;authorityB&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The transaction should have failed!&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;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Caught expected authority error!&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="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Why this test exists: This isolates our access control constraint, ensuring an unauthorized user cannot maliciously modify accounts they do not own.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Turning Point: Mutation Testing
&lt;/h2&gt;

&lt;p&gt;The real magic happened when I ran a manual mutation test pass—planting bugs on purpose to see if my test suite was genuinely "load-bearing."&lt;/p&gt;

&lt;p&gt;I intentionally went into &lt;code&gt;src/lib.rs&lt;/code&gt; and broke the core arithmetic logic by updating the step increment from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;2&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="py"&gt;.count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="py"&gt;.count&lt;/span&gt;&lt;span class="nf"&gt;.checked_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;.ok_or&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nn"&gt;ProgramError&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;Custom&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I compiled and ran the suite, the happy path test caught it red-handed. The test framework threw a glaring red flag because it expected a value of &lt;code&gt;1&lt;/code&gt; but received a &lt;code&gt;2&lt;/code&gt; directly from the account state.&lt;/p&gt;

&lt;p&gt;This taught me a massive lesson: you can't just trust a green checkmark because your tutorial said it's correct. You only truly trust your tests when you have physically watched them break for the exact right reasons.&lt;/p&gt;

&lt;p&gt;If I had another week to build on this, my next step would be implementing dynamic PDA (Program Derived Address) counters so users could spin up unique, deterministically mapped counter states linked exclusively to their wallets.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>rust</category>
      <category>testing</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Anchor Test failing on 0 !== 1 despite increment method being called in Solana Playground- Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sat, 20 Jun 2026 20:11:32 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/anchor-test-failing-on-0-1-despite-increment-method-being-called-in-solana-playground-hala-5gof</link>
      <guid>https://dev.to/halakabir234hub/anchor-test-failing-on-0-1-despite-increment-method-being-called-in-solana-playground-hala-5gof</guid>
      <description>&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/niranjannlc"&gt;@niranjannlc&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/walletguy"&gt;@walletguy&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/ajdroi"&gt;@ajdroi&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/matthewrevell"&gt;@matthewrevell&lt;/a&gt;  pleasee help an young develpoer..&lt;/p&gt;

&lt;p&gt;Hi everyone, I am running into a persistent issue on Solana Playground where my Anchor integration test is failing with an &lt;code&gt;AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: 0 !== 1.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;My smart contract includes a functional &lt;code&gt;increment&lt;/code&gt; instruction, and my &lt;code&gt;anchor.test.ts&lt;/code&gt; file correctly initializes the account and immediately calls the increment instruction right after. The code looks like this:&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="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;counter&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Increments&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;anchor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AnchorProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;env&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;anchor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;provider&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;program&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;anchor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;workspace&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Counter&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;keypair&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;anchor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;signers&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;rpc&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;state&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;program&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strictEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toNumber&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What I've tried:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Re-building and re-deploying the contract successfully on Testnet.&lt;/li&gt;
&lt;li&gt;Hard-refreshing the playground browser environment.&lt;/li&gt;
&lt;li&gt;Running &lt;code&gt;test&lt;/code&gt; directly via the playground terminal console.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Despite the successful deployment and complete test script execution, the fetched state counter remains &lt;code&gt;0&lt;/code&gt;. Is there a known state-caching or deployment-sync quirk within Solana Playground that prevents the transaction from reflecting on the account state during test runner execution? Any help would be greatly appreciated!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>100daysofsolana</category>
      <category>programming</category>
    </item>
    <item>
      <title>Three Token-2022 Mints in One Week: Fees, Yield, and Soul-Bound Tokens -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sat, 13 Jun 2026 20:53:34 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/three-token-2022-mints-in-one-week-fees-yield-and-soul-bound-tokens-hala-kabir-1f1f</link>
      <guid>https://dev.to/halakabir234hub/three-token-2022-mints-in-one-week-fees-yield-and-soul-bound-tokens-hala-kabir-1f1f</guid>
      <description>&lt;p&gt;If you are coming from a Web2 background, adding custom behavior to a digital asset usually means writing complex application middleware, hacking core database schemas, or riskily altering base-layer logic. On Solana, things are completely different. Token-2022—the upgraded SPL (Solana Program Library) token standard—introduces Token Extensions.&lt;/p&gt;

&lt;p&gt;Think of extensions as secure, native, plug-and-play middleware built directly into the blockchain's core layout. Instead of rewriting or auditing custom smart contracts, developers can opt into complex behaviors like native transaction taxes, automatic dynamic yield displays, or permanent transfer locks right at the mint's creation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This past week, during my 100 Days of Solana challenge, I went into the trenches with Token-2022 to ship three distinct mints on devnet. Here is the exact breakdown of what I built, the terminal history behind them, and when you should reach for these extensions in production.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Revenue Driver: Transfer Fees
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Extension&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extension Used:&lt;/strong&gt; &lt;code&gt;TransferFeeConfig&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Devnet Mint Address:&lt;/strong&gt; &lt;code&gt;HPjCRBKC2nhWwrK8ZoZtv6cdTXv3pbHP6b9ndgqvXtDG&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solana Explorer Link:&lt;/strong&gt; &lt;a href="https://explorer.solana.com/address/HPjCRBKC2nhWwrK8ZoZtv6cdTXv3pbHP6b9ndgqvXtDG?cluster=devnet" rel="noopener noreferrer"&gt;View on Solana Explorer&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Command&lt;/strong&gt;&lt;br&gt;
To spin up a token that automatically skims a 1% fee on every single wallet-to-wallet transfer (capped at a maximum of 5,000 whole tokens), &lt;strong&gt;I ran this in my terminal on Day 50:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create Token-2022 mint with a 1% transfer fee (100 basis points) and a cap of 5,000 tokens&lt;/span&gt;
spl-token create-token &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--program-id&lt;/span&gt; TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--decimals&lt;/span&gt; 9 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--transfer-fee-basis-points&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--transfer-fee-maximum-fee&lt;/span&gt; 5000000000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gotcha Warning: The &lt;code&gt;--transfer-fee-maximum-fee&lt;/code&gt; flag expects the amount in base units (lamports-equivalent for tokens). Because I set &lt;code&gt;--decimals 9&lt;/code&gt;, I had to multiply my desired &lt;strong&gt;5,000 token cap by 10 9 (&lt;code&gt;5000000000000&lt;/code&gt;)&lt;/strong&gt;so it didn't *&lt;em&gt;accidentally *&lt;/em&gt; cap my fees at a tiny fraction of a token!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to Reach for It&lt;/strong&gt;&lt;br&gt;
This extension lets you hardcode business economics directly into the asset. You would use this to build &lt;strong&gt;sustainable creator royalties&lt;/strong&gt; on community tokens, automate a continuous protocol revenue skim on stablecoins, or fund a &lt;strong&gt;decentralized autonomous organization (DAO)&lt;/strong&gt; treasury directly through user transaction volume without relying on third-party marketplace compliance.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. The Multi-Extension Heavyweight: Hybrid Interest-Bearing &amp;amp; Fee Mint
&lt;/h2&gt;

&lt;p&gt;The Extension&lt;br&gt;
Extensions Combined: &lt;code&gt;InterestBearingConfig&lt;/code&gt; + &lt;code&gt;TransferFeeConfig&lt;/code&gt;&lt;br&gt;
Devnet Mint Address: &lt;code&gt;F1Xf67zwZnZzBjQ18fHtaEfJ6yzq6iGatNWvT9n5BgcJ&lt;/code&gt;&lt;br&gt;
Solana Explorer Link: &lt;a href="https://explorer.solana.com/address/F1Xf67zwZnZzBjQ18fHtaEfJ6yzq6iGatNWvT9n5BgcJ?cluster=devnet" rel="noopener noreferrer"&gt;View on Solana Explorer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Architecture (&lt;code&gt;client.ts&lt;/code&gt;)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;On Day 52,&lt;/strong&gt; I wanted to see how far I could push Token-2022 by stacking extensions together. Instead of running basic CLI commands, I wrote a custom programmatic script in TypeScript (&lt;code&gt;client.ts&lt;/code&gt;) to initialize a single Hybrid Mint that accumulates interest while simultaneously enforcing transfer fees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The script successfully executed the entire transaction lifecycle on Devnet:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created the hybrid mint address and associated token accounts.&lt;/li&gt;
&lt;li&gt;Took an initial UI snapshot showing exactly &lt;code&gt;1000000&lt;/code&gt;tokens.&lt;/li&gt;
&lt;li&gt;Paused script execution for 15 seconds to allow on-chain interest to compound natively.&lt;/li&gt;
&lt;li&gt;Logged a post-pause UI balance increase to &lt;code&gt;1000000.237667&lt;/code&gt; entirely from holding!&lt;/li&gt;
&lt;li&gt;Transferred 1,000 tokens to a recipient wallet, automatically holding back the transfer fee.&lt;/li&gt;
&lt;li&gt;Ran a&lt;code&gt;FEE SWEEP&lt;/code&gt;command to harvest the withheld fees back to the primary wallet authority.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Hard Truth About Native Yield&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the subtle architectural distinction that will save future readers hours of debugging: The interest-bearing extension does not mint new supply or change your underlying raw balance state. Instead, it modifies the displayed UI amount across wallets and block explorers using an on-chain timestamp formula relative to network time. The raw amount inside your token account remains exactly the same, but the network calculates and updates what the user sees in real-time. It’s perfect for visual, UI-driven yield tracking without the inflation or gas overhead of continuous minting transactions.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. The Unbreakable Link: Non-Transferable (Soulbound) Tokens
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Extension&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extension Used: &lt;code&gt;NonTransferable&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Devnet Mint Address: &lt;code&gt;HZUuPaia9C4aHZ3W9sp31sM56FF6pYK8dPYwbgwbWht&lt;/code&gt;K&lt;/li&gt;
&lt;li&gt;Solana Explorer Link: &lt;a href="https://explorer.solana.com/address/HZUuPaia9C4aHZ3W9sp31sM56FF6pYK8dPYwbgwbWhtK?cluster=devnet" rel="noopener noreferrer"&gt;View on Solana Explorer&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Command&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Finally, on Day 54,&lt;/strong&gt; I built a token designed to act as a permanent badge of honor that absolutely** refuses to leave the wallet it’s delivered to:**&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize a soul-bound mint that locks tokens permanently to the recipient&lt;/span&gt;
spl-token create-token &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--program-id&lt;/span&gt; TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--decimals&lt;/span&gt; 0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-non-transferable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Reality of Runtime Rejection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To ensure the validator network was strictly locking down this asset, I intentionally forced a standard &lt;code&gt;spl-token transfer&lt;/code&gt; to a secondary wallet. The runtime didn't just quietly ignore it—it shut down the simulation instantly. M*&lt;em&gt;y terminal logged this exact raw program failure:&lt;/em&gt;*&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Client error: Faulty transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seeing &lt;code&gt;custom program error: 0x12&lt;/code&gt; (the hex representation of the Token-2022 program's native &lt;code&gt;CannotTransferNonTransferableToken&lt;/code&gt; error) proved that this constraint is absolute. It is enforced natively at the protocol level, making it completely impossible for bad actors or unaligned UIs to bypass the transfer restriction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Reflection
&lt;/h2&gt;

&lt;p&gt;_What surprised me most about this arc was how beautifully clean the development flow is. If you tried to combine transfer fees, UI-driven interest modifiers, and soulbound transfer locks in an EVM environment, you’d be stuck writing, testing, and auditing hundreds of lines of custom Solidity code. Token-2022 shifts the paradigm entirely: complex, production-grade token mechanics are now treated as simple initialization configurations or clean TypeScript extension vectors rather than high-stakes custom software engineering.&lt;/p&gt;

&lt;p&gt;By standardizing these patterns directly within the network, Solana makes it incredibly safe and straightforward to combine these primitives for real-world assets, institutional compliance tokens, and tamper-proof digital credentials._&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Have a coderfull day!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Needing Help for Missing 100 Days of Solana challenge -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Mon, 08 Jun 2026 16:20:21 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/needing-help-for-missing-100-days-of-solana-challenge-hala-kabir-5566</link>
      <guid>https://dev.to/halakabir234hub/needing-help-for-missing-100-days-of-solana-challenge-hala-kabir-5566</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/niranjannlc"&gt;@niranjannlc&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/matthewrevell"&gt;@matthewrevell&lt;/a&gt; please can you help or ask somone for help ....&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hi everyone,&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I need some help regarding the 100 Days of Solana challenge.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I completed Day 46 and Day 47, but the next email I received was Day 50. I didn't receive any emails for the days in between. I also remember something similar happening earlier where I never received Day 35.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could someone please check if they received:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Day 48&lt;/li&gt;
&lt;li&gt;Day 49&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;If you did receive them, could you let me know whether those days actually exist in the email sequence?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And if possible, would you be willing to share the challenge links or forward the exact emails to me? I don't want to miss any lessons or fall behind because of missing emails.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks a lot for any help!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>ai</category>
      <category>webdev</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Testers Needed For My First Google Playstore App -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Wed, 03 Jun 2026 00:45:50 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/testers-needed-for-my-first-google-playstore-app-hala-kabir-4i2m</link>
      <guid>https://dev.to/halakabir234hub/testers-needed-for-my-first-google-playstore-app-hala-kabir-4i2m</guid>
      <description>&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/janvinsha"&gt;@janvinsha&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/niranjannlc"&gt;@niranjannlc&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/matthewrevell"&gt;@matthewrevell&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/sammie_"&gt;@sammie_&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/rieljdev"&gt;@rieljdev&lt;/a&gt; &lt;strong&gt;I will apriciate it soo much.....&lt;/strong&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.amazonaws.com%2Fuploads%2Farticles%2Fdp2bc0m286u81ldhhoa6.jpeg" 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%2Fdp2bc0m286u81ldhhoa6.jpeg" alt=" " width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 EcoQuantum Solution Beta Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Join our testing group&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://groups.google.com/g/ecoquantum-beta-testers" rel="noopener noreferrer"&gt;Join the group Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Become a beta tester&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://play.google.com/apps/testing/com.ecoquantum.solution" rel="noopener noreferrer"&gt;Download here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Install the app from Play Store and test it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share Screen shot too after downloading &lt;br&gt;
Please keep the app installed for 14 days and share feedback spent 2 mins daily on app 💚.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;If any Problem please tag me in a post @halakabir234hub please, coment your problem or Email Me halakabir234@gmail.com&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;#Have A coderfull Day &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Building Production-Ready DAO Platforms: Lessons from Reviewing a Full-Stack Web3 Application By Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Tue, 02 Jun 2026 22:29:35 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/building-production-ready-dao-platforms-lessons-from-reviewing-a-full-stack-web3-application-by-2jge</link>
      <guid>https://dev.to/halakabir234hub/building-production-ready-dao-platforms-lessons-from-reviewing-a-full-stack-web3-application-by-2jge</guid>
      <description>&lt;p&gt;The blockchain industry has evolved far beyond simple token transfers and NFT marketplaces. Modern decentralized applications increasingly require sophisticated architectures that combine frontend experiences, backend services, databases, and smart contract interactions.&lt;/p&gt;

&lt;p&gt;Recently, I reviewed a DAO-style Web3 platform built using Next.js, Node.js, MongoDB, and blockchain integrations. The experience reinforced several important lessons about what it takes to build production-ready decentralized applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why DAO Platforms Are Technically Challenging
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;At first glance, a DAO appears straightforward:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Users connect a wallet&lt;/li&gt;
&lt;li&gt;* Members create proposals&lt;/li&gt;
&lt;li&gt;* Token holders vote&lt;/li&gt;
&lt;li&gt;* Smart contracts execute outcomes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;However, production systems are significantly more complex.&lt;/p&gt;

&lt;p&gt;A complete DAO platform must coordinate multiple layers:&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend Layer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The user interface is responsible for:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Wallet connection&lt;/li&gt;
&lt;li&gt;* Transaction signing&lt;/li&gt;
&lt;li&gt;* Governance dashboards&lt;/li&gt;
&lt;li&gt;* Proposal management&lt;/li&gt;
&lt;li&gt;* Voting interfaces&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Frameworks such as Next.js provide a strong foundation for building responsive and scalable user experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backend Layer
&lt;/h2&gt;

&lt;p&gt;Many newcomers assume DAO platforms are entirely on-chain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In reality, backend systems often handle:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Proposal metadata&lt;/li&gt;
&lt;li&gt;* Analytics&lt;/li&gt;
&lt;li&gt;* Notifications&lt;/li&gt;
&lt;li&gt;* Caching&lt;/li&gt;
&lt;li&gt;* User activity tracking&lt;/li&gt;
&lt;li&gt;* Search functionality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Node.js remains a popular choice due to its flexibility and strong ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blockchain Layer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The blockchain serves as the source of truth for:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Proposal creation&lt;/li&gt;
&lt;li&gt;* Voting outcomes&lt;/li&gt;
&lt;li&gt;* Treasury actions&lt;/li&gt;
&lt;li&gt;* Governance execution&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This layer introduces unique challenges related to transaction reliability, gas optimization, and security.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Importance of On-Chain and Off-Chain Synchronization
&lt;/h2&gt;

&lt;p&gt;One of the most critical architectural concerns is maintaining consistency between blockchain state and application state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A common pattern involves:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Smart contracts emit events.&lt;/li&gt;
&lt;li&gt;Backend services listen to those events.&lt;/li&gt;
&lt;li&gt;Database records are updated.&lt;/li&gt;
&lt;li&gt;Frontend applications display synchronized information.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Without proper synchronization mechanisms, users may encounter:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Incorrect vote counts&lt;/li&gt;
&lt;li&gt;* Stale governance data&lt;/li&gt;
&lt;li&gt;* Delayed proposal updates&lt;/li&gt;
&lt;li&gt;* Inconsistent treasury information&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is often where mature Web3 systems distinguish themselves from early-stage prototypes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wallet UX Matters More Than Most Teams Expect
&lt;/h2&gt;

&lt;p&gt;Many Web3 projects focus heavily on protocol design while underestimating user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A governance platform can have excellent smart contracts and still fail if users experience:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Confusing transaction prompts&lt;/li&gt;
&lt;li&gt;* Failed signatures&lt;/li&gt;
&lt;li&gt;* Unclear voting confirmations&lt;/li&gt;
&lt;li&gt;* Slow state updates&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Improving wallet interactions directly improves trust and adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Risks Every DAO Team Should Monitor
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Several risks consistently appear across DAO implementations:&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Synchronization Failures
&lt;/h2&gt;

&lt;p&gt;Blockchain events must be processed reliably to avoid inconsistent state.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Governance Abuse
&lt;/h2&gt;

&lt;p&gt;Voting systems should protect against manipulation and proposal spam.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Backend Reliability
&lt;/h2&gt;

&lt;p&gt;Even decentralized systems depend on reliable APIs, databases, and monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Security
&lt;/h2&gt;

&lt;p&gt;Treasury management, permissions, and contract execution require continuous review.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Would Prioritize in an MVP
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For an early-stage DAO platform, I would prioritize:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stable wallet integration&lt;/li&gt;
&lt;li&gt;Reliable proposal creation workflows&lt;/li&gt;
&lt;li&gt;Accurate voting mechanisms&lt;/li&gt;
&lt;li&gt;Event synchronization infrastructure&lt;/li&gt;
&lt;li&gt;Monitoring and observability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These features establish trust before scaling into more advanced governance capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Web3 engineering is increasingly becoming a systems engineering discipline.&lt;/p&gt;

&lt;p&gt;Success no longer depends solely on writing smart contracts. Teams must build reliable interactions between frontend applications, backend services, databases, and blockchain infrastructure.&lt;/p&gt;

&lt;p&gt;The future of DAO platforms will belong to teams that can balance decentralization, usability, security, and operational excellence.&lt;/p&gt;

&lt;p&gt;As I continue exploring DAO infrastructure, Solana development, and full-stack Web3 architecture, I'm excited by the opportunities that lie ahead for builders who can bridge these worlds effectively.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>ai</category>
      <category>programming</category>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Beyond Basic Mints: Building Multi-Extension &amp; Revocable Tokens on Solana 🚀-Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Tue, 02 Jun 2026 07:27:03 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/beyond-basic-mints-building-multi-extension-revocable-tokens-on-solana-hala-kabir-2l9</link>
      <guid>https://dev.to/halakabir234hub/beyond-basic-mints-building-multi-extension-revocable-tokens-on-solana-hala-kabir-2l9</guid>
      <description>&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/niranjannlc"&gt;@niranjannlc&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hey developers! 👋&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last week, I dove into basic token mints, metadata, and simple transfer fees. But this week, I went into the deeper waters of Solana token development. If you are still writing complex off-chain logic to control &lt;em&gt;how your tokens behave, you are missing out on the power of Token Extensions (Token-2022).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I just spent the last few days building and deploying advanced multi-extension tokens and testing revocable credential lifecycles on the Solana devnet. Here is a breakdown of what I built, how it works, and why it changes the game for on-chain assets.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ The Architecture: Multi-Extension Tokens
&lt;/h2&gt;

&lt;p&gt;When you use the Token Extensions Program, you aren't limited to just one modification. You can layer extensions on top of each other at the moment of creation. For my latest build, I initialized a token mint that combines protocol-level economic rules with strict transfer parameters.&lt;/p&gt;

&lt;p&gt;Instead of writing custom smart contract logic to intercept a transfer, check a condition, and deduct a fee, the Solana runtime handles it automatically at the account level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is a look at how you set up a mint with multiple extensions using the TypeScript SDK:&lt;/strong&gt;&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="nx"&gt;TypeScript&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Connection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;Keypair&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;SystemProgram&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;Transaction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;sendAndConfirmTransaction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;TOKEN_2022_PROGRAM_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;getMintLen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;ExtensionType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;createInitializeMintInstruction&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@solana/web3.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Define the extensions we want to bundle together&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;extensions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nx"&gt;ExtensionType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TransferFeeConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;ExtensionType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MetadataPointer&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Calculate the exact space needed for this specific combination&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mintLen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getMintLen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔐 The Holy Grail: Revocable Credential Lifecycles
&lt;/h2&gt;

&lt;p&gt;One of the coolest use cases I experimented with is the Revocable Credential Lifecycle. Imagine issuing a digital certification, a license, or an identity token that a user owns, but an authority needs the ability to revoke if necessary.&lt;/p&gt;

&lt;p&gt;By combining &lt;strong&gt;Non-Transferable tokens&lt;/strong&gt; &lt;em&gt;(ensuring the user can't sell or trade their identity)&lt;/em&gt; with a Permanent Delegate, the issuing authority retains the ultimate power to burn or claw back the token if the credential expires or becomes invalid.&lt;/p&gt;

&lt;p&gt;When you test this on-chain, the blockchain itself rejects any standard user transfer attempts with a hard &lt;code&gt;TRANSFER FAILED&lt;/code&gt; error, yet the designated delegate key can execute administrative actions seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What I Learned &amp;amp; What Clicked
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Space Calculation Matters:&lt;/strong&gt; You can't just allocate a random buffer size for Token-2022 mints. Because extensions vary in size, you must use &lt;code&gt;getMintLen([ExtensionType])&lt;/code&gt; to calculate the exact byte size before creating the account account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocol &amp;gt; Off-Chain&lt;/strong&gt;: Enforcing compliance and fees at the protocol level means absolute security. No one can bypass your transfer fees by interacting with a different liquidity pool or decentralized exchange; the rules are baked into the token's DNA.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🚀 What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that I have multi-extensions and credential &lt;strong&gt;lifecycles&lt;/strong&gt; successfully running on the devnet, my next move is plugging these advanced tokens into custom Anchor programs to see how they behave when interacting with &lt;strong&gt;complex on-chain logic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're still building on the original SPL token standard, it’s time to upgrade. Check out the official Solana Token Extensions Documentation and start shipping!&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Have a coderfull day 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>ai</category>
    </item>
    <item>
      <title>Needing Help for Missing 100 Days of Solana challenge -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Mon, 01 Jun 2026 12:27:42 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/needing-help-for-missing-100-days-of-solana-challenge-hala-kabir-b48</link>
      <guid>https://dev.to/halakabir234hub/needing-help-for-missing-100-days-of-solana-challenge-hala-kabir-b48</guid>
      <description>&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/niranjannlc"&gt;@niranjannlc&lt;/a&gt; &lt;em&gt;please can you help or ask somone for help ....&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hi everyone,&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I need some help regarding the 100 Days of Solana challenge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I completed Day 39 and Day 40, but the next email I received was Day 43. I didn't receive any emails for the days in between. I also remember something similar happening earlier where I never received Day 35.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could someone please check if they received:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;* Day 35&lt;/li&gt;
&lt;li&gt;* Day 41&lt;/li&gt;
&lt;li&gt;* Day 42&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;If you did receive them, could you let me know whether those days actually exist in the email sequence?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And if possible, would you be willing to share the challenge links or forward the exact emails to me? I don't want to miss any lessons or fall behind because of missing emails.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks a lot for any help!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>ai</category>
      <category>webdev</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Understanding Hermes Agent: Why Agentic AI Is More Than Just a Chatbot</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sun, 31 May 2026 19:19:04 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/understanding-hermes-agent-why-agentic-ai-is-more-than-just-a-chatbot-5h4n</link>
      <guid>https://dev.to/halakabir234hub/understanding-hermes-agent-why-agentic-ai-is-more-than-just-a-chatbot-5h4n</guid>
      <description>&lt;p&gt;Artificial intelligence has advanced rapidly over the last few years, but many AI systems still operate as simple chat interfaces. They can answer questions, generate text, and assist with tasks, yet they often stop at a single response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is where agentic AI becomes interesting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hermes Agent is an &lt;strong&gt;open-source agent&lt;/strong&gt; framework designed to go beyond traditional chatbot interactions. Instead of only responding to prompts, it can plan tasks, use tools, and work through multiple steps before producing an answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Hermes Agent Different?
&lt;/h2&gt;

&lt;p&gt;One of the biggest differences between a standard chatbot and an AI agent is the ability to take action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A traditional chatbot might answer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"What is the current gold price?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An agent, however, can follow a process:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retrieve information from a tool or data source.&lt;/li&gt;
&lt;li&gt;Analyze the information.&lt;/li&gt;
&lt;li&gt;Compare findings with additional context.&lt;/li&gt;
&lt;li&gt;Generate a useful summary.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach allows the AI to solve more complex problems rather than simply responding with a single generated answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Multi-Step Reasoning
&lt;/h2&gt;

&lt;p&gt;Many real-world tasks cannot be completed in one step.&lt;/p&gt;

&lt;p&gt;Research, software development, data analysis, and automation often require a sequence of actions. Hermes Agent is designed with this idea in mind.&lt;/p&gt;

&lt;p&gt;Instead of jumping directly to an answer, the agent can break a larger goal into smaller tasks and work through them logically. This creates a workflow that feels much closer to how humans approach problem-solving.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Tool Use Matters
&lt;/h2&gt;

&lt;p&gt;Tool use is one of the most important capabilities in modern AI agents.&lt;/p&gt;

&lt;p&gt;Without tools, an AI model is limited to the information available within the model itself. With tools, the agent can interact with external systems, retrieve information, and perform actions that would otherwise be impossible.&lt;/p&gt;

&lt;p&gt;This capability significantly expands the types of problems an agent can help solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source Is Important
&lt;/h2&gt;

&lt;p&gt;Another aspect that makes Hermes Agent compelling is its open-source nature.&lt;/p&gt;

&lt;p&gt;Developers can inspect how the system works, customize workflows, integrate new tools, and run the agent on their own infrastructure. This level of transparency and flexibility is important as AI systems become increasingly capable.&lt;/p&gt;

&lt;p&gt;Open-source development also encourages experimentation and innovation by allowing the community to contribute improvements and new ideas.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Take
&lt;/h2&gt;

&lt;p&gt;What excites me most about Hermes Agent is not its ability to answer questions. Many AI systems can already do that.&lt;/p&gt;

&lt;p&gt;The more interesting shift is toward AI systems that can reason through tasks, use tools effectively, and execute workflows. As AI continues to evolve, I believe these agentic capabilities will become increasingly important.&lt;/p&gt;

&lt;p&gt;Hermes Agent represents an interesting step in that direction by combining planning, tool use, and multi-step reasoning within an open-source framework that developers can explore and build upon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether you are interested in AI research, automation, or building intelligent applications, Hermes Agent is a project worth paying attention to.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>From Basic Tokens to Soulbound Assets: What I Learned Building on Solana Token-2022 -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Mon, 25 May 2026 21:33:02 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/from-basic-tokens-to-soulbound-assets-what-i-learned-building-on-solana-token-2022-hala-kabir-48bc</link>
      <guid>https://dev.to/halakabir234hub/from-basic-tokens-to-soulbound-assets-what-i-learned-building-on-solana-token-2022-hala-kabir-48bc</guid>
      <description>&lt;h1&gt;
  
  
  From Basic Tokens to Soulbound Assets: What I Learned Building on Solana Token-2022
&lt;/h1&gt;

&lt;p&gt;Over the past few days, I went from knowing almost nothing about Solana tokens to building Token-2022 assets with metadata, transfer fee mechanics, and even non-transferable “&lt;strong&gt;soulbound&lt;/strong&gt;” tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coming from a more Web2 mindset, one of the biggest realizations for me was this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On Solana, token behavior is enforced directly by the blockchain protocol itself not just by application code.&lt;/p&gt;

&lt;p&gt;That completely changed how I think about digital assets.&lt;/p&gt;




&lt;h1&gt;
  
  
  Starting With a Simple Token
&lt;/h1&gt;

&lt;p&gt;My journey started with creating a basic token mint on Solana devnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At first, it felt similar to creating records in a database:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create a mint&lt;/li&gt;
&lt;li&gt;create token accounts&lt;/li&gt;
&lt;li&gt;mint supply&lt;/li&gt;
&lt;li&gt;transfer between wallets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But after experimenting more deeply, I realized Solana tokens are much more programmable than I expected.&lt;/p&gt;

&lt;p&gt;Using the Token-2022 program, I could attach rules and behavior directly to the token itself.&lt;/p&gt;




&lt;h1&gt;
  
  
  Adding Metadata to Tokens
&lt;/h1&gt;

&lt;p&gt;One of the first things I learned was that a token without metadata is basically just an address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding metadata gave the token:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a name&lt;/li&gt;
&lt;li&gt;a symbol&lt;/li&gt;
&lt;li&gt;a metadata URI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createMint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;payer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;payer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;TOKEN_2022_PROGRAM_ID&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This made the token feel more like a real product instead of raw blockchain data.&lt;/p&gt;




&lt;h1&gt;
  
  
  Understanding Transfer Fees
&lt;/h1&gt;

&lt;p&gt;The next concept I explored was transfer fees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Web2 systems, fee logic is usually handled by:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;backend servers&lt;/li&gt;
&lt;li&gt;payment processors&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But with Token-2022, fee behavior can be attached directly to the token design itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I simulated a 2% transfer fee model where:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sending 100 tokens&lt;/li&gt;
&lt;li&gt;resulted in the recipient receiving 98&lt;/li&gt;
&lt;li&gt;while 2 tokens were treated as fees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was the moment I started understanding how blockchain protocols can enforce economic rules at the asset level.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Most Interesting Part: Soulbound Tokens
&lt;/h1&gt;

&lt;p&gt;The most fascinating experiment for me was creating non-transferable tokens.&lt;/p&gt;

&lt;p&gt;These are sometimes called “&lt;strong&gt;soulbound&lt;/strong&gt;” tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead of behaving like currency, they behave more like:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;certificates&lt;/li&gt;
&lt;li&gt;badges&lt;/li&gt;
&lt;li&gt;credentials&lt;/li&gt;
&lt;li&gt;identity proofs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I created a Token-2022 mint and intentionally simulated a failed transfer attempt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TRANSFER FAILED
Reason: Token is NON-TRANSFERABLE
Blockchain rejected transfer attempt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first this seemed strange because most blockchain discussions focus heavily on trading and transfers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But then it clicked:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not every digital asset should be tradable.&lt;/p&gt;

&lt;p&gt;A university certificate, event attendance badge, or verified identity token only has meaning if it stays attached to the original wallet.&lt;/p&gt;

&lt;p&gt;That is where non-transferable tokens become powerful.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Surprised Me Most
&lt;/h1&gt;

&lt;p&gt;The biggest surprise was how much token behavior can be enforced at the protocol level.&lt;/p&gt;

&lt;p&gt;In Web2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;platforms enforce rules in backend code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the blockchain itself can enforce those rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes the trust model completely.&lt;/p&gt;

&lt;p&gt;Another thing that surprised me was how quickly tooling differences appear between environments. Some Token-2022 CLI commands were unavailable in Solana Playground, so I had to adapt by using TypeScript implementations instead.&lt;/p&gt;

&lt;p&gt;That debugging process honestly taught me a lot more than just following tutorials.&lt;/p&gt;




&lt;h1&gt;
  
  
  Key Concepts I Learned
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Over these exercises, I learned:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how token mints work&lt;/li&gt;
&lt;li&gt;how token accounts hold balances&lt;/li&gt;
&lt;li&gt;how metadata gives identity to assets&lt;/li&gt;
&lt;li&gt;how transfer fee systems operate&lt;/li&gt;
&lt;li&gt;how Token-2022 extends the original SPL token standard&lt;/li&gt;
&lt;li&gt;how non-transferable tokens can represent credentials instead of currency&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why Token-2022 Matters
&lt;/h1&gt;

&lt;p&gt;Before this challenge, I thought tokens were mostly about cryptocurrencies.&lt;/p&gt;

&lt;p&gt;Now I see them more as programmable digital assets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A token can represent:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;money&lt;/li&gt;
&lt;li&gt;reputation&lt;/li&gt;
&lt;li&gt;access&lt;/li&gt;
&lt;li&gt;memberships&lt;/li&gt;
&lt;li&gt;achievements&lt;/li&gt;
&lt;li&gt;credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And Solana’s Token-2022 program gives developers much more flexibility in designing those systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  What’s Next
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;I want to continue exploring:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;advanced Token Extensions&lt;/li&gt;
&lt;li&gt;NFTs and compressed NFTs&lt;/li&gt;
&lt;li&gt;on-chain identity systems&lt;/li&gt;
&lt;li&gt;Solana program development&lt;/li&gt;
&lt;li&gt;real-world Web3 applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This challenge gave me a much deeper appreciation for how blockchain systems can move beyond speculation and become infrastructure for digital ownership and identity.&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                      # Have a Coderfull Day
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>100daysofsolana</category>
      <category>programming</category>
      <category>blockchain</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Biggest Google I/O 2026 Announcement Wasn’t a Model -Hala Kabir</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sun, 24 May 2026 18:59:02 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/the-biggest-google-io-2026-announcement-wasnt-a-model-hala-kabir-2lp6</link>
      <guid>https://dev.to/halakabir234hub/the-biggest-google-io-2026-announcement-wasnt-a-model-hala-kabir-2lp6</guid>
      <description>&lt;p&gt;When people talk about Google I/O 2026, most conversations will probably focus on Gemini’s newest models and multimodal AI capabilities.&lt;/p&gt;

&lt;p&gt;But after watching the developer keynote, I think the most important announcement was something bigger than a model release.&lt;/p&gt;

&lt;p&gt;It was Google’s vision for agent-first development through Antigravity.&lt;/p&gt;

&lt;p&gt;More than any individual demo, the keynote showed a shift in how software may be built in the future: developers increasingly defining goals and workflows while intelligent agents handle execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  From AI Assistants to AI Agents
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;One line from the keynote stood out to me:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;The big shift is our move towards agents, from AI that simply assists you to agents that help you get stuff done.&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;That idea appeared throughout the entire presentation.&lt;/p&gt;

&lt;p&gt;For the past few years, most AI tools for developers have worked like enhanced assistants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;autocomplete,&lt;/li&gt;
&lt;li&gt;debugging help,&lt;/li&gt;
&lt;li&gt;code suggestions,&lt;/li&gt;
&lt;li&gt;or documentation summaries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google’s demos at I/O 2026 felt different.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Instead of simply helping developers write code faster,&lt;/em&gt; &lt;strong&gt;Antigravity focused on agents that can:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;execute workflows,&lt;/li&gt;
&lt;li&gt;manage tasks,&lt;/li&gt;
&lt;li&gt;coordinate tools,&lt;/li&gt;
&lt;li&gt;provision environments,&lt;/li&gt;
&lt;li&gt;and operate with increasing autonomy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;The keynote wasn’t just about AI-generated code. It was about software workflows becoming agent-driven.&lt;/p&gt;

&lt;h2&gt;
  
  
  Antigravity Was the Real Star of the Show
&lt;/h2&gt;

&lt;p&gt;The most interesting part of the keynote for me was how everything connected back to Antigravity.&lt;/p&gt;

&lt;p&gt;Google introduced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;managed agents,&lt;/li&gt;
&lt;li&gt;dynamic subagents,&lt;/li&gt;
&lt;li&gt;scheduled tasks,&lt;/li&gt;
&lt;li&gt;sandboxed execution environments,&lt;/li&gt;
&lt;li&gt;Android integrations,&lt;/li&gt;
&lt;li&gt;terminal workflows,&lt;/li&gt;
&lt;li&gt;and tooling built specifically for AI-native development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What stood out most was that Google positioned Antigravity not as a chatbot, but as infrastructure for orchestrating intelligent systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That feels like a major shift.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Managed Agents Solve a Real Problem
&lt;/h2&gt;

&lt;p&gt;One of the smartest announcements was managed agents inside the Gemini API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building AI agent systems normally requires developers to handle:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;orchestration,&lt;/li&gt;
&lt;li&gt;execution environments,&lt;/li&gt;
&lt;li&gt;scaling,&lt;/li&gt;
&lt;li&gt;security,&lt;/li&gt;
&lt;li&gt;and infrastructure management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Google’s approach simplifies this dramatically:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;one API call gives developers both the agent and the execution environment.&lt;/p&gt;

&lt;p&gt;The Stitch demo showed this clearly. Their agent connected to a GitHub repository, analyzed the codebase, and automatically generated a design system file.&lt;/p&gt;

&lt;p&gt;Not just text generation.&lt;/p&gt;

&lt;p&gt;Actual development workflow automation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And importantly, Google emphasized that developers can focus on building experiences instead of managing infrastructure complexity.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  “Markdown Is the Hottest Programming Language”
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;One of the most memorable moments came when Logan Kilpatrick joked:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“&lt;em&gt;Honestly, it feels like the hottest new programming language is Markdown.&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;It was funny, but also surprisingly accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Many of the workflows shown in the keynote relied on defining:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;instructions,&lt;/li&gt;
&lt;li&gt;tools,&lt;/li&gt;
&lt;li&gt;skills,&lt;/li&gt;
&lt;li&gt;and orchestration logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;through Markdown-based configurations.&lt;/p&gt;

&lt;p&gt;That changes the role of developers.&lt;/p&gt;

&lt;p&gt;Instead of manually implementing every process step-by-step, developers increasingly define intent, constraints, and capabilities while agents coordinate execution.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In many ways, developers are becoming orchestrators of intelligent systems rather than only writers of low-level implementation logic.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Studio Is Becoming a Real Development Platform
&lt;/h2&gt;

&lt;p&gt;Another major takeaway was how quickly Google AI Studio is evolving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The keynote demonstrated:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;app generation,&lt;/li&gt;
&lt;li&gt;Cloud Run deployment,&lt;/li&gt;
&lt;li&gt;Android app creation,&lt;/li&gt;
&lt;li&gt;Firebase integration,&lt;/li&gt;
&lt;li&gt;Google Workspace integrations,&lt;/li&gt;
&lt;li&gt;and Play Store publishing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, AI Studio feels much closer to an AI-native development environment than a simple experimentation playground.&lt;/p&gt;

&lt;p&gt;The Android demos especially stood out to me. Seeing Kotlin Android apps generated, previewed, tested, and prepared for publishing through agent workflows felt like a preview of how development may look in the near future.&lt;/p&gt;

&lt;p&gt;What excites me most is not replacing developers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It’s reducing friction.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A huge amount of software development time is spent on:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;setup,&lt;/li&gt;
&lt;li&gt;configuration,&lt;/li&gt;
&lt;li&gt;repetitive debugging,&lt;/li&gt;
&lt;li&gt;deployment steps,&lt;/li&gt;
&lt;li&gt;and environment management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If agents can reliably reduce that overhead, developers can spend more time focusing on:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture,&lt;/li&gt;
&lt;li&gt;user experience,&lt;/li&gt;
&lt;li&gt;product thinking,&lt;/li&gt;
&lt;li&gt;and solving meaningful problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Web Announcements Were Quietly Important
&lt;/h2&gt;

&lt;p&gt;The Chrome and web platform demos may end up being some of the most underrated announcements from the keynote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features like:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebMCP,&lt;/li&gt;
&lt;li&gt;Modern Web Guidance,&lt;/li&gt;
&lt;li&gt;and Chrome DevTools for agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;suggest that Google is preparing the web itself for AI-native interaction.&lt;/p&gt;

&lt;p&gt;The idea that websites can expose structured capabilities directly to browser agents feels like the early foundation of an “&lt;strong&gt;agentic web.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One detail I found especially interesting was the emphasis on accessibility metadata and semantic structure. As browser agents become more capable, accessibility may become even more important because agents rely heavily on structured understanding of interfaces.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s a fascinating shift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Google I/O 2026 showcased impressive AI models and polished demos, but I think the deeper story was about the evolution of software development itself.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The keynote presented a future where:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;agents collaborate,&lt;/li&gt;
&lt;li&gt;workflows become autonomous,&lt;/li&gt;
&lt;li&gt;environments provision themselves,&lt;/li&gt;
&lt;li&gt;and developers focus more on defining outcomes than manually implementing every step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are moving from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“How do I build this?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“How do I define what I want built?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And I think Google Antigravity may end up being one of the most important steps toward that future.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was written after watching the Google I/O 2026 developer keynote and reflecting on the direction of agent-first development.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;--&amp;gt; By Hala Kabir&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>🚀 Looking for Android Beta Testers – EcoQuantum Solution 🌍💚 Hello DEV Community!</title>
      <dc:creator>Hala Kabir</dc:creator>
      <pubDate>Sun, 24 May 2026 04:36:58 +0000</pubDate>
      <link>https://dev.to/halakabir234hub/looking-for-android-beta-testers-ecoquantum-solution-hello-dev-community-1hm6</link>
      <guid>https://dev.to/halakabir234hub/looking-for-android-beta-testers-ecoquantum-solution-hello-dev-community-1hm6</guid>
      <description>&lt;p&gt;We recently launched the beta version of EcoQuantum Solution, a youth-led AI &amp;amp; sustainability platform focused on climate awareness, smart technology, and social impact.&lt;/p&gt;

&lt;p&gt;We are currently looking for Android beta testers who can help us by:&lt;br&gt;
✅ Testing app performance&lt;br&gt;
✅ Reporting bugs or crashes&lt;br&gt;
✅ Giving honest UX feedback&lt;br&gt;
✅ Suggesting improvements before wider rollout&lt;/p&gt;

&lt;p&gt;If you’re interested in supporting an early-stage mission-driven startup, feel free to comment or DM your Gmail address for access to our Google Play closed testing track.&lt;/p&gt;

&lt;p&gt;Your feedback can help us improve the app and create better technology for humanity. 🌱✨&lt;/p&gt;

&lt;h1&gt;
  
  
  Android #BetaTesting #GooglePlay #AI #ClimateTech #Startup #DEVCommunity #EcoQuantumSolution
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>testdev</category>
      <category>startup</category>
      <category>climate</category>
    </item>
  </channel>
</rss>
