Oregon State University|blogs.oregonstate.edu
Blog Owner
Blogger Name

My First Foray into the Wilderness

  November 22nd, 2023

The 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.



A Newbie’s AI Coding Journey

  November 3rd, 2023

Talk about throwing yourself into the deep end! AI Coder was in my top 3 for capstone projects, but I honestly wasn’t expecting to end up with it. I had exactly zero experience heading into things, and it seemed like much of my group was a bit more advanced than me. We selected a “dating app” to be our final deliverable, and our goal was to utilize various AI tools as best as we could in order to plan and develop a web app tailored to matching humans to prospective animal friends. This is the story of my journey for the last few weeks.

We each picked our favorite AI tool to compare and contrast our experiences in web development utilizing them. What even was my favorite AI tool? I didn’t even know any AI tools to begin with, aside from vaguely understanding ChatGPT existed. I ended up selecting GitHub Copilot. I felt relatively confident about building a web application, so having something more hands on felt like the right call. Copilot plugs right into my favorite IDE: VS Code, and all it really takes to get going is a few comments from which it attempts to generate code. It should be pretty simple, right?

Honestly, it really is pretty simple, but also kind of not very simple at all. I can get it to do almost anything I want, but only to a certain extent. I’m making a Flask app for the dating app. I turned Copilot on and decided to start with something simple. I asked it to import Flask. It succeeded, but it also imported more things than I ever would have needed to complete my basic tasks. It doesn’t particularly hurt to have them, but I decided it wasn’t quite what I wanted, so I refined my comments a bit further to be more explicit. With the correct guidance, it was able to import only that which I desired, but at this point I would’ve been better off simply writing the line myself. What was even the point?

I suppose it was a little amusing to me later when I found out I actually did need a handful of the things it had imported, and I had written off as useless. It was just a matter of adding a few extra words at the top of my Python file, but that was beside the point. Humans are far from perfect, and AI will likely never be perfect as well, but it had still presented me with a helpful suggestion which at worst could have served as a convenient reminder and at best could have saved me a lot of grief if I had been working with something a little more unfamiliar to me. It doesn’t always give suggestions I want, and it doesn’t even always give suggestions that are correct in the sense of creating functional code that will actually run, but it does serve as a convenient primer to have along. I occasionally forgot an exact syntax or ran into a simple problem I’ve seen numerous times before, and these were instances in which Copilot managed to take care of me in an efficient manner. I still had to look over its work, but this both removed at least some of the repetitiveness of my work and served as a refresher on little nuances I may have slightly forgotten.

Overall, I would say I have had a relatively positive experience with GitHub Copilot. If I knew nothing, Copilot was not very helpful. It would make an attempt, of course, unless I provided it with too much information at least, but this was still not very useful to me in the long run, as I would neither be able to verify the code’s usability nor build upon it without relying further on AI. It’s a bit interesting. Knowing more about exactly what I needed and how to go about making it made having AI around a bit more convenient. It could help me learn a bit more about a language, help me avoid a bit of repetitiveness in my work, or even write some comments for my code for me. It noticed my approaches to problems and provided my own solutions back to me when I encountered similar problems later on in my work. It’s not something I’d always use, but at this point I at least enjoy having it around, and that’s honestly not something I would’ve been able to say even a few weeks earlier.



My Journey into Computers

  October 2nd, 2023

We all have to start somewhere, right? I never expected to get into computer science. In fact, my parents explicitly told me as a child that it was a career path which would lead me to ruin, one which had reached its peak and would decline with time. This is the story of the tumultuous journey which eventually led me to pursue a computer science degree at the unusual age of thirty-five years old.

My father was an electrical engineer. He was incredibly clever, but strangely didn’t actually know much about computers. I remember waltzing into his office and borrowing-without-asking an unread book titled How Computers Work. It was obtuse and all but impossible for tiny me to digest, but I loved seeing all the diagrams and reading explanations of how things connected to make a functional computer.

Our first computer was a 386. Looking back, it’s a bit fascinating that younger me knew more about navigating a command prompt than even the me of a few years ago. It was a clunky old thing which took ages to load anything and lacked any of the quality of life you’d see today, but it was also the greatest thing young me had ever laid eyes upon. I loved playing games like some DOS-based baseball game, and it was so difficult to tear me away from it that I even learned Lotus 1-2-3 as a child to get to use it more whenever my family wanted to spreadsheet something.

In my teens, I ended up at a summer camp on a whim. I learned a bit of HTML and Flash, and the program led me to create my own website to host my own Flash game. It wasn’t anything spectacular. In fact, it was probably some awful Geocities hosted monstrosity! I was really proud of it at the time though. I loved Flash games at the time, spending much of my free time at summer camp on Newgrounds or similar pages instead of going outside to do what I considered much more mundane activities.

By my senior year of high school, it was finally time to make a decision. What exactly did I want to do with my life? As with many people that age, I could hardly decide what I wanted to eat for breakfast, let alone choose a career path. I loved computers and spent most of my day enjoying their company, but was it something through which I could launch a career? I had been doing some volunteer work for an unofficial school website, managing the forums and writing study guides, but anything involving programming was left to the higherups. Even so, the answer to my question should have obviously been a resounding yes, but good luck explaining that to the me who went to pharmacy school instead! My mother had just been through a rather rough surgery, and I shortsightedly decided to stay closer to home and try something which would make her a bit happier.

Honestly, how silly do you have to be to pay thousands of dollars to study something you don’t even really like that much? I made it through with a B.S. Biochemistry in about five years, but I very rapidly decided I would rather get into the family business than pursue higher education. I picked up a real estate license of all things and started working in property management. It wasn’t exciting, but it gave me a chance to finally get the things I needed: time to reflect on my life and money to decide what I wanted to do with it from here.

I was going to get into computer science, and nobody was going to stop me. Well, maybe I was going to stop me. I was 32 years old, and I hardly knew anything compared to my younger peers. I wanted to become a developer and possibly get into mobile app/game design, but how exactly was I going to go about such a massive shift in my life? I did a bit of research and happened upon OSU’s second degree program. This was the kind of start I felt like I needed, especially with how limited a background I had heading into it. I signed up immediately and began looking for online resources. I consumed free courses such as Harvard’s CS 50 and went through as many programming puzzles as I could to attempt to catch up. I had found my passion, and I was going to dedicate myself to seeing it through.

It’s been about two years since then. I have two courses and the capstone project left to complete, at which point my journey will both end and begin anew. It was a journey since my childhood which led me through numerous professions before finally arriving at that which I had always loved the most all along, and it will be a journey which will lead me into building a career in a field which I truly love.