<?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: Samuel Emmanuel</title>
    <description>The latest articles on DEV Community by Samuel Emmanuel (@sammynug).</description>
    <link>https://dev.to/sammynug</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%2F3935223%2F63181f05-1509-4be1-a5f2-0cceca92567e.jpg</url>
      <title>DEV Community: Samuel Emmanuel</title>
      <link>https://dev.to/sammynug</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sammynug"/>
    <language>en</language>
    <item>
      <title>Program Derived Addresses (PDAs): The Solana Feature Every Web2 Developer Should Understand</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Mon, 29 Jun 2026 15:16:05 +0000</pubDate>
      <link>https://dev.to/sammynug/program-derived-addresses-pdas-the-solana-feature-every-web2-developer-should-understand-29k3</link>
      <guid>https://dev.to/sammynug/program-derived-addresses-pdas-the-solana-feature-every-web2-developer-should-understand-29k3</guid>
      <description>&lt;p&gt;If you're coming from a Web2 background, one of the first things that feels strange about Solana is that applications don't always create accounts using private keys.&lt;br&gt;
Instead, they often use something called a "Program Derived Address (PDA)".&lt;/p&gt;

&lt;p&gt;At first, that sounded complicated to me.&lt;br&gt;
After building several Anchor programs during my #100DaysOfSolana challenge, I realized PDAs aren't magic at all they solve a problem that every backend developer already understands.&lt;/p&gt;

&lt;p&gt;Let's look at them through a Web2 lens.&lt;/p&gt;
&lt;h2&gt;
  
  
  How We Usually Think in Web2
&lt;/h2&gt;

&lt;p&gt;Imagine you're building a SaaS application.&lt;/p&gt;

&lt;p&gt;You have a table like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;User ID&lt;/th&gt;
&lt;th&gt;Counter&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;205&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;318&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Whenever a request arrives, you already know the user's ID.&lt;/p&gt;

&lt;p&gt;You don't generate a random database key every time. Instead, you derive which row belongs to the user.&lt;br&gt;
Your application always knows exactly where that user's data lives.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Problem on Solana
&lt;/h2&gt;

&lt;p&gt;My first Anchor counter program didn't work like that.&lt;/p&gt;

&lt;p&gt;To create a counter, I generated a brand new keypair for the account. That worked... but it meant the client had to remember that keypair forever.&lt;br&gt;
Lose it, and you lose the ability to easily locate your counter account.&lt;br&gt;
That approach is fine for tutorials but not for real applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  Enter Program Derived Addresses
&lt;/h2&gt;

&lt;p&gt;A PDA is an account whose address is deterministically derived from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one or more seeds&lt;/li&gt;
&lt;li&gt;your program ID&lt;/li&gt;
&lt;li&gt;a bump value
For example:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="n"&gt;seeds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s"&gt;b"counter"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="nf"&gt;.key&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.as_ref&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;Every time the same user calls the program, Anchor derives the exact same address.&lt;/p&gt;

&lt;p&gt;No database lookup.&lt;br&gt;
No random account generation.&lt;br&gt;
No extra storage needed to remember where the account lives.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Web2 Analogy
&lt;/h2&gt;

&lt;p&gt;Imagine this function:&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;getCounter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Internally your backend might do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;counters&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user ID uniquely identifies the row.&lt;/p&gt;

&lt;p&gt;PDAs work almost the same way.&lt;br&gt;
Instead of looking up a database row, Solana derives an account address from predictable inputs.&lt;/p&gt;

&lt;p&gt;It's closer to computing a deterministic primary key than generating a UUID.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why This Is Powerful
&lt;/h2&gt;

&lt;p&gt;Suppose Alice opens your app.&lt;/p&gt;

&lt;p&gt;Anchor derives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;("counter", Alice)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bob opens the app.&lt;/p&gt;

&lt;p&gt;Anchor derives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;("counter", Bob)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both users automatically get different accounts.&lt;/p&gt;

