Categories
Uncategorized

One More Quarter to Go!

Advice for Working in Teams

I’m sure everyone gives the same sort of advice for these kinds of questions: ‘Make sure to start group work early!’ or ‘Ensure everyone understands their role on the team.’ While these are good pieces of advice, I want to give a more technical answer. Here it is: make sure you and your teammates are comfortable using Git.

Git is not something that is really taught in school, but you are expected to learn it. Most people have some experience using Git with personal projects, but most of the time you’re working on it alone. However, using Git alone isn’t really the same as collaborating on a project with a team. You need to understand how to handle conflicts, pull requests, branches, and merging. All of these things are daily occurrences when working with a team, so please take the time to understand how it all works. Taking the time to truly learn Git will save you so many headaches down the road.

Did I Ever Doubt Myself?

Yes. Next question…

Seriously though, yes I doubted myself at the start of my project. I still doubt myself, but I keep making useful contributions to the project, so I must be doing something right?

I think the doubt stems from the struggle. Most people think that if things aren’t clicking right away, then you’re not smart. But the truth is that this is how you learn things. If what you were doing was easy, then it probably means you aren’t learning anything.

Its also hard not to compare yourself to others. If you feel like there are other people in your group with more experience than you, you almost feel like you don’t belong. However, I’ve learned that this is an opportunity to learn from my groupmates. If there is something I don’t understand, I ask them to explain it to me. Look at it as an opportunity to grow and learn from someone with more experience.

If I Could Start Over…

There really isn’t much I would do differently (maybe not go to a Clippers game, catch the flu, and be bed ridden for 3 weeks). I think we’ve done the best we could with the knowledge that we had. Obviously with the knowledge I have now, there are some things we could have done better. But if I knew what I know now, I would just copy and paste the code we’ve written from my brain and be done with it. I think the mistakes we’ve made were far more beneficial to our learning than if we were to everything perfectly from the beginning.

Categories
Uncategorized

Technologies I’m Using for This Project

Technologies I’ve Been Introduced to

While I’m familiar with C++ , there were some aspects of using this language I was unaware of. I will talk about my experience with C++ in more detail below, but just know that I have a very surface level knowledge of the language. I was so used to creating simple programs and running them locally. Two things I was introduced to was CMake and G-Test. G-Test is of course a testing suite, similar to Pytest. I was able to get the hang of this pretty quickly, and there was no real friction when learning how everything worked. CMake is something I had never heard of, nor did I know it was even required. Luckily, a member of our group is familiar with CMake, so they were able to create those Make files for us. However, in the future I’m going to have to take a deep dive into Make files in general.

I Probably Should’ve Reviewed C++ Before Starting

I actually learned the very basics of programming with C++ about 8 years ago in my first ever programming course. The key words being “very basics”. All I really knew how to do was write some basic loops, and create some basic classes. I didn’t really dive into the specifics of C++ or its data types.

One thing I wish I had done was practice using C++ before we had started the project. As it turns out, it is quite difficult to create an emulator while simultaneously learning the language you are using to build it. While I’ve gotten the hang of it, I think it would’ve been more productive to spend a few weeks getting to know the language instead of having to learn as I go.

Did We Choose The Right Tool For The Job?

Even with my lack of experience with C++, I think we made the right choice. It has a good blend of low level functionality needed to create an emulator, while also having a nice layer of abstraction with its object oriented programming support. The ability to have objects and classes really makes organizing the emulator much easier.

In addition, C++ is such a versatile language that is used for a multitude of programming projects, so learning it will prove valuable even outside of this project.

Categories
Uncategorized

Clean Code and Code Smells

Clean Code: What I Like

We were asked to read the first chapter of Clean Code: A Handbook of Agile Software Craftsmanship. Within this chapter, there is a quote from Ron Jeffries that I agree with and disagree with. Let’s start with what I do agree with: there should be no duplication. He states that the presence of duplication shows that we aren’t representing our idea correctly within the code. I can 100% agree with this, as duplication often occurs when we are coding without fully understanding what needs to be done. We are just writing code as we need it, when we should instead do our best to determine what we need before hand.

Clean Code: What I Don’t Like

