Hello everyone

With over 10 years of experience in software development and a strong foundation in Computer Science. My work underlines my dedication to innovation, problem-solving, and creating impactful user experiences.

My Github
Website source code

The API for this site is generated by this code, and stored as JSON and Markdown files on GitHub Pages
It also uses Github Actions to help with CI, and generates a static version for SEO
semver: 6.1.0

When you step into the world of web3 development, it’s not just about ditching passwords and username fields—it’s about embracing an entirely different model of user identity and interaction. Here, your users connect directly to the blockchain through their wallets, proving ownership of their accounts with cryptographic signatures rather than typed credentials. This shift changes how you think about everything from login flows to access control, and it can feel both liberating and challenging.

The old web2 model, where you store hashed passwords in a database and users rely on your server’s session logic, is giving way to a world where users simply “Connect Wallet” and sign a message. The user’s wallet (e.g., MetaMask or a similar provider) keeps their private keys safe. When they sign a message, they’re effectively stating, “Yes, I own the private key for this public address.” Your front-end can then verify this signature—using libraries like Ethers.js—to confirm that the user indeed controls that address. No passwords to forget, no password reset flows—just pure cryptographic proof.

From a developer’s perspective, this offloads a lot of responsibility. You no longer need to maintain complex account systems or worry about leaked credentials. Your app never sees the user’s private key. Instead, it sends them a challenge (often a nonce or a unique message), and if they return a valid signature, you know they’re the real deal. This approach improves security and streamlines onboarding: no lengthy signup forms, no trust in a central server holding onto user secrets, and a simpler way to grant or restrict access based on the user’s wallet holdings.

Building modern front-ends in this environment often involves working with specialized libraries. Ethers.js is a low-level, battle-tested toolkit for interacting with Ethereum and compatible blockchains. It handles the core functions like reading contract data, sending transactions, and verifying signatures. On top of that, wagmi provides a higher-level abstraction, especially if you’re building a React-based application. Wagmi gives you hooks that simplify common tasks like connecting to a user’s wallet, fetching their balance, and handling the “Connect Wallet” process without reinventing the wheel. It even helps you deal gracefully with multiple wallets and network changes.

And it’s not just about Ethereum anymore. The multichain reality of web3 means your front-end might need to handle multiple blockchains simultaneously—perhaps offering features that work differently depending on whether the user’s connected to Ethereum, Polygon, Optimism, or another chain. This introduces a new layer of complexity: you have to detect which network the user is connected to, show appropriate UI messages, and maybe even guide them to switch networks if needed. Wagmi helps here, too, by providing abstractions that handle these differences under the hood, letting you write logic that’s more chain-agnostic. For example, you can configure wagmi to support multiple chains from the start, and then just focus on your app’s logic, while wagmi and Ethers.js figure out how to talk to the correct RPC endpoints and verify signatures on each network.

Imagine building a token-gated community forum that grants special access only if the user holds a certain NFT on Polygon, or a DeFi dashboard that can pull data from multiple L2 chains. With a multichain setup, your front-end needs to dynamically check and adapt to whichever network the user currently has selected in their wallet. Wagmi’s built-in multichain support makes it easier to show the right data and prompt network changes when necessary, all while leveraging Ethers.js behind the scenes.

In essence, web3’s approach to user identity and authentication turns the classic login/password dance into a simple, secure, and decentralized handshake. By working with Ethers.js and wagmi, you arm yourself with the tools you need to create seamless, multichain-ready front-ends that feel as natural to users as any web2 site—just with more trustlessness and fewer worries about leaked passwords. It’s a new paradigm, yes, but one that’s steadily maturing, and learning these tools and patterns now puts you ahead of the curve in building the next generation of decentralized applications.