&lt;p&gt;No collisions.&lt;br&gt;
No bookkeeping.&lt;/p&gt;

&lt;p&gt;Your program always knows where each user's state belongs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where Anchor Helps
&lt;/h2&gt;

&lt;p&gt;One thing I really appreciate about Anchor is how much boilerplate disappears.&lt;br&gt;
Instead of manually checking addresses, ownership, and account creation, you simply declare constraints:&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;#[account(&lt;/span&gt;
    &lt;span class="nd"&gt;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;user,&lt;/span&gt;
    &lt;span class="nd"&gt;seeds&lt;/span&gt; &lt;span class="nd"&gt;=&lt;/span&gt; &lt;span class="err"&gt;[&lt;/span&gt;&lt;span class="s"&gt;b"counter"&lt;/span&gt;&lt;span class="nd"&gt;,&lt;/span&gt; &lt;span class="nd"&gt;user&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nd"&gt;key()&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nd"&gt;as_ref()]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;bump&lt;/span&gt;
&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anchor then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;derives the PDA&lt;/li&gt;
&lt;li&gt;computes the canonical bump&lt;/li&gt;
&lt;li&gt;creates the account&lt;/li&gt;
&lt;li&gt;allocates storage&lt;/li&gt;
&lt;li&gt;makes the program sign for it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All before your instruction handler even runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Comes from Constraints
&lt;/h2&gt;

&lt;p&gt;Another thing that clicked for me was that authorization often lives in account constraints rather than business logic.&lt;br&gt;
For example:&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;#[account(&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;user&lt;/span&gt;
&lt;span class="nd"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&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;#[account(&lt;/span&gt;
    &lt;span class="nd"&gt;constraint&lt;/span&gt; &lt;span class="nd"&gt;=&lt;/span&gt; &lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="nd"&gt;config&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nd"&gt;paused&lt;/span&gt;
&lt;span class="nd"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of writing lots of validation code inside the handler, Anchor verifies everything first.&lt;br&gt;
If validation fails, the transaction never reaches your business logic.&lt;br&gt;
As a backend developer, it reminded me of middleware that rejects unauthorized requests before your controller executes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;One thing the Solana journey has taught me is that blockchain development isn't about throwing away Web2 knowledge.&lt;/p&gt;

&lt;p&gt;It's about applying familiar backend concepts in a different environment.&lt;br&gt;
Database rows become accounts.&lt;br&gt;
Primary keys become deterministic addresses.&lt;br&gt;
Middleware becomes account constraints.&lt;/p&gt;

&lt;p&gt;Tables become on-chain state.&lt;br&gt;
Once I started viewing Solana through concepts I already understood, everything became much easier to reason about.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm Building
&lt;/h2&gt;

&lt;p&gt;This article is based on one of the programs I built during my #100DaysOfSolana challenge.&lt;/p&gt;

&lt;p&gt;The project evolved from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a simple counter&lt;/li&gt;
&lt;li&gt;to stateful accounts&lt;/li&gt;
&lt;li&gt;to authorization with &lt;code&gt;has_one&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;to negative testing with LiteSVM&lt;/li&gt;
&lt;li&gt;to per-user PDAs&lt;/li&gt;
&lt;li&gt;to configuration PDAs&lt;/li&gt;
&lt;li&gt;to reclaiming rent by closing PDA accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each step felt surprisingly familiar once I translated it into Web2 concepts.&lt;/p&gt;

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

&lt;p&gt;If you're a Web2 developer curious about Solana, don't start by trying to memorize blockchain terminology.&lt;br&gt;
Instead, ask:&lt;/p&gt;

&lt;p&gt;"What problem is this solving that I already solve every day?"&lt;br&gt;
More often than not, there's a familiar backend concept hiding underneath.&lt;/p&gt;

