Week 8: Database and Migrations

I never thought about how to keep the database updated when working in a team.

Through this project, It’s my first time to learn the concept of migrations and database versions.

Flask-Migration

When I read through the flask web development book, the migration concept was presented. I did not know what it really do when I follow the instructions to include Flask-Migration into our project.

The only thing I know was when anything changes in the database, I need to migrate and upgrade the database.

Problem Envolve

Since my understanding of “migration” was too vague. I did not deliver clearly to my teammates about what were the situations that needed migrations, and what were the steps to migrate. There were some situations we need to upgrade and did not upgrade, so the migration heads are messed up.

This is the time I need to fix it and make sure we understand the basics of migrations.

Migrations Upgrades

What we use is a development database under a development environment, which means that the database should be local to ourselves. What we share with each other is just changes to the database structure.

For example, add one column in the “animals” table to record animal registered date and time, or add an association table to record users and animals tables many to many relationships. These are the times we need to run migration with

 flask db migrate -m "what changed comment"

This will create a new migration head based on your changes to the database. After the head is created, we can upgrade our database to the new head with

flask db upgrade

After that, I can push my code changes and new version to the project codebase. Thus, my teammates could use the new head to upgrade their side local database. We will be on the same page for the newest version of the database.

What I learnt

This process will be more toward industry real scenario. My thoughts on database migrations are still the most basics, but it will be a better foundation compared to my previous understanding.

I really learnt a lot through CS467 and encountered a lot of new problems that I need to solve. The process is full of fun!

Week 7: Platforms for Jobs

This is my second last quarter for this degree. I started job hunting for around 2 months. There are a lot more platforms that we can use than I expected.

Big Platforms

LinkedIn, a really nice platform to connect to professionals and HRs, many companies’ job posts are redirected back to companies’ career web pages. Some companies’ application process is through LinkedIn.

Indeed, I have used it for finding an intern. The application process is a lot like LinkedIn without networking features.

Glassdoor, I did not use their job search features before. Company-related info is super helpful, like average base salary, company working experience, etc.

Smaller Platforms

Handshake, I found this platform through OSU career emails. After building up a personal profile, company recruiters will send platform mails to you for opportunities. It also contains a lot of events opportunities.

RippleMatch, this platform is really easy to use. After filling out all personal info, the platform will push matched positions to your dashboard, easy application process, and someone from the platform will follow up with your applications. I got several OAs through this platform, applications are processed.

Big Company Career Page

For some big companies, like Google, Facebook, etc, all positions will be filled really quickly. I recommend checking on their new positions regularly for early application.

These are all my personal feelings. Please feel free to share any resources you use.

Week 6: Winter Time!

Our team just finished all our midpoint assignments, we decided to take a quick mental break for this week, and continue to work strongly for the next few weeks. I think it could be nice to come out of the serious staff and talk about my biggest hobby, snowboarding. It’s right on time for the season-opening. So happy the winter finally comes back.

Hiking for some powder @ Heavenly

How I met snowboarding

I originally came to the US from China. At around 15 age, I was taken to a local ski resort by my parents. They found someone who just used a single board, which looked super unique and cool. Luckily, the resort held 5 snowboards for rental, they decided to try them without knowing how to ride them correctly.

That was a tough time, I remembered they have to sleep on their belly instead of the back after snowboarding because their butts hurt really bad. After talking to someone who can ride really well, my parents got the info that there was one Japanese instruction material online. Gradually, they learned how to snowboard. At that time, I was learning skiing.

After two years of skiing, my heart was toward snowboarding more and more. Because my coach really wanted me to attend a regional skiing competition. After a discussion with my parents, I transferred to snowboarding, which means no professional coaches at that time. Snowboarding would be just for fun! This was the reason I love snowboarding till today.

Have fun and enjoy life @ Mammoth

Pause to snowboarding

During my time at the university in Beijing, it was super hard for a student to go to a ski resort. I needed to take my snowboard bags onto buses and subways, spending over 1.5 hours to arrive at a ski resort. In these 1.5 hours, it was highly possible to be standing all the way. I just managed to go snowboarding once a year during my four-year university life. No progression at all.