In his quote, Jeffries also states to limit the number of classes, functions, and methods. The reason I don’t like advice like this is because how do we know what the right number of entities is? It seems like this would be subjective from person to person. He also goes on to state that methods and classes that are doing too many things need to be broken up unto smaller objects or sub methods. I can agree with this to a certain extent, but when we try to put a definitive number of lines on a function or class, it starts to get a bit murky.

Refactoring: What I Like

In the book Refactoring: Improving the Design of Existing Code, Martin Fowler lists some “code smells” that we should look out for. One of the code smells he lists is the “Mysterious Name”. He discusses how renaming a function, or variable may seem like something that is unimportant, but can often save hours of trouble. This is especially true with functions. Often times, we don’t even need to look at the logic of the function. If the function is properly named, we should be able to deduce its “functionality” based solely on its name.

Refactoring: What I Don’t Like

Apparently, Martin Fowler is not a fan of loops, and says “they are no more relevant today than bell-bottoms”. I admit, I am not sure if I am in the minority, but I find loops very easy to follow and understand. It is entirely possible that this is only the case because that is how I learned programming, and my mind can’t imagine an alternative. In addition, I may change my mind as I gain more programming experience.

Thank you for coming to my Ted Talk…

Categories
Uncategorized

Almost done… with this quarter.

How is the project going?

As you can imagine, building an NES emulator is not an easy task. It is hard not to feel like you’re in over your head at some points. With that being said, I have a great group filled with some really smart people (myself included). It just seems like a lot because I’m looking at the project in its entirety. In reality, we will be working on this incrementally. Before we know it, we will have a fully functional emulator to play Mar— I mean unlicensed games.

Plans for the break

This quarter has been a bit of rough one. There has been a lot of long nights and early mornings, so I plan on resting up as much as possible. Its hard not to try to fill my breaks with self study, but it really is important to give your mind a break. With that being said, I do plan to work on the project over the break. Nothing too crazy. Maybe just write an opcode here and there.

Other than that, I’m going to enjoy the simple things, like actually being able to make dinner after work. I like to cook, but with my schedule I don’t get many opportunities to make dinner for my girlfriend and I. I’m going to use my new found time to get to cooking! Also, my girlfriend needs a break.

Plans for next quarter

With finals around the corner, I wanted to fill you in on what I have planned for next quarter. I will be taking 4 classes: Introduction to Usability Engineering, Cryptography, Introduction to Digital Forensics, and of course, this course! I have no idea what to expect, but I have heard cryptography can get pretty challenging. I also heard that about a lot of the courses I took, and I’m still here!

Its also exciting, as next quarter starts off my final year here at OSU! I have 4 quarters left (including summer), starting with Winter 2025. I plan on finishing out strong, and finally earning the degree I’ve been working so hard for.

Categories
Uncategorized

I’m Back!

So Which Project Did I Choose?

When I last left you, I was choosing between two different projects. Those projects were the NES Emulator and Malware Analysis. You will be happy to know that I was assigned to my first choice, the NES Emulator! As you can imagine, I was very excited about this. However, that excitement quickly turned into worry. If you remember from my last post, I had no idea how to do this.

Break It Down!

Luckily, this course encourages you to break the project down into smaller requirements. Without this crucial step, I don’t think I would have the understanding of the NES system that I do now. We have always been taught to break the problem down into smaller problems. I now see why… With each iteration of our requirements document, my blood pressure goes down just a little.

Seriously, if you are ever stuck on a problem, just break it down into smaller problems. It really does help.

How’s The Course?

For the most part, the Senior Capstone class has been everything I expected it to be. We get assigned to a project and team, then we complete that project. However, the amount of writing associated with this course is something I did not expect. For some people, this may be an issue. Fortunately, I invested in my writing skills early on, so I don’t mind the writing one bit.

It may seem like an unnecessary amount of writing at first, but you’ll quickly see how helpful this whole process is. This is especially true if you are not entirely sure what your project requirements are.

Job Hunt

As I previously mentioned, I currently work full-time as a Logistics Coordinator. It is a relatively stressful job, especially when things don’t go as planned (which is all the time). However, it has taught me a lot of soft skills that will prove valuable in the future.

As grateful as I am for my current position, I do want to make a transition. It is a bit difficult to take on an internship, as I can’t really quit my job due to the fact that I don’t want to be homeless. However, I do plan on transitioning within the company to gain some experience. Stay tuned, as I’m sure you’ll be reading a post about my new position in the company!

