EXPERIMENTS

#034 Dub Interface Rewritining
    Progress
by Cam, 02/08/23

Realization

My main deliverable was re-writing the Dub frontend for the re-written Dub backend. It’s got a ways to go: 1) still missing wallet functionality on the frontend - Anupam’s got the backend mostly there 2) still looks exactly like Arc (this is intentional rn, see next steps at the bottom of this page)

Also, another big push for me this week was implementing Mixpanel for tracking / analytics - this is all happening behind the scenes right now so nothing huge to share there yet, but soon.

Feature Overview

Data Finally Refreshes Properly

In previous Dub interface updates, I’ve documented my constant struggle with poorly performant (my loose label for software things that don’t behave how I wish them to) tabs. Favicons / page titles didn’t refresh unless you hovered a tab and removing tabs caused a crash more frequently than not.

With the new architecture that Anupam has led (along with some foundational SwiftUI learnings - never nest @ObservableObjects), Favicons load, update, and even cache flawlessly (page titles too!). Tabs can be added and removed and selected crashlessly. Everything feels performant.

We’ve talked about our MVP being a combination of Minimum Viable Browser and Minimum Viable Wallet - the browser bit (at least the backend for it) feels like it’s 90% of the way there. I’m very excited for Anupam and Robert to finish crushing core technical barriers there and to personally finish building the frontend fod all of the core functionality they’ve built on the backend.

Custom SplitView!

SplitView’s have super minimal native customization. There’s a super ugly divider line and you can’t set custom sizing bounds, so I built my own custom SplitView with limitless styling and functionality.

Custom ScrollView!

ScrollView’s (at least from what I found through my experimentation) have no special handling for overflow states (when content breaches the visible bounds). Arc has some really nice handling for this where they dynamically add a divider to create a sense of boundaries and depth for when content overflows in a ScrollView. I really liked their implementation, so I built a custom ScrollView with similar behaviour.

Loader!

Super basic, but we now can track the loading progress and state of a web page. The current visualization of this is pretty default, but we’ll find our own fun way to spice it up soon.

Process

Primary Challenges

SwiftUI for MacOS is brutal.

I feel like this will be my eternal pain. But I’m getting better with it, and learning that if a native component doesn’t do what it logically should do, just build your own custom component. I really hope we get to mobile soon, but until then, I will just have to make the most of this niche MacOS developer world. If our desktop app works, I feel like this alone could be somewhat of a MOAT - building real (looking at you Electron) MacOS Apps is hard.

Doing Things I’m Not Great At

For the past few months, I’ve been heads down building the frontend (and pitching in where needed for the backend) for Dub. I’m a developer, but I’m not a developer. It’s really fun to try to solve a problem that you’re super passionate about, and that pushes me forward each week with Dub - but deep development work is certainly not what I’m great at. I’m excited to dig deeper on design and growth over the coming weeks as we begin to play with sharing Dub beyond dubdubdub.

Learnings

We’re moving fast and we’re ready for what’s next (design + community)

We had a really great convo with Jeff, Mene, and Maria at C1 where we were able to zoom out a bit (we spend 99% of our time - no exageration - sprinting through building to ship quickly). We’ve done the move fast part well and we’ve certainly broken many things, but it’s time to build our product and brand beyond just this group (you and us). Building a trustworthy reputation (especially in crypto) takes time. There’s no better time to start than now. Over the coming weeks, my personal experiments will shift dramatically towards two key things:

  1. Design + Polish
  1. Community + Alpha Testing

Next Steps

Breaking from the Archetype

As is visible to anybody who is a user of Arc, a new browser from The Browser Company, the current styling of Dub is a nearly identical copy of Arc’s styling. This has been incredibly intentional, as we’ve focused purely on functional feature parity with Arc (and more typical web browsers like Google Chrome and Safari). We quite like their styling, but we’re incredibly excited to bring our own flair to Dub. Moving forwards, I will be focused on collaborating with Pavan to build out Dub’s design language and system. This will be realized through multiple mediums, from social channels to our marketing website to the product itself. We’ll ride the fine line of exploration and execution with a constant focus on making things real through prototyping. As our good friend James Higa always says, real artists ship - and so as we find our art style and define Dub as the crypto-browser, we’ll be shipping harder than ever before.