Monday, June 24, 2024

Operating Systems: Week 1

This first week of CST334 has been a bit of a whirlwind, as most first weeks are.  Upcoming up to speed on a new instructors teaching and work style, as well as expectations.  In addition to quirking hitting the ground running for learning the first weeks lessons.  This first week has gone by fast, but it's felt good.

This week I've started to dust off the previous C knowledge I've had, clearing out cobwebs as I haven't used C in any regular usage in some time.  So it's been fun working through the programming assignment 1, each function to fill out like a little puzzle to solve.  I hope that sort of feeling continues through the course.

We've started learning general concepts of what is an operating system and why operating systems. I'm excited to explore more of this area in the weeks ahead.  The OSTEP book seems like it'll be a great asset to the course.  This first introduction chapter had some great insight and tidbits on computing history.

Tuesday, June 11, 2024

Intro to Databases Week 8

 The previous post does a good job summarizing my thoughts about databases (both MySQL and MongoDB).  In short, I've throughly enjoyed the course, the 3 most important things I've felt I've learned are:

  1.  Database design.  The course has helped me a lot to understand database design decisions, which directly affect how databases are used.  Database design patterns that either I wasn't ware of previous or was unfamiliar with why they were made, had popped up in my previous work of, why is this query structured like this, or why does this query work but this one doesn't.  I've now learned a great deal about how and probably more importantly why databases are designed the way they are.  
  2. SQL command syntax.  I became a lot more comfortable putting together SQL queries durning this course, you're kind of forced to.  Previous in my work, I've struggled and felt at times as though I was trying random combinations to craft a proper SQL query.  Now I feel comfortable both reading and writing efficient SQL queries that I know will produced the desired effect.
  3. Efficient database usage.  What I mean by that is, previously, I would craft a query that returned me results and then I would spend a bunch of effort transforming or filtering the data inside the application or script itself.  I now understand how to craft SQL queries that not only will return me data, but can act on that data itself, sometimes a lot more efficiently than I might perform manually in my own program after the fact.  Being able to let the query do some of that work is greatly helpful.

Intro to Databases Week 7

This week saw the introduction and use of MongoDB as a database as opposed to MySQL we've spent most of the class with.  Not having much practiced use of either database before I've found overall I've enjoyed using both a lot more now that I understand a bit more of the under the hood mechanics, versus just trying to find the right query that would resolve my need.  I can now look at the design of the database and see how it was intended to be utilized.

I thought I might favor MongoDB over MySQL, as the idea of MongoDB document(s) sort of fits naturally with a lot of my use of other programming languages data structures like arrays and hashes/dictionaries.  However, this course got me a lot more comfortable using MySQL and designing my program towards its advantages.  I discovered that a MySQL query in itself could perform some or a lot of the work that I always assumed I would have to do with the raw data after receiving it from a database.

I feel I might gravitate towards either database depending on what my program was being designed to do and the data it was going to be using.  If the data was more adhoc, or in a json like format I might opt for using MongoDB, but if I knew the data was going to be more fixed, maybe MySQL.  Or if I knew the SQL query could provide benefit in terms of reducing what I would need to do with the data after retrieving it, maybe MySQL.

They both have great interfaces to lots of different programing languages, so that probably wouldn't be a deciding factor for me.  

Another thing I'd think about, if I was designing the database itself versus just using the database, would things like performance and data replication.  MongoDB might have a slight performance edge, but is generally from the flexibility of how you can query your data. Overall, both are great databases and it choices in each really are determined by the data you're working with, how you'll be accessing it, and retention/scaling of the database.




Tuesday, June 4, 2024

Intro to Databases Week 6

Group Work

This past week has been a fun change of pace as we got to work in groups on a project, so collaborating and sharing ideas and suggestions was welcome.  Also nice this week was using our knowledge inside a real world project, using the knowledge we've gained around databases during this course and using it inside a practical application, even if the application isn't fully flushed out.

SQL Integration

As our group project showed, this week was also learning about to integrate a database into programs you might write in different languages.