&lt;p&gt;That's what finally made PDAs click for me.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;I'm documenting my learning journey through &lt;strong&gt;#100DaysOfSolana&lt;/strong&gt;, sharing what I build and translating blockchain concepts into language that backend developers already understand.&lt;/p&gt;

&lt;p&gt;If you're learning Solana too, I'd love to connect and learn together.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>writing</category>
    </item>
    <item>
      <title>My Solana Learning Journey So Far 🚀</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Tue, 02 Jun 2026 09:55:08 +0000</pubDate>
      <link>https://dev.to/sammynug/my-solana-learning-journey-so-far-2kef</link>
      <guid>https://dev.to/sammynug/my-solana-learning-journey-so-far-2kef</guid>
      <description>&lt;p&gt;Over the past few days, I've been diving into Solana development, and it's been a fascinating shift from traditional web development. I've built wallets, worked with keypairs, explored SOL and lamports, connected browser wallets using the Wallet Standard API, and interacted with both Devnet and Mainnet through RPC calls.&lt;/p&gt;

&lt;p&gt;One thing that surprised me was how identity works in Web3. In Web2, we're used to usernames, emails, and passwords. In Solana, your identity is essentially a cryptographic keypair, and wallet extensions handle authentication without exposing private keys to applications. That was a major mindset shift for me.&lt;/p&gt;

&lt;p&gt;What really clicked was understanding that most blockchain interactions are just requests to a network. Once I started using RPC endpoints to fetch balances, transaction history, and account data, the blockchain felt much less mysterious and more like a distributed system that exposes APIs.&lt;/p&gt;

&lt;p&gt;What's still a bit confusing is the deeper relationship between accounts, programs, and how on-chain data is structured. I understand the basics, but I'm looking forward to learning more about Solana programs and seeing how everything fits together when building full decentralized applications.&lt;/p&gt;

&lt;p&gt;Overall, the journey has been both challenging and rewarding. Every day I gain a better understanding of how blockchain applications work under the hood, and I'm excited to keep building and exploring the Solana ecosystem.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>devjourney</category>
      <category>javascript</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Day 7 of my Solana learning journey</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Mon, 01 Jun 2026 14:12:00 +0000</pubDate>
      <link>https://dev.to/sammynug/day-7-of-my-solana-learning-journey-1gja</link>
      <guid>https://dev.to/sammynug/day-7-of-my-solana-learning-journey-1gja</guid>
      <description>&lt;p&gt;Today, I built a Solana web application that connects to browser wallet extensions using the Wallet Standard API. The application can discover compatible wallets, connect securely with user permission, and retrieve wallet account information without ever handling private keys.&lt;/p&gt;

&lt;p&gt;One of the biggest shifts from traditional web development has been realizing that wallet extensions manage identity and authentication. Instead of creating accounts with usernames, emails, and passwords, users authenticate through cryptographic wallets that they control.&lt;/p&gt;

&lt;p&gt;This project gave me a deeper understanding of how Web3 applications interact with users while maintaining security and ownership of private keys.&lt;/p&gt;

&lt;p&gt;Next, I'm excited to move beyond wallet connections and balance checks and start building full-featured Web3 applications on Solana, including creating and signing transactions.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>javascript</category>
    </item>
    <item>
      <title>SSH Keys, But for the Internet: Understanding Identity on Solana</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Wed, 27 May 2026 12:49:24 +0000</pubDate>
      <link>https://dev.to/sammynug/ssh-keys-but-for-the-internet-understanding-identity-on-solana-bk5</link>
      <guid>https://dev.to/sammynug/ssh-keys-but-for-the-internet-understanding-identity-on-solana-bk5</guid>
      <description>&lt;p&gt;If you’ve spent years building in Web2, the idea of “identity on a blockchain” can sound strange at first. Where are the usernames? The login forms? The OAuth providers?&lt;/p&gt;

&lt;p&gt;On Solana, identity works very differently but there’s a good chance you already understand the core idea without realizing it.&lt;/p&gt;