This situation continued after I came to the US for my graduate school, University of Missouri. For the first year, I did not know there was a ski resort two-hour away. I went to the ski resort twice for my second year. Also no progression, just make sure I will not forget how to snowboard.

Get back the addiction feeling

After graduation, I moved to the bay area California. So close to the sea and so close to the mountain, a perfect place for me. I found a marketing specialist job in the bay area and I can afford my hobby. It was so fascinating to know how affordable a seasonal pass was compared to my hometown. I started snowboarding regularly and dragged my boyfriend down to the snowboarding hole.

Who has fear to ski finally loves snowboarding @ Heavenly

Goals

My goals are super simple, make little and moderate progressions each season, keep healthy and snowboard for a really long time! I would like to see more unique scenes on different mountains!

Week 5: Good Way to Separate Work

For different teams and teammates, I found my collaboration methods are totally different.

For the team with a good segmented project, I prefer to work on my own part. And then, think about how to merge all our works together. However, most of the time it is not that easy.

Work Separation

Since I do not have any industry experience, I have no idea what is a good way to divide our projects. I always go to the most direct approach, which is to divide it based on front-end pages.

However, I found this method got a big flaw, which is not noticing the blocker for each team member. For example, I was responsible to set up a skeleton structure for our project and a simple database, other team members’ work will depend on mine. If I did not set it up quickly, it will be the major blocker for the whole team.

Better Approach

At this time, I thought there must be a better way to avoid that. After researching for some info, next time, I would like to separate the work this way:

  • Front-end Page HTML/CSS
  • Application business logic
  • Back-end database connection
  • Database setup

From this approach, each part could be a little bit more isolated before integration.

Do you have a better way to divide a project? Please share your thoughts with me.

Week 4: Bad Habit

Discover My Bad Habit

This week went by really fast, our team is focusing on a good project structure. We started to build up a structure that can help us start and build up easily. Through this process, I found a bid bad habit of mine really affect my development.

Internal Server Error

Every time I code something new, I tend to write a lot of code without testing. After that, something will went wrong and I don’t know why! So frustrated and so hard to change this habit.

Fix it

To make my future work organize and well tested, I would like to train my coding process to fix it.

Here are some naive thoughts to improve the process.

Firstly, be clear about one feature, how many parts will involve. Take login page as an example, it will include HTML frontend page, database items like username, email, password, and connection to GET from frontend, and to call data from database.

Secondly, after finish coding each part, must do a test to check on the work. Like, HTML file is done, I need to show it and check if the display and all elements are included. The items needed are added to the database, run shell to check if the item is successfully added to the database, and check if the item is good to use.

Finally, check all parts as a whole, test all the parts along the process including some corner cases.

At the End

Did you ever face this kind of struggle? Please share with me how do you overcome it.

Thank you for reading along my journey, hope your project is going well and smooth!

Week3: Relational Database Basics

Our Project Progress

Last week, our team decided to use Flask as our project framework. After researching and familiarize Flask, we finally set up our framework and start to code frontend pages. Since there’s not much time before the midpoint, we have to finish the design and implementation of the database within the next week.

Relational Database Design

From previous experience (CS340), database design will include several aspects. Here’s how I did it before:

  • Table outline (includes table names, items)
  • ERD (entity-relationship diagram)
  • Schema (details like primary key, foreign key, connection between tables)

There are several things I always keep in mind.

  • How do tables and tables connect?
  • What is the relationship between them?
  • Are all primary key and foreign key choices resonable?
  • Are all situations covered in the senario?

For entity-relationship diagram, sometimes we will need to face many to many(M:M) table relationship, which could be a pain for implementation and manipulation. If I found any M:M relationship, I will add one more table to change one M:M relationship to two 1:M relationships. Below is a schema with Class_Students table to solve many to many relationship between Students and Classes.

Schema

Summary

