Download Link
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:
- Finishing WalletManager
- Finishing History & Notification Manager
- Figuring out how to use the (more) inflexible web3 swift package
- History / Cookies
- Data Persistence
- Homepage + Bookmarks
While I wasn’t able to get through all of them this week, I did go on a whole host of useful tangents:
- ✅ Wallet Manager / Notification Manager
- ✅ History Manager
- ✅ Migrate back to Argent Web3 Swift
- ✅ Find / Modify BIP39 HD Wallet Derivation
- ✅ Dub Code Merge (Merged Cam / Anupam / Robert codebases)
- ✅ Squash about ~350 warnings & errors after @Robert enabled Swift linting for uniform code formatting
- ✅ Enabled Dub to be a default browser
- ❌ Cookies
- ❌ Data Persistence
- ❌ Homepage + Bookmarks
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 -
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 :)
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:
- Cookies
- Data Persistence!
- WalletConnect Integration
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:
- Support Cam/Pavan in building a beautiful and movement-filled UI with a stable browser / wallet data model (i.e, continue building out the browser, re-implementing profiles, history, cookies, bookmarks)
- More robust encryption and data security considerations within the browser
- Storytelling storytelling storytelling - focusing more on the story we live with our users and helping them understand the power of a blockchain browser
- With this, there’s much to be done in understanding the dub user - as Cam is focused on building out community, I want to focus on building out our understanding each user in that community & their unique wants and pain points
As always, more to be done. Back next week with more ✌️