<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Russell Oje</title>
    <description>The latest articles on Forem by Russell Oje (@russell_oje_9e2bad01f26c0).</description>
    <link>https://forem.com/russell_oje_9e2bad01f26c0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3846695%2F5f9b12d1-01cf-4a2a-ab89-b52838094707.jpg</url>
      <title>Forem: Russell Oje</title>
      <link>https://forem.com/russell_oje_9e2bad01f26c0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/russell_oje_9e2bad01f26c0"/>
    <language>en</language>
    <item>
      <title>Week1 Recap of #100DaysOfSolana</title>
      <dc:creator>Russell Oje</dc:creator>
      <pubDate>Mon, 27 Apr 2026 09:49:04 +0000</pubDate>
      <link>https://forem.com/russell_oje_9e2bad01f26c0/week1-recap-of-100daysofsolana-2ei4</link>
      <guid>https://forem.com/russell_oje_9e2bad01f26c0/week1-recap-of-100daysofsolana-2ei4</guid>
      <description>&lt;p&gt;This week I generated my first Solana keypair, persisted it, and connected a browser wallet to read my devnet balance in a small app. What surprised me most was realizing my identity is not a username in someone’s database; it is a keypair I control. &lt;/p&gt;

&lt;p&gt;Next I hope to turn this into real on-chain interactions and ship something people can use. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;#100DaysOfSolana&lt;/code&gt;&lt;/p&gt;

</description>
      <category>solana</category>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Week1 of #100DaysOfSolana</title>
      <dc:creator>Russell Oje</dc:creator>
      <pubDate>Mon, 27 Apr 2026 09:37:29 +0000</pubDate>
      <link>https://forem.com/russell_oje_9e2bad01f26c0/week1-of-100daysofsolana-5bb5</link>
      <guid>https://forem.com/russell_oje_9e2bad01f26c0/week1-of-100daysofsolana-5bb5</guid>
      <description>&lt;p&gt;On Day 1 of this challenge, I thought I was doing something small: generate a wallet, print an address, move on.&lt;/p&gt;

&lt;p&gt;I ran a script, got a fresh keypair, and saw a long string appear in my terminal. It looked random and slightly intimidating, but also familiar in the same way SSH keys feel familiar. In Web2, I have dozens of identities: GitHub username, work email, banking login, social accounts. Every system has its own account model, its own password reset flow, and its own lockout rules.&lt;/p&gt;

&lt;p&gt;Solana felt different immediately. That one keypair was not just an account for one app. It was the beginning of identity across an entire network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## The Week 1 Journey&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Day 1: "Here is your wallet"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first script generated a keypair and printed the public key. The idea seemed simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public key = safe to share&lt;/li&gt;
&lt;li&gt;Private key = proof of ownership&lt;/li&gt;
&lt;/ul&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%2Fk7r5tjh3h0r7af9gpce7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk7r5tjh3h0r7af9gpce7.png" alt="Day1" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this stage, it still felt like setup boilerplate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Day 2: "Make it persistent"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then I built a script that loads an existing wallet from &lt;code&gt;wallet.json&lt;/code&gt; or creates one if missing. That changed the feeling.&lt;/p&gt;

&lt;p&gt;In Web2, identity is often a row in a database controlled by a platform. In this script, identity became something I could hold, persist, and re-use without asking anyone for permission. I also started to understand responsibility: if I lose this private key, there is no "Forgot Password" link.&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%2Fjkd1z9qcbzyt4b0lo3mf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkd1z9qcbzyt4b0lo3mf.png" alt="Day2" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Day 3: SOL vs lamports&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I set up the CLI wallet and looked at balances both in SOL and in lamports. One SOL equals one billion lamports. Seeing balances in the smallest unit made Solana feel less abstract. It reminded me of cents in payments systems, except enforced by protocol rules instead of application code conventions.&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%2F2octe2pomn156uxeto7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2octe2pomn156uxeto7y.png" alt="Day3" width="800" height="149"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Day 4: Browser wallet connection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the turning point. I built a Vite page, discovered installed wallets with Wallet Standard, connected Phantom, and fetched balance from RPC.&lt;/p&gt;

&lt;p&gt;In Web2 terms, this is what stood out: the app did not "create" my identity. The wallet presented an account, and the app read state from the network. The identity lived outside the app. If I switch apps, I keep the same on-chain identity because it is tied to my keypair, not that product's user table.&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%2Fef42gq2cobmxxvgwgs1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef42gq2cobmxxvgwgs1n.png" alt="Day4" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Day 5: Compare wallet types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After trying CLI, browser, and mobile wallets, I saw a practical tradeoff:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI:&lt;/strong&gt; Fastest for scripts; least secure (plaintext file).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browser:&lt;/strong&gt; Best for dApps; medium security (password/encryption).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile:&lt;/strong&gt; Best for personal use; highest hot-wallet security (biometrics).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Different interfaces, same underlying identity model.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
