Join me on my new journey
Join me on my journey to build something of my own.
Image by macrovector on Freepik
I’ve wanted to do this for a very long time. And before it’s too late, before I regret wasting my entire life not doing any of the million things I could have done, before I no more have the time or ability to make anything meaningful out of my life, I’m going to build something. Here I go! And please help me identify and correct errors in my understanding of tools, techniques and technologies, and flaws in my ways of working, as I learn to finally do something.
What should I build?
I decided I would build something I need. It will be a consumer product, for individual users like me. I will benefit from it immediately, coz it will solve some of my needs. It’ll be easy to gather user requirements — from me. It’ll be easy to gather user feedback — from me and people I know. I won’t have to vet me idea through several experts. I won’t have to do extensive cost benefit analysis, coz I’m going to start small and build something that I can use. I won’t have anyone else to please — coz I’ll be the end user. All of this makes it easy for me to get started. Anything a little harder, and it will never lift off. I have this tendency to overthink and perfect every tiny detail. So if I am building something for anyone else, there is big big chance it will stay in the concept and planning phase for eternity. So, taking heed of my own nature and tendencies, I’ve decided to build something for myself. I’ll then make it a consumer product, for others. But that’s for later. I know that an iterative, incremental approach is best. I won’t worry about the second iteration now.
I’ve been wanting a calendar/reminder app that works with the Nepali (Bikram Sambat — BS) calendar. But for that I need a Nepali calendar system first. If there’s such a system out there, I can use its api. But right now, I didn’t want to put in the effort to look for that. Like I said, it has to be something I can start easily, or else I’ll keep perfecting the idea till eternity.
Another app I’ve wanted for a long time is a custom timer app — which can let me set interval times for hiit workouts, pranayam, meditation, etc. Basically, a timer app where I can define a series of very customized intervals. But I found that there are many apps which seem to meet my need. So I decided not to build it myself, at least not until I’ve tried those apps and figured out what they’re lacking for me.
I then read several online articles and watched YouTube videos on “app ideas”, “online business ideas” and similar topics. I’ve done this many times in the past, and they haven’t been much helpful. They weren’t much helpful this time either.
Another idea that has crossed my mind on occassions is a personal super-app, a multi-faceted personal assistant or personal manager. It’s not something I have necessarily missed, but every now and then I feel the need for some kind of personal assistant app — whether it’s a reminder or timer app like I explained above, or a note taker, or a budget/expense tracker, or an app to track my goals and progress, or an app to feed me a regular dose of motivational quotes, etc. For each of these needs, there are apps. But a single app that does all this would be awesome! And of course if I build it, it’ll be more suited to my needs than the apps that are already out there, built by someone else. And, this gives me the flexibility to start with the easiest and simplest features to build. I don’t have to give up on any of my needs — at some point, I’ll build the Nepali date reminder module, at some point, I’ll integrate a custom timer. At some point, I’ll get to all of these. But I don’t have to worry about them all now. I can start small, because I know that the app can grow to be all I need it to be.
So now I have the idea — my own personal super-app. And I know what my immediate next step is — build the tiniest component of this super-app.
A big problem for me is that I can never seem to identify exactly what to do, which means I can’t start doing it. This issue is resolved. Another big problem is that what I want to do is usually so big or vague that I can’t figure out where to start, I feel intimidated even before starting. But now, because I’m starting small, it looks like I have this problem under control.
Now, I have had such moments of clarity in the past as well. I remember starting to work on a similar idea several months back. After a couple days, I could no longer sustain the momentum. So, the next issue to overcome is losing momentum. I need to somehow keep my momentum, maintain my energy level, and not lose focus 🤞
How should I go about building it?
To build the app, I need to decide what language and framework to use. So I googled, of course. First question — what are React, React JS, React Native (coz I hear about these all the time — I know they are related to what I want to build, but I don’t know exactly how)? So React and React JS are apparently the same thing. And React Native is a framework to build apps that are performant like native apps but are cross-platform. That’s a lot!
- First, what is a native app? It’s an app that closely integrates with the mobile OS, android or iOS. So the languages to build a native app are limited — usually Kotlin for Android apps and Swift for iOS apps. But I’d have to build 2 apps — one for Android and one for iOS.
- Second, what is a cross-platform app? It’s an app that can run on both Android and iOS.
- Third, how can an app be both native and cross-platform?; after all, Android and iOS are two completely different OSes and hence there can’t be a single app that runs on both. True, and that’s where technologies to make one set of commands work on both platforms, by providing a native app container that wraps the application and makes it behave like a native app, have a role to play. And that’s what you get with React Native. You write the app once, but can make it work on both the platforms. Ok, so that’s a cross platform, native-like app and you can build that with React Native. I’m liking this.
And what’s React JS ? Well that’s pretty much the same engine as React Native, but it’s used to write web apps — programs that run on your browsers, not mobile apps.
Got it. But I also hear “responsive” apps. What are they? Well, they are also web apps, just built to adjust well to mobile browsers. Because they “respond” to mobile browsers, they would more-or-less function like an app. Hmm, that’s cool. So with one program, I can cover not just Android and iOS but also the web?! Yes. But there’s a caveat — the program runs on your browser, so the performance is not that great. The behavior may differ from browser to browser. And functions may be limited when working offline (when the mobile device has no Internet connection). Now if these limitations don’t matter much to your app, you could build a responsive web app. But I want to optimize my app for the mobile, so I’ll skip this.
Then there are hybrid apps; apps that look and feel like native apps but are really web apps. There are frameworks to build these, like Ionic and Cordova. But again, their performance is not as great as the native, or native-like React Native apps. So, I’ll skip this as well.
Which means my best choice is React Native. There are several alternatives to React Native as well. One popular name is Flutter. But I’ve also wanted to learn React for some time. And it looks like React Native is a little more popular, possibly a little better and easier (given I know JavaScript a bit), than the other frameworks. That gives me enough reason to use it!
Next step: start building the app while learning React Native. I have close to zero knowledge of React Native. I have programmed in other languages (PHP, Python, JavaScript, etc.), so it won’t be a mountain-climb, but it’ll be an effort nonetheless.
In the past, I had found and followed some React (JS) tutorials a bit. Didn’t learn much, and I’ve pretty much forgotten whatever I learnt. Anyway, this time I need a React Native tutorial. I did some Google searches, and this is what I am going to follow: https://levelup.gitconnected.com/introduction-to-react-native-building-a-simple-todo-list-app-658132239903 The tutorial is short, so it doesn’t intimidate me. And it looks like it is quite well-written. It seems to teach me the basics in a straightforward manner. So, let’s get started.
Follow me as I follow the tutorial and get started with building my first mobile app — my very own Personal Super-App! I even have a name for it — Aspire.