EXPERIMENTS

#038 Dubfault Browser
    Dupdate
by Anupam, 02/15/23

This week, @Robert and I have the same download link - for an auto-updating, default-browserable Dub!

From now on, you can update Dub every week from within the app (i.e., you don’t have to come back here!)

Download here. Dub

Overview

Lots of accomplishments, lots of missed marks.

Last week, my hanging threads & pending goals were mostly:

While I wasn’t able to get through all of them this week, I did go on a whole host of useful tangents:

All in all, most of my time was spent in the great code merge - bringing together @Cam’s, @Robert’s, and my own versions of Dub under a single umbrella…. and, it worked! This was a journey in lots of git merging, priority code decisions, and folder restructuring (lots of totally fun, totally not tedious stuff 😀).

After discovering the limitations with the Web3.Swift team’s package, I made the decision to migrate back to the Argent package we had previously been working with. While we did undo a few days of work here, I think we made the right decision in terms of flexibility with cross-chain compatibility. And, as of this morning, we’ve been able to find a modify an alternative package to provide BIP 32, 39, and 44 support.

And, of course, we had an extra fun achievement this week -

Dub set to be default browser

It’s giving: Dubfault Browser.

Process

Lots of fun stuff this week but not a ton of process to share.

Not much interesting to share about writing Wallet Manager, Notification Manager, and History Manager. All pretty uninteresting code and no major roadblocks (other than some fun diagramming - see below). Lots of logic, lots of nested code, and some clever decisions :)

Manager Flowchart

We really needs t-shirts with TabManager(), WalletManager(), NotificationManager(), and HistoryManager() on them :)

Other than a few days of coding on the managers, Cam, Robert, and I spent many hours working on the big code merge. This basically involved kicking Cam off of his desk and pulling together all of our code - to enable the slick new UI, powerful new data model, and auto-updating code. I then spent another many hours cleaning up the literal hundreds of errors that emerged - as a result, we now have 10/10 code practices, well named variables, and a shared Dub repository moving forward.

Most recently, I spent a good chunk of time messing around with HD wallet generation; initially, I was trying to modify a bitcoin swift package to work with MacOS, but the thousands of lines of C code that wouldn’t compile for Mac ended up being a pretty big challenge. I ended up finding an alternative package that was easier to modify & was able to generate over 2 billion wallet addresses from a single mnemonic phrase! Am particularly excited about this because of what it means for on the fly, tab by tab wallet generation derived from one master seed phrase (so a user / keystore only needs to keep track of one private key for many temporary and primary wallets).

Next Steps

For this coming week, the big goals are:

I have really been putting these off as I go knock out other challenges; but, I think the time has finally come to spend the next few days implementing these very important features.

For the next four weeks, the big goals are:

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