Categories
CS467

Teamwork: Flow

I’d like to spend a little time talking about teamwork and effective work flows. I was fortunate to intern last summer at a major company, so I learned a lot about how “real-world” production environments work. This has been invaluable for our Capstone project. My other teammates have also interned, which provides a great benefit.

Our team is using GitHub to manage our project and Google Cloud to deploy it. Here are a few tips for teams to manage their workflow and be productive!

Commit, commit, commit, squash

Most developers at this stage of their schooling are familiar with Git version control. However, not everyone ‘squashes’ their commits. Commit squashing is a form of rebasing where you consolidate the last n commits into one commit. Many developers often commit every little thing. But what happens when the code is ready to push to GitHub for review? There are a million commits! This is where squashing comes in. A simple command ‘git rebase -i HEAD~3’ will allow the user to rebase the last three commits – viola! Now three commits are one and the code is ready to push.

To learn more, check out this post: Git Squash

Continuous Deployment

Another important concept for smooth development is continuous deployment. This is a way to constantly deploy from your version control system (GitHub) to your production environment. A team can set this up in any way they want. For example, you could have all commits to main deploy. Or you could have a “production” and “development” branch in your version control.

Either way, GitHub has GitHub Actions to help teams manage continuous deployment. Many platforms, like Google Cloud, Render, or Heroku allow easy set-up for continuous deployment by becoming authorized with your GitHub account to manage the action. It is also possible to set up custom actions on your own.

Continuous deployment has many benefits including automated testing, enforcing code reviews, and streamlining deployment. It’s simple in GitHub to set up code tests or code review rules before any code can be merged and auto-deployed.

Conclusion

There are many other possible things to discuss for teamwork and work flow. It’s important for teams to research all of their options before starting a project so everyone is on the same page. I hope these two features help new developers in the future.

Categories
CS467

Cloud Platforms

I’ve been reflecting on deploying applications and cloud services after working with my team for the last two weeks. My team began our project knowing that it would be a web application, but we didn’t know how we were going to host it. This prompted a lot of research into cloud platforms. One platform I was familiar with was Google Cloud. I had worked with this platform before, so I understood the basics. I also investigated a free hosting service called Render that didn’t have full cloud development features. Let’s go over a few things that I found.

Google Cloud

Google Cloud was the most feature rich platform I found. It also had amazing documentation, and of course the reliability found within Google products. I investigated how to host a backend Node/Express server and a static React front end. I found a few awesome features:
  • Free credits of a $400 dollar value
  • Integration with MongoDB, or Google Cloud native NoSQL database Datastore
  • Integration with Google OAuth
  • Easy deployment pipeline with Cloud Build to build directly from GitHub to a container in Cloud Run
  • Cheap hosting on Firebase for static webpages
After researching Google Cloud, I found that it would be a great platform for hosting a personal project or an enterprise project. The free credits expire after 90 days, so if you’re looking for a long-term application you would ultimately have to pay. However, the prices scales by use, so a hobbyist would not incur much of a cost.

Render

Render is a unified cloud to build and run applications. Render’s platform runs on Google Cloud and AWS. Render does not have nearly as many features available for users, and it is not a cloud native environment. This means that Render is only hosting web apps, static apps, or containerized apps. This contrasts to Google Cloud, where you could write individual functions in the cloud, and have other Google Cloud services interact with those functions as part of a larger application. Render did however offer a lot of great features for hobbyists:
  • A completely free tier, with no credit card information require
  • Easy deployments by connecting to GitHub with a few clicks
  • A simple way to incorporate environmental variables
  • Static hosting for React frontend
  • Support for Node for the backend

Conlusion

Overall, Render is very simple and easy to use, but it didn’t offer as many features as Google Cloud. Google Cloud is a fully developed cloud hosting platform, that allows for complete customization, and integrates with many of Googles other features like OAuth. Both platforms would be a good choice for students or hobbyists. However, if you plan to grow your application or just want to learn a relevant skill like Cloud Development, I would pick Google Cloud.
Categories
CS467

All things must pass

This is the first post for my Oregon State CS467: Capstone course. This course will be one of my two final courses before graduating this term, Winter 2023. I’m new to blogging, so bear with me as I get use to expressing myself via writing.

I’ll use this post as an opportunity to introduce myself. My name is Jason, and I enrolled in the OSU CS Post-Bacc program starting in January 2021. When I enrolled, I had been working for five years as an Environmental Scientist regulating drinking water utilities. My first degree was in Biology.

While working in this capacity I often found myself needing to automate tasks, like extracting data from spreadsheets, or working with GIS files for mapping. I also was introduced to SQL queries and database design. I decided to take on some additional projects that required programming, and I really enjoyed the work.

Before enrolling at OSU I took a few CS courses at a local community college. I was able to transfer these credits, so I dove right into the heart of OSU’s CS program. I was able to take two classes a term while working. This definitely was not easy, but it is possible!

This last summer, I had the opportunity to intern with Amazon. This was the first major step in my career change to become a Software Engineer. It was very nerve wracking to accept this opportunity because it required me to quit my full-time job of five years. My internship was challenging, but I learned a lot and it was successful.

Although I’m graduating this term, I’m still not sure what type of work I’d like to do within Software Engineering. I think it would be cool to find an opportunity that merges my previous Environmental Science experience with development work. My internship was mostly backend work, and I enjoyed it. I’m hoping that this class project will expose me to some new technologies and continue to help me grow as a developer and teammate.

I’m excited to kick off my final term, and I’m looking forward to reading all of my fellow classmates blog posts. To all those who read mine, good luck this term!