Context
Lots and lots of sample code :)
Overview
The big pushes this week were 1) continuing data persistence and 2) an upgrade to tabs and web browsing (along with a few small bug fixes)
The major push was data persistence - honestly, this is a huge undertaking (and really the last thing that we have to do before launching an MVP Dub).
Last week, I spent most of my time building out and understanding Realm - and, much of what I (and the team learned) was that it might not be as flexible and intuitive as we had expected. I (and the team) had heard a lot of positive information about Realm but trying to massage it into our data structure makes it seem a little too simple for everything we want to do. However, it can be a good backup option.
This pushed me into CoreData - Apple’s native (and very deep) framework for persisting data in native MacOS apps. It’s gonna take me a minute, but I’m pushing this through as fast as possible.
Secondly, I spent a good amount of time implementing new tab behavior - while right now a tab can only be a webview (i.e., a website), we want to allow flexibility in our tabs - showing full screen history, wallets, etc.. instead of just a website. And, split views! I’m excited to demo this with our new frontend next week.
Process
I spent a LOT of time learning CoreData. I built my own sample projects (like a singer / song database), watched many YouTube videos, & have been parsing through the documentation for a couple days. This stuff is DEEP - and I’m really thrilled I get the opportunity to learn it.
A couple advantages of CoreData include more complex relationships, native caching, and iCloud syncing. All in all, it’s also just a lot more powerful. Realm is cool, but some of the limited functionality in retrieving relational objects is quite difficult.
The upgrades to tabs have been… pretty easy. And a lot of fun -
Now, a TabManager contains an array of TabGroups - a wrapper for tabs of any type (web, history, wallet, etc…) that can hold multiple tabs in a single row. With a few frontend upgrades, we should be able to enable tab split views! And, full screen history, wallets, etc and more.
Next Steps
Our biggest hurdle before an MVP launch is data persistence - I really just have to figure it out! I’m hoping that with the decision to leverage CoreData, we’ll set up a flexible & scalable model that can support the many users we’re working to get on Dub :)