Categories
Uncategorized

Week 4: Relational or Non-relational?

For our capstone project, my team has decided to use Google Datastore to store the information related to our language app. Google Datastore is a type of non-relational or NoSQL (Not Only SQL) database. Most of my previous experience has been with relational or SQL (Structured Query Language) databases. When I took CS 290 – Web Development, the focus was only on relational databases. I believe the course now teaches both types allowing students to get some hands-on experience with NoSQL databases. Most of the projects in my internship use the NoSQL database MongoDB, and I’m slowly becoming more familiar with non-relational databases. This experience with Google Datastore will be great to add to my knowledge.

So, for my own educational purposes, I want to highlight some similarities and differences between relational and non-relational databases. This information was accumulated from my somewhat simple Google search. Please refer to the references at the bottom if you would like to dive deeper.

Relational (SQL) Databases *

  • Data is stored in tables, like a spreadsheet. Columns are attributes and rows are indivual entities composed of attributes. Relationaships between tables is a schema and this must be clearly defined
  • Examples of popular SQL databases:
    • MySQL, PostgreSQL, SQL Server, others…
  • Advantages:
    • ACID Compliance, Data Accuracy, Simplicity
  • Disadvantages:
    • Lacking in performance, flexibility, scalability

Non-relational (NoSQL) Databases *

  • Does not use a tabular schema of rows and columns to store data
  • 4 types of NoSQL databases:
    • Document – Oriented Database: every key is paired with a comlplex data structure document (similar to JSON)
    • Key-Value Stores: uses different key and each key is associated with only one value
    • Wide-Column Stores: data is stored in a tabular format, but column names and value formats can very from row to row (similar to SQL, but not as rigid)
    • Graph Stores: uses a graph structure where a node is data and an edge is an attribute about the relationship between nodes.
  • Examples of popular NoSQL databases:
    • MongoDB, Redis, Google Datastore, others…
  • Advantages
    • Scalable, Flexible, Document-Oriented databases can map to objects in objected-oriented programming languages

For this Capstone project, another teammate created the database model and my tasks do not include database setup. However, I will be implementing some of the backend endpoints. So, I will get my chance to interact with non-relational databases through queries. I’ve already started looking at Google Datastore documentation and it seems Datastore queries are more complex than MongoDB queries. It also appears that in Datastore a hashmap is not an allowed property for entities, but arrays are allowed. My team wanted to use a hashmap for one of our entities to quickly locate recording links for a specific language, but have determined a workaround. I’m curious as to why a hashmap cannot be used because it seems like if would be an efficient data structure to lookup a value. Maybe as I progress with implementing endpoints I will look into this.

To wrap this up, I’m somewhat disappointed I missed the revamped iteration of CS290 that included MongoDB. Learning about non-relational databases seems essential for industry especially with the move of data to the club and the need for fast and scalable databases. I’m looking forward to working with Datastore on this project. I’m curious to see if it is easier, harder, or about the same to work with as compared to Mongo.

* References:

Categories
Uncategorized

Week 3: Things Are Heating Up

“Give me six hours to chop down a tree and I will spend the first four sharpening the axe.”

– Abraham Lincoln

The school quarter is solidly into Week 3 and things are ramping up! This week my Capstone group finished up our very detailed Project Plan. I believe we did a fantastic job that only sets us up for success. We spent quality time describing how a user would interact with our mobile app, detailing the frontend, backend, and database interactions, and assigning individual task assignments from now until project completion. It took a while to complete all of this, but it will definitely be beneficial in the long run. We have a schedule as well as an outline to refer to during this development cycle, which makes the goal of building the app less daunting. However, I’m pretty excited about all of the new technologies I will learn.

It seems like each week I will be pushing myself by learning a new technology. Although I have experience with React.js, I do not have experience with React Native. I do have some experience with Python/Flask to build a simple microservice, but I don’t have experience using Python/Flask to make database calls.

Something that really caught my eye this week was the tool Figma, used to build the mobile app prototype. Another team member built the prototype so I did not fully use the tool myself, but now I want to learn. The tool allows you to design all visual aspects of how a mobile app would look, even including the keyboard that appears when you need to input text into forms. Figma also allows you to simulate a user ‘walking’ through the app as if you were interacting with the buttons on a particular page. I believe having this prototype is critical to implementing our app efficiently.

