Blog Post #2 CS462 WIN2025

The technology I am using for this project is C++ alongside Docker and running unit tests inside CLion. I am always grateful when I have the opportunity to work in C++ more. It seems to be the fastest and most versatile/lightweight object oriented programming language out there. Manual memory allocation, memory tables, dealing with header files and class structure is all beneficial to me as a programmer. CPU programming is something entirely new to me and it’s been great to see how to programme: addressing modes, bitwise manipulation, storing and passing very small amounts of data that need to be quickly and reliably manipulated, and many more tasks I’m still discovering.

I’m having a hard time generating images on Docker and seeing the necessity in doing so, especially since we’re working with such old technology. Despite that, our testing environment is constantly being updated so it’s crucial to have the container in which we’re testing and running the programme to stay consistent over the updates and new iterations of the product. I’ve found it easier for me personally to run Docker and CLion on my Mac laptop in order to have everything run seamlessly on the same machine.

As for additions and adjustments to our tech stack, I cannot say that I would make any adjustments. JetBrains IDEs seem to be on the very cutting edge of IDEs so I don’t think I could be working with anything better than this. It might be difficult for me when my student license expires and I go back to VSC, but I’m enjoying this IDE while I have it.

One of my groupmates has a file they extracted from their own NES cartridges but I wish I had an adapter myself just so I could see if I could manipulate the data on said cartridge myself and see the change in real time. Regardless, I’m satisfied with the overall experience and how the progress is progressing.

Image source: https://austinmorlan.com/posts/nes_rendering_overview/

Until next time, my esteemed colleagues

㋼ Cody Hill

Blog Post #1 Winter 2025: Good Clean Code

Happy 2025 folks!

I know we’re off to a strong start this year, so let’s sit down and relax a bit and talk about clean code and code smells.

The most un/fortunate thing about writing code that will be seen and used by other people is that the code will be seen and used by other people. Because of this, the beautiful mess that exists inside of your brain must be refined to such a degree that it adheres to some semblance of a standard. There aren’t hard rules to writing good code in the same way that there aren’t hard rules to success; one must exude a multitude of attitudes and habits in order to strive towards the ever-changing goal of writing “good” code.

There are do’s and dont’s on code writing that many programmers have more or less decided upon and I will discuss an article on clean code writing as well as one on code smells (bad practices) and speak on rules that I’ve seen personally in my own programming journey and yap about them.

Let’s begin with – Clean Code

I read this article from Free Code Camp: https://www.freecodecamp.org/news/how-to-write-clean-code/

They speak at length about clean code but the most important one that spoke to me was simplicity in writing code. While efficacy and efficiency are very important, (they’re listed near first in the article) to me, simplicity is just as important especially when it comes to readability.

In my opinion, code should be written in such a way that it is recognizable most of the time at a glance. I’ve known certain programmers to write very dense lines of code in an effort to display their syntactical skill boasting short run times and percentiles from their time leet coding, but more often than not the resulting code is an indecipherable mess.

Long, descriptive variable names, good spacing, and easy-to-follow code will make readability on a project so much greater and approachable. Two sections in this article that support this belief are “Format and Syntax” and “Naming” wherein descriptiveness and preciseness are praised.

Next up is code smells

For this issue, I read this article on code smells from 8thlight: https://8thlight.com/insights/common-code-smells

Rather than speak on one large concept, I’d like to touch on a few smaller yet important concepts mentioned in this article, the first of those being: duplicate code.

Any programmer who’s gone through any sort of formal education should have heard the acronym DRY at some point, which stands for “don’t repeat yourself.” I see reused and slightly altered code so much in programming. While it is also verbose and a big time-waster, this article point out that it also possibly can propagate bugs. Did you write bad code and use it in 18 different places? Congratulations, now you have to go fix the same issue in all 18 of those places. When getting to the root of the problem, the root best be in one place.

Another section is commenting. Often comments will be reiterative, will explain obvious concepts that should be self-evident through the code written, or just generally add nothing to the project. This article points out as well that the comments might reflect a previous version of the programme that doesn’t reflect its current state. When refactoring and updating code comments could be left to the wayside and end up confusing those who are newcomers into this code base (or yourself even if you haven’t read your own code in a while!). This is a trap you should avoid by only commenting when necessary and keeping it as up to date as the code is.

Thank you for taking the time to read my thoughts on prevalent code do’s and dont’s. These articles helped me see underlying, additional issues that might arise further enforcing good practices. Quite often we will be told how to comment or code by the established procedures set by the entity governing a project, but we must remember good practices WITHIN those parameters always and code well.

Have a good rest of your January, and stay safe and sane.

-Cody Hill-

Blog #3 End of Fall Thoughts and Experiences

I feel more confident than I ever have before!

I’ve faced some challenges (Windows 10) in my classes and I’ve always had a classmate or groupmate to help me get back on track.

This NES Emulator group project I’ve been working on has been a challenge but my groupmates, especially Austin and Gevko, have been patiently working with me, hopping on Discord calls and pair programming with me. I had some difficulty setting up the environment and linter. I was on a Discord call with Gevko trying for a while to see what was the issue, and it came from being on Windows (Windows).

Getting back into Git has been refreshing and working with tests and linting has been as well. In true fashion, this feels like a culmination of all the classes I’ve had before and this is my real chance to use the information and skills I’ve obtained.

