<?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: Gunner Andersen</title>
    <description>The latest articles on DEV Community by Gunner Andersen (@gunner_andersen_36e65c71e).</description>
    <link>https://dev.to/gunner_andersen_36e65c71e</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%2F1647056%2Fbc41f72e-1d01-49d7-a208-b42912a969fb.png</url>
      <title>DEV Community: Gunner Andersen</title>
      <link>https://dev.to/gunner_andersen_36e65c71e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gunner_andersen_36e65c71e"/>
    <language>en</language>
    <item>
      <title>We made an opensource project, check it out!</title>
      <dc:creator>Gunner Andersen</dc:creator>
      <pubDate>Fri, 03 Oct 2025 10:48:44 +0000</pubDate>
      <link>https://dev.to/gunner_andersen_36e65c71e/we-made-an-opensource-project-check-it-out-3moc</link>
      <guid>https://dev.to/gunner_andersen_36e65c71e/we-made-an-opensource-project-check-it-out-3moc</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/gunner_andersen_36e65c71e" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1647056%2Fbc41f72e-1d01-49d7-a208-b42912a969fb.png" alt="gunner_andersen_36e65c71e"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/gunner_andersen_36e65c71e/tired-of-rewriting-web3-integrations-help-us-grow-m3s-the-new-modular-open-source-standard-bkj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Tired of Rewriting Web3 Integrations? Help us grow M3S, the New Modular Open-Source Standard&lt;/h2&gt;
      &lt;h3&gt;Gunner Andersen ・ Oct 3&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#web3&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#blockchain&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>programming</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Tired of Rewriting Web3 Integrations? Help us grow M3S, the New Modular Open-Source Standard</title>
      <dc:creator>Gunner Andersen</dc:creator>
      <pubDate>Fri, 03 Oct 2025 10:48:07 +0000</pubDate>
      <link>https://dev.to/gunner_andersen_36e65c71e/tired-of-rewriting-web3-integrations-help-us-grow-m3s-the-new-modular-open-source-standard-bkj</link>
      <guid>https://dev.to/gunner_andersen_36e65c71e/tired-of-rewriting-web3-integrations-help-us-grow-m3s-the-new-modular-open-source-standard-bkj</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;As dApps grow, the hidden cost of Web3 is API fragmentation. Our solution is a community-driven adapter framework designed to make your code provider-agnostic.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Web3 Developer's Unspoken Pain Point
&lt;/h2&gt;

&lt;p&gt;Every developer building dApps faces the same hidden cost: API fragmentation.&lt;/p&gt;

&lt;p&gt;It goes like this: You set up your initial wallet integration (say, with MetaMask using a specific SDK). A few months later, your product team wants to support WalletConnect, Ledger, or maybe a gas-less provider like Web3Auth.&lt;/p&gt;

&lt;p&gt;What happens? You spend days rewriting code. You change method names, update argument signatures, and migrate entire logic layers, just to perform the same action (signData, sendTransaction). This constant friction stifles innovation and slows down the multi-chain future.&lt;/p&gt;

&lt;h2&gt;
  
  
  M3S: The Modular Solution for Code Portability
&lt;/h2&gt;

&lt;p&gt;We built M3S (Modular Multi-chain Suite), an open-source TypeScript framework, to end this cycle.&lt;/p&gt;

&lt;p&gt;M3S works on a simple promise: Your dApp's business logic should never change when the provider does.&lt;/p&gt;

&lt;p&gt;It uses an Adapter Pattern that abstracts away the specific implementation of any given wallet, smart contract, or cross-chain service.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Abstraction in Action
&lt;/h2&gt;

&lt;p&gt;Here’s a real example from our demo showing how M3S abstracts provider selection and usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Configuration: Creating the Provider-Agnostic Wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, we decide which adapter to use (e.g., ethers or web3auth) based on a simple configuration, but the rest of the application remains unaware of the choice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 1. Logic to define which specific adapter (ethers, web3auth) is needed
function createWalletConfig(type: "ethers" | "web3auth", options?: any) {
  // ... returns adapter config based on 'type' ...
  // ... ensures configurations are correctly formatted for the registry ...
}

// 2. M3S dynamically loads and creates the wallet instance
const { createWallet } = await import("@m3s/wallet");
const config = createWalletConfig(type, finalOptions);

// **IEVMWallet** is the common interface the rest of the app will use.
const newWallet = await createWallet&amp;lt;IEVMWallet&amp;gt;(config);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Usage: Executing a Method on the Common API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Regardless of whether we chose ethers or web3auth in the previous step, the signature of the method remains exactly the same:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// The core application logic is simple and provider-agnostic:
const network = await newWallet.getNetwork();
const accounts = await newWallet.getAccounts();

// ... logic to prepare the typedData object (EIP-712) ...

// This line is the KEY. It calls the method on the **IEVMWallet** interface.
// M3S ensures the correct provider-specific method is executed underneath.
const signature = await newWallet.signTypedData(typedData);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result? Your code is truly provider-agnostic and infinitely more maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vision: A Community-Driven Standard
&lt;/h2&gt;

&lt;p&gt;M3S isn't meant to be just another SDK; it's a foundation for a community standard.&lt;/p&gt;

&lt;p&gt;WalletConnect solved fragmentation for connection protocols. M3S aims to solve fragmentation for all Web3 operations (wallets, smart contracts, swaps, bridges).&lt;/p&gt;

&lt;p&gt;🤝 API Consensus: We plan to evolve the common API through community consensus (leveraging NPM packages and a future DAO structure). This ensures the API isn't controlled by a single vendor, but is robustly defined by the developers who use it.&lt;/p&gt;

&lt;p&gt;🚀 The Network Effect: Every new adapter added by a community member (for a new chain like Solana or a new provider) makes the common API stronger and more complete, benefiting every single person using M3S.&lt;/p&gt;

&lt;p&gt;We are currently stable on EVM chains and ready for collaboration to bring in new ecosystems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Movement
&lt;/h2&gt;

&lt;p&gt;We invite all developers tired of rewriting code to explore the framework. Take a look at the UniversalRegistry architecture—it's the heart of our deterministic validation system.&lt;/p&gt;

&lt;p&gt;If you build dApps in TypeScript, we'd love for you to get involved!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/NGI-TRUSTCHAIN/MS3?tab=contributing-ov-file#contributing-to-m3s" rel="noopener noreferrer"&gt;GitHub (Source Code)&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://m3s.changetheblock.com/demo/" rel="noopener noreferrer"&gt;Simple Demo and Documentation&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/~modular-suite-3" rel="noopener noreferrer"&gt;NPM Packages&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
