EXPERIMENTS

#041 DubManager() 
    Dupdate
by Anupam, 02/22/23

If you already have Dub, you can simply Check for Updates (or, you’ll get an auto-update soon)!

Updates

Or, get the download here.

Overview

This past week was a lot more cleanup that I expected. But, it’s made the app much more flexible and well-composed.

Last week, I set out to focus on cookies, data persistence, and WalletConnect integration. And….. I’ve done none of those things🤠.

Instead, I’ve spent the past week restructuring and reimplementing WalletManager, NotificationManager, HistoryManager, and DubStore to enable more flexible wallet connection, wallet notifications, history, and seamless interactions. And profiles!

We’re really excited about this stuff because of how modular it allows us to be; we can assign any wallet to any tab on any chain at any time, & show you a history of which wallet was connected to which chain at which time. It’s a lot, but it allows us to test a bunch of different interaction modalities on the design & interaction front.

Wallets in Action

(See Cam’s writeup for more on that)

I’m also really excited about profiles; this is one of my favorites in browsers like Arc because it means I can keep my work and personal accounts separate (without having to scroll through every email I own to get to what I want or to persist sign-ins on platforms I use work / personally). Whenever I’m testing interactions in dApps, building / testing my own dApp, or just trying to browse web3, I am literally always confused if I’m using the right wallet (and always worried I’m going to click the wrong one); a profile for development, work, personal, etc… would be really helpful. So, I took a first pass at building out the data model and will be iterating on it with Cam over the next week :)

Another key UX experience for us is persisting connections between wallets and sites you’ve already visited. By reconstructing our history manager to be focused around events (wallet connections / disconnections / site navigations) rather than just history, we can now automatically connect (or remind you to connect) to sites that you’ve already linked to. Have written the backend for this, & the frontend + activation will be coming soon (likely next week)

In brief:

Process

Not a lot of process to share this week (except for maybe a photo of me on the couch coding).

I really enjoy building data structures + implementing nebulous code like this; I spent a lot of time with protocols, protocols of protocols, & enums (and learned about how to structure those). We’ve already had a lot of back and forth with how its written (I code something, Cam tries to build it, we fix together, etc..) and I think the whole team is feeling really excited about how the browser is shaping up.

Something I didn’t talk about above was looking at how to pull pending transaction data - i.e, data on a transaction before it’s mined. This could give users additional visibility into the status of transactions, whether they’re failing, time estimates, etc… and there really is no good service to take care of this (because of the enormous data computation required). After trying the standard providers like Infura, Alchemy, etc.. (and many non-standard providers), we basically arrived at the conclusion that we would need to run our own Geth node to pull the transaction pool (before it gets submitted to the chain). I spent some tome with this and got a minimal proof of concept going with command line but spun my wheels for a bit on AWS permissions; Robert is WAY faster at this than I am & much more knowledgeable on the best way to spin up dynamic server infra so he’s now going to spearhead this crazy exciting massive data indexing project - which he coincidentally he had already started last week.

Next Steps

For this coming week, the big goals are:

For the next four weeks, the big goals haven’t really changed (with some small tweaks):

As always, more to be done. Back next week with more ✌️