Day 76: Intention Roadmap
I’m currently working on adding a major social feature into Intention, but after that, I’m going to start working toward building a mobile version of Intention. Instead of jumping directly into working on Intention on mobile though, I’m going to tackle smaller projects in order to build familiarity with the tools and ecosystem.
I’m going to take the same route that I took with learning to develop browser extensions: Build Hide Likes, then Hide Feed, then Intention. (I didn’t plan this sequence for browser extensions by the way; it just worked out this way.) This probably seems like a really roundabout way to go about it, but Hide Likes on mobile is such a nice, self-contained project and it’ll help me learn React Native (or native iOS/Android programming if I need to get into it, although if I find that I need to do native development, I’d probably just go with iOS for now because I use an iPhone and learning two ecosystems seems like a bit much for now — sorry, Android users). Hide Feed on mobile will probably reuse 95% of the codebase of Hide Likes, and at that point, I think I should have a pretty good handle on the basics of mobile development.
It’s funny relearning all these skills that I once was proficient in years ago. Back in college, I worked full-stack, deploying Node.js and Ruby on Rails apps on Heroku, building Angular frontends, and doing native iOS development in Swift. Even though I know that it’s only a matter of time and effort for me to feel comfortable working with these technologies and frameworks, there’s a part of me that wants to stay in my safe little bubble of pure client-side apps like Chrome extensions and the various music apps on my personal site. It’s just so much easier not having to worry about a backend or synchronizing data between different users.
I’ve been using Firebase for the social feature in Intention, and I’ve been surprised by how easy it is to build features that once would take days and weeks. Building a user login system in Firebase took minutes because they provide a drop-in solution that provides logging in through email/password or through many authentication services like Facebook and Google. It’s amazing.
I’m having a hard time trying to figure out how to structure data in Firebase Firestore because I’m used to thinking about normalizing my data in SQL databases rather than these funky NoSQL databases, but this might be one of those things where I have to accept that I’ll mess up a bunch of times before I start grokking how to design for them.
Man, there are so many technologies and frameworks I want to learn: Next.js, Tailwind CSS, React Native, Expo, iOS development using Swift, Firebase, and so on, and that’s not even touching things like machine learning that I’d also like to explore deeply at some point. It’s really fun being a developer again.