I get along with my groupmates and they are very patient with me. I just hope I am not putting any undue stress on anybody. I’m sure they would mention it if I was.

We’re doing this process iteratively and the pacing has been good for spacing out the work so it doesn’t get overwhelming with all of my other subjects. I am just very busy during the week so I have to make my contributions closer to or on the weekend but that hasn’t been an issue thus far.

I’m using JetBrains’ CLion now (free trial) and loving it. I know that true nerds can code in Neo Vim but I like a fancy IDE that helps me a little bit.

This class is well structured and I wish i could offer any constructive criticism but I fear that my mind is too focused on the project to try and find any fault with the system as a whole, i hope you understand.

As for the job hunt it is a slow start but i am very much eager and willing to start any kind of role whether it be part-time or an internship so I can focus on school as well.

As for methods on relieving stress and managing time? I believe I’ve put it into a class discussion somewhere but it’s just a difficult balance of starting just a little earlier on projects, making yourself work on them just a little longer each day, and taking the time to do the little things for your project or group. I pray I continue to follow my own advice.

Au revoir and thanks for reading!

Progress So Far

Hello, friends and staff (who might also be friends).

Here’s another status update from old Cody.

I’ve been elbows deep in, among other things, the SNES project as well as every other kind of project under the sun. Having 4 classes is a waking nightmare for someone like me.

Regardless, I’ve had some time to watch videos and review documents on the structure of the Nintendo Entertainment system. I am kind of intimidated by my project teammates because they are so familiar with the structure already and are zooming along with the project. I am as comfortable with C and C++ as the next CS undergrad is, but storing things in registers and having tons and tons of bitwise operations being performed to run an entire gaming system is daunting, but one step at a time it looks entirely manageable.

The one thing we have going for us is that this is well-charted territory and our task isn’t anywhere close to being impossible. I have spent the majority of my time looking at the operator commands, registers, and addressing modes of the CPU so I can’t wait to expand and gain a fundamental understanding of the system as a whole.

My one concern is getting lost in class hell, which is often the case in OOP. I know that we learn about polymorphism and class inheritance but sometimes it is simply not the right move to stack classes hierarchically like that. I remain undaunted by the task at hand, merely daunted by the workload of my other classes.

This week I will have some time after I am finished with my CS450 class (graphics) project.

I have ADHD and am working on getting medicated again so I can more effectively manage my time and resources. My Life Pro Tip to others would be to never lose sight of your health. I know we all spend most of our days in front of a screen either big or little but our health is so important and tied to things like: focus, general well-being, energy levels, et cetera.

Nevertheless I am hopeful. There’s a zen-like state of workflow that one can put themselves in in order to deal with the responsibilities and expectations of school. School often makes students stop programming in their free-time due to the high demand of projects but I am excited to be working on a personal project for credits next semester.

I hope you’re all well and doing what you enjoy as well. I also hope that the graduate students’ union strikes a good bargain with the university. I wish the best for those who are just trying to work for manageable, livable conditions for them and their peers.

Introduction

Salutations, to all of my friends at OSU. Добрый День

My name is Cody Hill (William is my legal first name, never you mind it) and I am a senior-level student here at OSU.

Timezone: My timezone is PST and I am located just outside of Los Angeles County in Southern California.

Personal Details: I am fortunately childless and pet-less (I have a boyfriend to feed and take on walks, don’t worry). My hobbies are mainly learning languages and playing music. My favourite languages are Spanish & Japanese, but each and every language is just as beautiful to me. I play an 8 string electric guitar and a 5 string electric bass, both black both Ibanez. If I’m not doing that I’m either playing Dead by Daylight or FFXIV (fellow WoLs, where are you at?).

My Journey: I got started with computers and coding in the 2010s. My brother was a computer science student and I had some experience in HTML so coding looked rather appealing. Plus I’m old enough to have had a MySpace and made blog posts on the old internet so I was well familiar with HTML. So I took many courses on Codecademy and fell in love with JavaScript and React. I went back to school at College of the Canyons (community college) and progress on my degree was at a snails pace. Then blessed be, Covid struck and college was moved online. I am a member of the working poor and I was finally afforded an opportunity to progress my education more than the one or two classes that were offered a semester online before Covid-19. Covid-19 proved that many college classes COULD have been offered online the entire time, but most facilities had been simply refusing to do so. I graduated with an AS and went on to OSU.

Employment: I am down for anything that is part-time and provides benefits (impossible). I just quit my job to focus on school this semester.

Favourite Technologies: I am a bog fan of everything JavaScript. However, the scene is constantly changing and the technologies progress and change faster than I can finish a project, it seems. I am also very fond of PHP, Python, and C++ for the ease with which I can make projects. C and C++ are fun but the classes that utilize them sure are not.

Favourite Listed Projects: The NES emulator one looks exceedingly dope, and I would love to participate. Also, the board game and text-based adventure game projects also look extremely promising! I seem to be gravitating towards games this semester. I am anti-AI in its current state, so I am not keen on making yet another ChatGPT-wrapper application. If I want to hear something tell me things and be confidently wrong about it, I’ll talk to my friends!

I hope to work with my fellow programmers in a positive way and have a good time working on a fun, productive project. Stay safe and well-hydrated, y’all!