To ensure our progress continues to flow smoothly, I’ll be working on setting up my React Native environment and completing some simple tutorials. I’m hoping my previous experience building a simple web app with React.js will transfer over. I’ve also been using React.js in my internship, which is a nice refresher for this project, especially since I was able to receive feedback from and work with more experienced professionals. In turn, I hope my experience with this Capstone project will benefit my progress at work. To conclude, I hope to report back next week with new skills I’ve acquired in React Native.

Categories
Uncategorized

Week 2: The Project

Things have really started to ramp up this past week with regards to the Capstone Project. I’m feeling excited and anxious all at the same time. I’m looking forward to working with my team to build something I’m really excited about. However, I’m feeling anxious about the amount of work to complete in a short amount of time.

The following is a summary of this week’s highlights followed by my overall thoughts.

  • Projects and groups were assigned. I will be working on the Crowd-Sourced Immersive Language Learning App with 3 other teammates located in Texas, California, and Oregon.
  • First team zoom meeting included finalizing Team Standards, discussing overall project goals, languages/technologies, and workflow, as well as general team introductions.
  • Started organizing the Project Plan and will meet before the weekend to discuss as a group.

There were several projects that interested me, but I’m really excited to work on the language learning app. I know several people that would be interested in using the app when we as a group get it published. I’m also excited to be working with my group members. Everyone seems to have a diverse background to offer including technologies for the project as well as spoken languages! I know we have the capabilities to produce something really cool.

I’m probably most excited to be building a mobile app. I have experience building web apps, but not mobile apps. Unfortunately, I was not able to take the OSU course elective Mobile Development due to schedule timing, so being able to build this project with my teammates is a great opportunity. I have some experience using React, but learning how to use React Native will be a great skill strengthener! I look forward to continue selecting technologies and languages with my team.

We’re currently at the stage of creating our project plan. The project description contained detailed project requirements and this is the time when we get to really organize and flesh everything out. I know that spending quality time at this step will be very beneficial to completing the project in 8 weeks. I’ve learned from past experiences that spending time researching and designing a plan rather than jumping in blindly saves so much time in the long run. It also helps to keep everyone focused on the same ultimate goal, preventing too many side-steps.

So, I’m ready to do this. Let the work begin!

Categories
Uncategorized

From Earth Science to Computer Science

“You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something–your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.”

— Steve Jobs

The start of my final quarter as a Post-Bacc student at OSU has begun! I’m really looking forward to this last leg and bringing together the culmination of my learning in my Capstone final project. Before diving into my project, I thought it would be great to look back on how this entire journey began.

Previously, I spent eight years working as a geologist in Houston, TX, where I analyzed core samples retrieved from oil and gas wells. I very much enjoy the field of geology and still enjoy keeping up with the science. However, I was itching to try something new and switch to a career field with more opportunities. So, a little over two years ago, I decided to explore my interest in computer science.

After much research into boot camps, online self-learning, and traditional bachelor’s programs, I finally stumbled upon OSU’s post-bacc degree. I realized this would be a perfect fit for my situation. I wanted to obtain a B.S. degree but wanted the flexibility to continue to work, attend classes asynchronously, and focus only on CS coursework instead of meeting other general education requirements. OSU checked all of these boxes and boasts a great online community of current students and alumni.

When starting the program, I continued to work full-time as a geologist, which proved very challenging. I applaud anyone that completes this program while working full-time and maintaining social relationships. Their time management skills must be insane. I eventually landed a summer internship working as a data analyst, which meant finally leaving my career as a geologist. I have continued this internship into the school year incorporating more engineer/developer roles. My goal is to sign on full-time with this company as an engineer/developer, and I hope the upcoming talks with management are successful. Please keep your fingers crossed for me!

I’d like to note that during my interview and internship journey, most people were impressed by my previous career and that I returned to school. I’m grateful for those responses because initially, being an older student and starting over in a new field was a concern of mine. If anything, I’ve learned that it’s never too late to pursue a new passion or dream.

As I bring this initial post to a close, I refer to the quote as the beginning. Looking back, everything that led me to this moment seems to have just lined up perfectly. It’s not without a lot of hesitancy and scared feelings on my end, though. So, I’m really looking forward to what the future holds. I’m very excited to work on this Capstone project with other talented students, especially since not long ago, it wasn’t even the tiniest idea in my mind that I might be doing this. Cheers!