• CS50x C Programming Lecture Is Unnecessarily Complicated

    CS50x C Programming Lecture Is Unnecessarily Complicated

    As I continue through Harvard’s 2024 CS50x course on YouTube (which I discussed in this previous post) I finally came to the lecture regarding the C programming language. I’m ready to go because I want to learn the language running Python. Also, I wanted to see how difficult it was to use the language after reading about it online. Well, after watching about 36 minutes of the lecture I gave up. Why? Because the CS50x C programming lecture is unnecessarily complicated. I’ll explain why below.

    CS50X C Programming Lecture Is Complicated Because Of Its Custom Header Files

    I know that CS50x is the introduction class for Harvard’s Computer Science program. Thus, there are going to be all types of students taking the course, not just Computer Science majors. Because of that the staff behind the C lecture decided to make the programming language easier to learn by creating a custom header file. That’s why the CS50x C programming lecture is unnecessarily complicated for me.

    I get why they made this decision. There are many header files to choose from. If a student forgets to include the specific one in their project they won’t have access to the needed built-in functions.

    Even though I understand the logic behind the decision of implementing a custom header file for the students to use, I think it does them (and me) a disservice. What happens when a student becomes too dependent on it? That individual could have a hard time creating their own projects in C, or working in a code base belonging to another individual and/or company.

    Finally, CS50x’s custom header file include custom functions: “get_string” is a popular one. I thought that was part of the C programming language, but discovered the truth while researching online. Once I learned that I decided to find another course to learn C.

    The Course I’m Using Instead

    Instead of learning from the CS50x C programming lecture I’m learning from the C Programming Full Course for free video on YouTube from the Bro Code channel. Even though it is three years old now, the video doesn’t feel outdated. The trainer/presenter uses VS Code which is what I’m using to write and run my C code.

    I did find a recent video (released about six months ago) from FreeCodeCamp, but it’s 18+ hours long. Unfortunately, I don’t have the time to invest in that long of a video.

  • Learning Programming From YouTube University

    Learning Programming From YouTube University

    I’m currently learning programming from YouTube University. This is after using other online learning websites like Udemy and Coursera. I will go into detail why I chose to use YouTube over those websites in a future post. In this post I’ll cover the channels I watch/subscribe to, and what content I’m consuming.

    Learning Programming From YouTube University: Focusing On Python

    I’m focusing on the Python programming language so most of the videos I watch is about that language. I started out with a refresher from the FreeCodeCamp channel using this video since I already know the language. Then I progressed to refreshing my Object Oriented Programming (OOP) skills using another video on their channel. Both of these videos were great because they were concise and presented by knowledgeable trainers/presenters. That’s why I suggest the FreeCodeCamp channel to anyone interested in learning to code.

    In addition to that channel I also recommend the Indently channel because the creator does an awesome job of explaining Python topics and concepts in a simple and clear fashion. The creator also provides both Shorts and long-form content to explain how to use concepts like like decorators to how to write well-defined functions. This channel is also informative because the creator covers the latest updates to the Python programming language (version 3.13).

    “Taking” Harvard’s CS50 Class

    Oh yes, as part of my learning programming from YouTube University regiment I’m “taking” Harvard’s CS50 course. Well, maybe I should say watching because that’s what I’m doing. I’m watching the videos from the 2024 version collected in their course playlist on the CS50 channel.

    I know this course has its admirers and haters. I’ve watched videos from both camps to learn about the pros and cons of the course. With that in mind I’m watching each lecture with a neutral mindset as I want to develop my own opinion about the course. So far I’ve finished Lecture 0 and slowly progressing through Lecture 1. I’m taking my time so I can actually learn the information provided.

    Learning Programming From YouTube University: YouTube Premium Is Necessary

    I wouldn’t suggest anyone take on this endeavor without purchasing YouTube Premium as the constant ad interruption will disruption learning. I understand the cost can be prohibitive for some, but it’s worth it! As a long-time subscriber to the service, YouTube Premium makes navigating between different types of videos a breeze. I don’t worry about unskippable ads, or worrying about an ad break popping in when a particular tutorial or lecture gets good.

  • Quick Black History Facts: An Introduction

    Quick Black History Facts: An Introduction

    One of my technical projects I updated recently is Quick Black History Facts (which you can visit here). In this post I will discuss the following topics about this web application:

    1. Why I created it
    2. The code running it
    3. My future plans for the web application

    Why I Created Quick Black History Facts

    The reason why I created this web application starts in 2018. That year I taught myself the Python programming language from a course on Udemy. Then in 2019 I improved my Python skills by creating more projects. One of those projects was Quick Black History Facts (which was formally called Black History Facts Generator). February was fast-approaching and it was time again for me to celebrate Black History Month.

    During that month I would tweet random facts on my Twitter account, but that’s time-consuming. This manual process is perfect for a computer program, and I thought about creating one to connect to the Twitter API. That way the random fact would tweet out automatically. Thus, I started devising my plan.

    The Plan’s Objective Changes

    As I worked on this project further, the objective of what I wanted to accomplish changed. It changed because my programming skill-set to use the Twitter API was not strong enough. Frankly, I was out of my depth. So I pivoted to building a website to display the facts because I was familiar in website design.

    The Code Running Quick Black History Facts

    All the code can be found on the project’s GitHub repo.

    Front-End Code

    I used Bootstrap to build out the Front-End of the website because of the following reasons:

    • Ease to use
    • Rich responsive website design features
    • Offers good performance

    In addition to Bootstrap I use regular (or vanilla) HTML and CSS to build out the Front-End.

    Back-End Code

    I used Python and Flask to build out the Back-end of the website. I chose to use Flask over Django because it requires much less code to spin up a simple application.

    The Python code to display the random fact on the screen is in these three lines of code:

    with open("static/files/black_history_facts.txt", "r") as facts:
        fact_list = facts.readlines()
    return render_template('index.html', black_history_fact=random.choice(fact_list))

    Let’s go through the code line by line:

    1. All the facts are in a text file delimited with a newline at the end of each sentence.
    2. Using “with open” to open that file as read-only and read the contents using a loop.
    3. The loop iterates over each individual line in the text file with the “readlines” Python built-in function.
    4. A list stores each individual fact.
    5. Using Flask’s “render_template” function and Python’s built-in function “random.choice” a random fact from the list displays on the screen.

    My Future Plans For This Application

    I don’t have any major plans to modify the code for Quick Black History Facts. My only plan is to add more Black History facts to the text file. I’ll start doing that in January 2025.

  • Learn Python Using The FreeCodeCamp YouTube Channel

    Learn Python Using The FreeCodeCamp YouTube Channel

    For anyone wanting to learn a programming language I tend to suggest Python. It’s the first language I learned so there’s some bias with my answer. There’s various ways to learn any programming language, including Python, from going to college to buying Udemy courses. I have nothing against those options, but I rather someone get started for free. That’s why I suggest to learn Python using the FreeCodeCamp YouTube channel.

    Here’s Why You Should Learn Python Using The FreeCodeCamp YouTube Channel

    The main reason why I suggest individuals use FreeCodeCamp’s YouTube channel becuase it’s free! I rather someone invest their time than their money in a new topic they may or may not like. While some may feel bad for wasting their time on watching one or more videos if they discover they don’t like programming, they won’t feel as bad if they wasted money on courses or even attending a bootcamp.

    That’s something I see too often with those new to programming. They rush to Udemy to buy course after course that’s on sale. Many of those people start watching one or more of their courses, but few completely finish watching all the videos and completing all the coursework. Others get the idea to attend a bootcamp or a college after getting ads for them while researching their options. The problem I have with this is that both are quite expensive and require a long time committment. (Although a bootcamp is shorter than getting a college degree, most last for several months.)

    Another reason to learn Python using the FreeCodeCamp YouTube channel is the high-quality of the videos along with the extensive knowledge of their instructors. In addition, their videos are easy to follow and separated into chapters. Thus, any student can learn by one chapter at a time, or consume the entire video in one sitting.

    Here’s a video I highly recommend to beginners:

    It’s about 4 hours and thirty minutes in length, but the instructor and the training material is so good the time flies by! This video is 3 years old, meaning outdated information pops up. I saw this in the chapters helping the viewer install Python onto their computer and the PyCharm IDE.

  • My Plans For My Future Role

    My Plans For My Future Role

    In this post I want to discuss my plans for my future role I want to try for (and hopefully get) at my current employer. I’ll also touch on a little about my learning plan, but I will discuss that in more detail in a future post.

    Information About My Current Role

    I work at Google as a Data Center Technician (DT) for the past 18 months. May 2025 will be my two year anniversary (or Googleversary). Knowing that, I made the decision back around August or so to start developing my plans for my future role because I’m ready for a change.

    This is not to say I don’t like being a DT. I’ve worked in other data centers in my storied IT career, but now that I’m getting older my joints and back don’t like it as much. The servers are getting heavier, and sometimes I don’t want to climb a ladder or sit on the floor to access the server at the bottom of the rack. However, due to all the walking my job requires I can easily hit ten thousand steps per day, which is beneficial to my health.

    My Plans For My Future Role

    So what is my next move regarding my future role? Site Reliability Engineering (SRE).

    Why? Because of the following reasons:

    1. Coding is fun
    2. Solving problems is challenging, and I love a good challenge
    3. Administering systems/services is fun too

    I’m currently working to apply to a program at my workplace that would allow me to work with a SRE Team for three months. The program allows individuals to determine if the role is a good fit for them, and to get experience working as a SRE. Thus, if I do like the position then I will gain the knowledge I can put on my resume to hopefully get an interview (and the job).

    One way I’m working to apply to the program is to improve my programming language experience. I chose Python since I already have experience writing and debugging it. The way I chose to improve my skills with it is to use YouTube University! Most of the videos I’ve watched in the playlist I created have been from the FreeCodeCamp channel.

    The other way I’m working to get into the program is to assist the group maintaining the code and documentation for the applications and/or scripts the DTs use. The group has several volunteers, but the amount fo bug and feature requests is too much for them. So I can help them (and all the DTs) and gain the work-related coding experience needed. I already started helping the group with updating the documentation for different applications and/or scripts.

    I hope to apply in Q2 2025, but that timeline can move to later in the year depending on my current workload and if I have enough work-related programming experience.