&lt;p&gt;Think about SSH keys.&lt;/p&gt;

&lt;p&gt;When you SSH into a server, you don’t type “who you are” every time. Instead, you prove ownership of a private key. The server trusts the corresponding public key, and that cryptographic relationship becomes your identity.&lt;/p&gt;

&lt;p&gt;Solana works almost exactly the same way.&lt;/p&gt;

&lt;p&gt;Your keypair is your identity&lt;br&gt;
In Solana, identity starts with a keypair:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A private key that only you control&lt;/li&gt;
&lt;li&gt;Public key that everyone can see
When you create a wallet, you are really generating a cryptographic identity.
Your public key becomes your address on the network. It looks something like this:
14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5, That’s not a username stored in a database. It’s a 32-byte Ed25519 public key encoded in Base58.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Base58 exists for practical reasons:&lt;br&gt;
It removes visually confusing characters like 0, O, I, and l&lt;br&gt;
It avoids punctuation that breaks copying and URLs&lt;br&gt;
It makes addresses safer for humans to handle&lt;br&gt;
Under the hood, though, it’s still just a public key.&lt;/p&gt;

&lt;p&gt;The network replaces the company&lt;br&gt;
In Web2, identity is usually managed by a company.&lt;br&gt;
Your Twitter account exists because Twitter’s database says it exists.&lt;br&gt;
Your access depends on:&lt;br&gt;
Email/password records&lt;br&gt;
Session tokens&lt;br&gt;
OAuth providers&lt;br&gt;
Admin systems&lt;br&gt;
Ultimately, the platform decides whether your account is valid.&lt;br&gt;
Solana removes that middle layer.&lt;br&gt;
There is no central database saying “Alice owns this account.” Instead, ownership is proven cryptographically.&lt;/p&gt;

&lt;p&gt;If you can produce a valid signature using the private key, the network accepts that you are the owner.&lt;br&gt;
That’s it.&lt;br&gt;
No support ticket.&lt;br&gt;
No password reset.&lt;br&gt;
No admin override.&lt;br&gt;
This is one of the biggest mindset shifts for Web2 developers: identity is not granted by an application. Identity is derived from cryptographic control.&lt;/p&gt;

&lt;p&gt;Accounts on Solana are more like containers&lt;br&gt;
Another important difference is that Solana’s accounts are not “user profiles.”&lt;br&gt;
On Solana, everything lives inside accounts:&lt;br&gt;
Wallet balances&lt;br&gt;
Program state&lt;br&gt;
Smart contracts&lt;br&gt;
NFTs&lt;br&gt;
Governance records&lt;br&gt;
Accounts are the fundamental storage units of the network.&lt;br&gt;
Your keypair controls some of those accounts by signing transactions.&lt;/p&gt;

&lt;p&gt;If you’re coming from backend development, think of it this way:&lt;br&gt;
In Web2:&lt;br&gt;
Your app owns the database&lt;br&gt;
Users authenticate against your system&lt;br&gt;
Your backend decides permissions&lt;/p&gt;

&lt;p&gt;In Solana:&lt;br&gt;
The blockchain is the shared database&lt;br&gt;
Users authenticate with signatures&lt;br&gt;
Programs verify permissions cryptographically&lt;br&gt;
Instead of checking:&lt;br&gt;
if (session.user.id === post.ownerId)&lt;br&gt;
A Solana program checks whether the transaction was signed by the expected public key.&lt;br&gt;
The trust model moves from application logic to cryptographic proof&lt;/p&gt;

&lt;p&gt;Identity becomes portable&lt;br&gt;
This is where things get interesting.&lt;br&gt;
In Web2, your identity is fragmented:&lt;br&gt;
GitHub knows one version of you&lt;br&gt;
Discord knows another&lt;br&gt;
Stripe knows another&lt;br&gt;
None of them automatically trust each other&lt;/p&gt;