These are all super basic concepts for relational databases and some little insights from my previous experience. We will face a lot more complicated situations after joining the industry. Hope I can learn more about relational databases and NoSQL databases.

Please feel free to share your insights, thoughts, and advice regarding database-related topics! Hope every team has a great week ahead!

Week2: Project Plan for Resume

Previous project plan

Before the CS361 course, I never thought a project plan could be that important. After working with 4 teammates, a project plan was super important to lead our work, I finally realized.

Here were some aspects we covered in the previous project plan:

  1. Project achitecture
  2. Frontend prototype
  3. UML diagram
  4. Feature design
Part of frontend prototype

Capstone project plan

For the capstone project, our team decided to have a basic understanding of our web features. Each of us drew a draft version of our website and discuss all of the features based on the differences. Fortunately, this process worked quite well and quickly let us have an agreement on the project outlook and features.

However, we still have a lot of designs that need to decide on, like the project overall architecture, detailed tech stacks we want to use, database design, etc.

How to benefit my personal resume

At this point, I really hope this project can benefit and enhance my resume since I’m on the job-seeking path. What I have done before is more toward JavaScript and Node.js full-stack projects. For this project, I would love to do a project based on Python and Flask, which could add some diversity to my resume. I will make sure to talk to my teammates thoroughly.

To add to that, we are also considering using the Boostrap toolkit for our frontend instead of HTML5, which is also a tech stack industry uses often. Hopefully, it will collab well with Flask if we decided to use it.

In the last, we need to divide all tasks evenly for each team member to meet the 10-hour work requirement. This is the most tricky part for us. We cannot foresee how much work each part will actually spend. But, I’m confident our team will work accordingly and solve all problems together along the way.

Words at the end

To anyone reading this blog, from your perspective, what is the most important or most valuable part of your project plan? Please feel free to leave a comment.

Week 1: My way into the tech world

Welcome to my very first blog to record my capstone process. My name is Chang Li, living in bay area, california. I love snowboarding and just started to learn surfing.

Mammoth Mountain

Path down to the tech

From philosophy student to MBA

I cannot believe I have gone so far from where I started. My steps to the tech industry are quite unusual. I started my first degree in philosophy school at Renmin University, China. At that time, went to a better university was quite important, which means better professors, better colleagues, better choices when graduate.

Through the study, I found myself not interested in academic research in the philosophy area nor became a journalist nor became a politician after graduation, these are popular choices in our school. Because I’m not a top student in my major, it was very hard to exchange to other majors in other schools.

I had all my coursework finished before my senior year, and went to Shanghai for a full-year internship in VOLVO car distribution corporation as a marketing specialist.

With this experience, I successfully got an offer from the University of Missouri MBA program. I’m so happy about my decision. The progress in the MBA program was so challenging for me. A different knowledge base in a different language, full of adventure every day. This is the first time I got to touch a little bit of code when learning SQL database and SASS analytics.

University of Missouri
From MBA to Computer science student

After graduation, I really want to get a job in the States. Because of international student limitations, I had to locate a job with a company can sponsor my H1B working visa. All my fellow international students planned to go on a graduation trip and then go back to China. I decided to drive through to California for more opportunities.

I was lucky enough to land a job as a product marketing specialist in an online education company, which was focusing on filling the gap between tech education and the tech industry to help students land a dream job in tech companies. This was the start of my final transition.

In this company, I met a lot of talented and enthusiastic programmers. When I knew they can write a program to track all their financial investments or simply get more recruiter emails, I was amazed and shook about how individuals could benefit from programming. I worked there for almost three years and found my career path will be quite narrow as an employee holding H1B.

Why not take another step to the area that attacks me, this is not the first time I did so. After got all my thoughts together, I decided to quit my job and apply for the online CS program at Oregon State University.

For this term

This is almost my last quarter for the program. I learned a lot. Hope I can land a dream job and dive deeper into the tech world. Our team will work on Dating App for Animal Adoption project. I have two cats adopted in two different humane societies. I always think it will be better if there is an easy access app or website for animal adoption. Good luck with everyone’s project! Have fun!