How Have I been Handling All of This?

Not to bring the mood down or anything, but I definitely struggle with stress and anxiety. Between working a full time logistics job (ask anybody how fun logistics is), and being a full time student, it can get pretty overwhelming. There are definitely days where I get home from work, and don’t even want to think about homework.

With that being said, I am fortunate enough to have a great support system that I can rely on to keep me motivated. I also like to remind myself that I am incredibly lucky to be able to get an education, and I never want to waste that opportunity. If all else fails, all I have to do is remember how much this all costs me…. I have to get what I paid for!

A piece of serious advice is to always make time for yourself, and the people you love. If life is just a cycle of work, school, and repeat, then you’ll find yourself burnt out sooner rather than later.

Categories
Uncategorized

Hello World!

Sorry, I had to do it…

Who Am I?

Hello, reader! My name is Abel Sanchez, but everybody calls me Abe. I am currently a student at Oregon State, working towards my Computer Science degree.

I was born and raised in Fresno, California. If you’re thinking I live near the beach, you would be mistaken. If you’re thinking I live in a cool mountain town, you’d also be mistaken. The good news is that I’m right in the middle of California, so everything worth doing in this state is just a few hours away.

Hobbies

Like most Computer Science majors, I spend a lot of my free time playing video games. I’m currently addicted to College Football 2025. There, I get to live out my dreams vicariously through my Road to Glory player (yes, I play for Oregon State). He does things that would make my knees explode if I even thought about it.

Aside from that, I love spending time with my girlfriend. If I’m not playing video games, I’m hanging out with her. A perfect day for us would be rotting away on our couch, watching TV and movies. It’s currently October, so we’ve been sure to get in the spooky spirit and watch horror movies. Ironically, that’s her favorite genre of movies, so its actually no different from any other month.

Current Job

As someone who studies computer science, you may be able to guess my current job. That’s right… I’m a logistics coordinator for a very large construction company! That’s not what you were thinking? That’s okay! I never would’ve guessed this is what I would be doing either.

If you’re wondering what a logistics coordinator does, you sound just like me when I interviewed for the job in the first place. In a nutshell, our project managers tell me when they need material to arrive at the jobsite, and I make it happen.

My Computer Science Journey

I wish I could say that I’ve been coding since I was a kid, or that I’ve always had a curiosity for how computers worked, but I would be lying. To top it off, I sucked at math, and had no interest at getting good at it. So how did I even end up here?

The embarrassing, and possibly eyebrow raising, truth is that one day I just decided I wanted to go to school for Computer Science. It seemed like a cool major. Seriously, that’s it. I signed up for classes at my local community college, and never looked back. It was the best decision of my life. It awakened an excitement for learning that I had never felt before. I even got good at math!

After a few years at the prestigious Fresno City College, I transferred to Oregon State. That brings us to present day, where I am now in my final year of college. There is still so much to learn, but I am proud of all the progress I’ve made this far.

Favorite Project

Part of the reason I’m writing this post is for my Senior Capstone project. In fact, I don’t have a choice, as this is a part of my grade. Regardless, I am excited to begin this journey! There are a lot of cool projects to choose from, but there are a couple that caught my eye.

NES Emulator

The project that seems the most fun is the NES emulator. However, it also seems the most challenging. As you may have guessed, in this project you are tasked to create an NES emulator using C or C++. You will need to emulate the NES’s 8-bit 6502 processer, along with the APU (Audio Processing Unit), and PPU (Picture Processing Unit).

I know, I know. I must be a pretty smart guy to be able to tackle a project like this, right? The truth is, I have no idea how to do any of this, but that seems like more of a reason to choose this project. Don’t you think?

Malware Analysis

Did I mention my Computer Science curriculum has a focus in Cybersecurity? No? Well it does, and malware analysis seems like an important topic to study. In this project, you are asked to establish a virtual environment to perform static and dynamic malware analysis. Again, this seems quite difficult, but I am determined to challenge myself.

Like the NES Emulator, I have no idea how to go about this. You’re probably wondering, “Does he know anything?” The answer is yes. However, I think what makes computer science so great is that there will always be something you don’t know—until you try it.