&lt;p&gt;On Solana, the same identity works everywhere on the network.&lt;br&gt;
One wallet can:&lt;br&gt;
Hold tokens&lt;br&gt;
Vote in governance systems&lt;br&gt;
Trade NFTs&lt;br&gt;
Interact with DeFi protocols&lt;br&gt;
Build on-chain reputation&lt;br&gt;
Sign into apps&lt;/p&gt;

&lt;p&gt;And no application has to ask another application for permission.&lt;br&gt;
That portability is possible because the identity layer is shared infrastructure.&lt;/p&gt;

&lt;p&gt;Signing replaces logging in&lt;br&gt;
A useful mental model is this:&lt;br&gt;
Web2 apps ask:&lt;br&gt;
“Do you know the password?”&lt;br&gt;
Solana asks:&lt;br&gt;
“Can you prove ownership of this key?”&lt;br&gt;
That proof happens through digital signatures.&lt;br&gt;
When your wallet signs a transaction:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The transaction data is hashed&lt;/li&gt;
&lt;li&gt;Your private key signs the hash&lt;/li&gt;
&lt;li&gt;The network verifies it using your public key
The private key never leaves your wallet, but the network can still verify ownership mathematically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is why wallets matter so much in crypto. They are not just payment apps — they are identity providers.&lt;/p&gt;

&lt;p&gt;The tradeoff: freedom and responsibility&lt;br&gt;
This model gives users something rare on the internet: true ownership.&lt;br&gt;
But it also removes safety nets.&lt;br&gt;
If a company controls identity, they can restore access.&lt;br&gt;
If you control identity, losing the private key usually means losing access permanently.&lt;/p&gt;

&lt;p&gt;That tradeoff is intentional.&lt;br&gt;
Solana’s identity model prioritizes self-custody over recoverability.&lt;br&gt;
For Web2 developers, this can feel uncomfortable at first because we are used to centralized account recovery systems. But it also unlocks something powerful: users no longer need permission from a platform to exist online.&lt;/p&gt;

&lt;p&gt;Their identity belongs to them.&lt;/p&gt;

&lt;p&gt;And on Solana, that identity is simply a keypair.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>beginners</category>
      <category>web3</category>
    </item>
    <item>
      <title>Is Learning to Code Still Worth It in the AI Era?</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Sun, 24 May 2026 01:37:04 +0000</pubDate>
      <link>https://dev.to/sammynug/is-learning-to-code-still-worth-it-in-the-ai-era-511i</link>
      <guid>https://dev.to/sammynug/is-learning-to-code-still-worth-it-in-the-ai-era-511i</guid>
      <description>&lt;p&gt;With AI tools becoming more powerful every day, many beginners are wondering if learning programming is still worth it.&lt;br&gt;
Do you think AI will replace some developer jobs, or will it simply make developers more productive?&lt;/p&gt;

&lt;p&gt;I’d love to hear your thoughts and experiences 👇&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hello DEV! 👋🏽 My Developer Journey Begins</title>
      <dc:creator>Samuel Emmanuel</dc:creator>
      <pubDate>Sat, 16 May 2026 17:58:58 +0000</pubDate>
      <link>https://dev.to/sammynug/hello-dev-my-developer-journey-begiy-3idg</link>
      <guid>https://dev.to/sammynug/hello-dev-my-developer-journey-begiy-3idg</guid>
      <description>&lt;p&gt;Hello DEV 👋&lt;/p&gt;

&lt;p&gt;Hi everyone! I'm new here and excited to join the DEV Community.&lt;/p&gt;

&lt;p&gt;I'm currently learning software development and exploring areas like web development, AI, and open-source technologies. I enjoy building small projects, learning new tools, and improving my coding skills every day.&lt;/p&gt;

&lt;p&gt;I joined DEV to connect with other developers, share my learning journey, and learn from the community.&lt;/p&gt;

&lt;p&gt;Looking forward to growing with you all 🚀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>community</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
