My First Foray into the Wilderness
November 22nd, 2023The last two months of speed-running learning how to utilize AI coding tools for app development have been an adventure and a half, to say the least. I came into the course without any experience, and I was absolutely terrified of whether I would even be able to get off the ground. Even with this being the case, however, my greatest breakthrough surprisingly lies outside the realm of AI. I had zero experience with app deployment, and all of my previous coursework had been carried by the university offering servers and solutions for everything. The capstone was a huge eye-opener and learning experience for me in terms of the difficulties and accumulated costs of setting things up on my own.
It was our second week together as a group. We had selected our project of utilizing AI tools to create an app which connected humans to animals, and we had even done a bit of brainstorming on solutions for optimally researching and developing our individual apps. The problem, however, was that we had all been so accustomed to being given rights to both host our apps as well as deploy our database backends through the university’s servers that we failed to even realize we would have to venture out on our own to find solutions to these fundamental issues for our capstone project.
How hard could it be to find web hosting anyway? My line of thinking may have been a bit naive in hindsight, but it also held true. It felt like there were infinite options, as long as I was willing to pay the right price. I started with GitHub pages and Google Cloud, but they both only offered hosting solutions for static webpages, at least if I wanted to keep things free or relatively cheap. My application would need to not only be dynamic but also connected to a database. This led me to Amazon Web Services. Amazon offered not only web hosting of dynamic web applications, but also options for SQL databases to serve as my backend. It came at a bit of a price, but it seemed much more affordable than the potentially hundreds of dollars it felt like Google was asking of me. Surely it would be smooth sailing now, right? I had everything at my fingertips, and it was all on a single platform even.
Not quite, or at least not quite yet. It started simple enough. I created a free-tier AWS account, and I went through about half an hour of tutorials on setting up user identities and MFA. This eventually led to me being given temporary keys through which I could connect to AWS remotely. I set up the AWS CLI to access AWS through Git Bash/Powershell, and after another hour or so of tinkering, it seemed like things were finally looking up. It was, however, only the beginning. I could connect to AWS, but what good did that do me exactly? I wanted to deploy a Flask app, but it wasn’t like I could just upload my code somewhere and have AWS know what to do with it.
This issue inevitably led me down a huge rabbit hole of installing Docker to create containers, configuring Lightsail to deploy containers through the AWS CLI, creating NoSQL tables through Amazon DynamoDB, and learning how to connect my web app to all of them. It took me an entire day to get things set up, and by the end of it all it felt like I had accomplished something spectacular, except that it was really just a basic task of deploying a web app online somewhere via a paid service. It was, however, just the breakthrough my group needed. I was the first to succeed, and I felt it motivated others to either follow my lead or pursue similar avenues with renewed vigor. It put our minds at ease and allowed us to begin our journey in earnest, as much of our web app was not even configurable without a functional backend.
The journey taught me a lot about myself as well as about the reality of my work. I learned I should never take anything for granted, even within a heavily controlled environment such as academia, and I came to realize there was a lot I still had to learn even at a most fundamental level. I also learned, however, that the answers were always at my fingertips, and that I simply had to put in the time and effort to find them. This has felt more true in computer science than any other facet of my life. I also, of course, learned quite a bit about hosting solutions themselves and how I could utilize them in my future endeavors. There are a lot of choices, and AWS might not always be the best one for my needs, but my experiences will undoubtedly impact my ability to make informed choices in the future as well as streamline and expedite my process of doing so.
Read the post...