All posts by Skyler Bass

Implementing Effective Practices

Clean Code

No one enjoys walking into a mess, including programmers. That is right, we are talking about code. More importantly, clean code. In 2018, Robert Cecil Martin wrote “Clean Code: A Handbook of Agile Software Craftsmanship” that defined clean code as code that was maintainable, easy to read, and could be scaled. This is also the ideal standard of practice, because it makes developing things easier for everyone involved.

Code Smells

Another aspect of development is the Code Smells, which is just the opposite side of the coin from clean code. Code smells are signs or indicators that something might be wrong with the code, even if it is technically working, as indicated by the Tech Target article, “Understanding Code Smells and How Refactoring Can Help.” This can include any areas where the code seems inefficient, difficult to read, or prone to bugs, making it harder to maintain or scale. Understanding and addressing code smells quickly can help prevent larger issues late in development.

Both concepts work together to provide code that is easy to understand, maintain, and scale. The smell is the symptom while the clean code practice is the solution. Articles, such as Codacy’s “What is Clean Code? A Guide to Principles and Best Practices” describe guidelines such as following the established code writing standards. Other recommended standards that I think would be important to implement include writing short functions that only do one thing, avoiding duplicate code or logic, and avoiding using hard-coded numbers.

Examples

Implementing best practices should happen quickly. In the context of practical application, I plan to apply these practices to completing the 3D Escape Room Challenge Capstone project for my senior software engineering project. Below are examples of common code smells and how clean code practices address them.

Large functions

A single function, updatePlayerState() exists, and handles multiple tasks such as updating health, inventory, and quest progress, making the function long and difficult to troubleshoot.

The solution is to break the function into smaller functions with a single purpose, resulting in updatePlayerHealth(), updateInventory(), and updateQuestStatus(). By dividing the tasks, the code becomes more readable and easier to test and debug. This method also allows for specific updates without risking other functionality.

Duplicate Code

Many objects have the ability to be interacted with using the same logic, rewritten in each class, leading to an increase in technical debt.

Instead, creating a reusable class with shared logic allows the object type to inherit from the ObjectInteraction class and use the objectPickUp() method. This reduces redundancy and ensures consistent behavior across interactable objects.

Hard-Coded Numbers

Directly embedding numeric values such as speed = 5 in multiple places makes it unclear what the number represents or why it was chosen. Adjusting these values later requires updating each occurrence, increasing the opportunity for errors to occur.

Defining constants or configuration variables with meaningful names, such as const DEFUALT_SPEED = 5;, allows us to clarify the intent and makes the value easy to change in a single location if needed.

Conclusion

Overall, clean code is the foundation for maintainable, scalable, and efficient application development. By addressing code smells like large functions, duplicate code, and hard-coded numbers with clean code practices, developers can create systems that are easy to understand and evolve. As I continue developing the 3D Escape Room Challenge Capstone project, these principles will help ensure the project is robust and easy to enhance in the future.

The Start of a Journey

After completing the first term in the Senior Software Engineering Project, where my group is currently tasked with building an Escape Room Game, I feel I have learned a lot about the early stages of development in video games. As an avid gamer my entire life, I’ve always been intrigued by the beginning stages of a game, the storyboarding, the art, putting it all together to make something fun to play. I’ve learned since then that there is much more to it than sketching all day and writing stories. There is a completely technical side that seems almost invisible to anyone who isn’t digging for it.

The technical side of game design involves creating systems and mechanics that bring our creative vision to life. It’s a delicate balance between the artistic and the logical. During this term, I discovered how essential tools like version control, task management, and development frameworks are to organizing a project of this scale. Our team chose to use Godot as our game engine, and learning to navigate its features, such as its scripting language GDScript and node-based scene system, has been a challenge—but also incredibly rewarding.

One of the most surprising aspects of the process was how much collaboration and iteration were required, even in these early stages. Creating a cohesive vision meant that every member of the team needed to be on the same page, from the gameplay mechanics to the visual style. We spent hours brainstorming puzzle ideas, discussing player flow, and debating how much guidance the player should receive to maintain both challenge and enjoyment. Balancing creative freedom with technical constraints was a constant push and pull.

The technical work wasn’t limited to just the game engine, either. I learned about concepts like collision detection, state machines, and user interface (UI) design, which are fundamental to the functionality and polish of the final product. Designing physics-based puzzles, for example, involved not only conceptualizing the challenge but also implementing the logic behind how objects would interact within the game world. Debugging these mechanics required patience and problem-solving, as small missteps often created unexpected results.

Another key takeaway was how critical planning is in game development. Storyboarding and prototyping became tools for clarifying our ideas and avoiding wasted effort. By creating wireframes for our escape room levels and testing rough versions of puzzles early, we were able to catch design flaws and ensure the game’s flow felt intuitive. This iterative approach highlighted the importance of user testing; what made sense to us as developers didn’t always translate well for players unfamiliar with our design.

Perhaps the most profound lesson I’ve learned is that game development is inherently multidisciplinary. It’s not just about coding or storytelling — it’s about combining art, design, engineering, and psychology to create an engaging experience. Each member of our team brought unique skills to the table, and leveraging those strengths helped us tackle challenges more effectively. Overall, the experience has given me a new appreciation for the work that goes into making games. As someone who’s always admired the final product, I now have a deeper understanding of the complex process behind it. While the road ahead in this project is still long, I’m excited to continue developing our escape room game, pushing our technical skills, and seeing our ideas evolve into something tangible and enjoyable.

Foundations for Success

                When I started this blog, I felt like I had something important to say about life. I was finally old enough to contribute to the boundless world of thoughts, opinions, and infinite information that the internet might offer to other people in search of answers about their careers, school, parenting, and life in general. I wrote my first post confidently, and then it came time to write my second post, and the inspiration obviously lacked. I said, “I am going to keep up with this!” – and then obviously didn’t.

                This is life in the truest word of the sense. We commit to these ideas and expectations of ourselves and then feel we let down the people around us. I got anxious thinking, “No one cares, but everyone will care if they decide to take notice.” So, I clammed up, wrote a fluff post that I don’t even remember the contents of, and then promptly stopped writing altogether because of fear from an invisible expectation I had placed on myself.

                Since those posts, life took off and I refocused on surviving and managing the millions of things that come up in day-to-day life, all while writing this was in the back of my mind. This may be just a shout into the void, but I believe it represents how easy it is to get wrapped up in ideas and expectations, especially the invisible ones we place on ourselves. For all the goals I have accomplished, there exist five hundred voices in the back of my mind coming up with alternatives in case things didn’t work out, telling me to abandon pursuits, thinking of all the ways things could turn out, and how things have gone wrong before. Sometimes the voices win, and in truth, there is no telling how to get it to stop, instead it’s about focusing and moving forward.

                One thing this blog has given me the opportunity to do is think about structure. I quit writing because I felt I did not have a strong structure, and looking back, that has driven most of the decisions I’ve made in my life. Every choice has been calculated for the optimal return of structure and stability for myself and now my children. As a teenager, I didn’t have a way to voice the “why” behind the decisions I was making, just the strong desire that they needed to be made. What it did, without my realizing, was set the foundation for personal growth that led to learning the importance of roots and stability. I returned to my roots, Missouri, and got to work on my education in a stable field and continue to build on it.

                Getting here was not entirely easy, it took a lot of doing things I’ve never done before, but the reward has been worth the risk. I’ve now found a great community within school, a great team to work with, kids that I am entirely too proud of, unending support, and opportunities I never could have dreamed of. This journey has also led me to find new ways to apply the skills I’ve worked so hard to develop.

                Throughout this term, my team and I have been working diligently to design a captivating game for our capstone project. Meeting, brainstorming, discussing, and designing to develop a museum themed escape room experience. My emphasis on strong foundation has opened the floor for deep discussion and I am excited to work on this project with them. While developing the physical game itself has not started, I believe the design plans we have made will allow for smooth, detailed development and I am excited to share it with my colleagues and community. As the term progresses, we will be finishing design decisions and begin development, where there may be opportunities for supporters to test the game and provide feedback.

                This has been the largest project I’ve ever taken on, but through consistent goal setting and collaboration, we’ve continued to learn the best approaches to developing an enjoyable experience for others. Teamwork has been essential in this endeavor, and I am thankful to have a team who is willing to listen and support one another as we work. We understand that each person has strengths to bring to the table that we can build on to become an effective team, which can be a rare find.

                Pursuing goals can be challenging, but understanding the deeper meaning of what those goals mean to you can provide an untapped motivation for accomplishing them. There will be failures and setbacks, but there will also be successes. Anything worth doing is worth doing poorly. You must be a beginner to become an expert, which is why it is so important to have clear goals, a defined purpose, and a solid support network. These things have given me a newfound confidence that has reignited my inspiration, allowing me to write more meaningful posts and that reflect who I am, instead of dwindling on who I think people want me to be.

My Circus Act: Keeping it Together

Life is a circus, and I’m the juggler with a few monkeys in the mix! Balancing family, work, school, and the everyday chaos can feel like I’m being pulled in a dozen directions at once. With all the new beginnings recently, I’ve met so many wonderful people who ask, “How do you handle it?” Most of the time, I laugh, shrug, and say, “It’s a lot!” But underneath the chuckle, there’s a whole lot of effort that makes this balancing act possible. After four years of refining my routine, I’ve found a few key things that keep me grounded in the madness.

First and foremost, I couldn’t do any of this without my husband. His support has been crucial—he takes on all those little daily tasks so I can focus on my studies without worrying about dinner, packing lunches, or picking up stray toys for the fiftieth time that day. He gets how much my education means to me, and that understanding has made it possible for me to keep pushing forward. During this journey, we’ve welcomed two kids and even got married, timing life’s biggest moments to school breaks rolling with the punches and finding those last-minute opportunities.

Secondly, we’ve made family time outside the house a priority. Most weekends, you’ll find us at the farmers market, taking long drives, or visiting nearby family. Working and studying from home means I’m glued to my computer a lot, so these outings are a breath of fresh air—literally. They help me unplug, recharge, and enjoy being in the moment with my kids. Sometimes, I wonder if all the hours I pour into my education might have a negative impact on them, but then I see how they’ve grown—sassy, smart, kind, and endlessly curious. They create their own little adventures wherever we go, and I couldn’t be prouder of who they’re becoming.

Routine is another essential piece of my sanity puzzle. A consistent schedule for work, daycare, preschool, and school means I can carve out time to study without constant interruptions. It’s not just for me, though—it helps the kids know what to expect each day, which cuts down on the number of meltdowns we have to navigate. Little life hacks, like meal planning and grocery pickup, save me from endless thoughts about dinner.

Speaking of dinner, there’s nothing like the comfort of my grandmother’s Cheeseburger Soup as the weather cools down. It’s a family favorite that fills the house with warmth and makes enough for leftover lunches. These hearty meals are a lifesaver, especially on nights when I’m staying up late writing induction proofs or wrapping up a design document.

But above all, what keeps me going is my love for my job and my field. Computer science has been an incredible journey, pushing me to explore my potential and constantly learn new things. This passion makes tackling tough concepts feel less like a chore and more like an adventure. It’s what keeps me excited, even when I’m staring down a mountain of assignments. And right now, I’m eagerly looking forward to my upcoming capstone project:

The Escape Room Challenge! My team and I are creating a 3D Escape Room game, and I can’t wait to dive in.

Sure, life is a bit of a circus, but I wouldn’t trade my role as the juggler for anything. Through all the chaos, I’ve learned that it’s the little things—the family drives, the comfort food, the unexpected laughs—that make the whole act worth it.

“Hello world!” – A Computer Scientist’s Introduction

When the article generates “Hello World!” as the default blog title for a Computer Science student, you take it and run, at least figuratively. As the introductory program to every language when learning how to code since Brian Kernighan’s The C Programming Language in 1978, it seems fitting as the title for the introductory post of my first blog. So, “Hello, World!”

At this point in time, I am in my final year of my degree at Oregon State University for Computer Science with a focus on Cybersecurity. I am also fortunate enough to live in Kirksville, Missouri with my husband and our three children and to work for the State of Missouri’s Office of Administration in the Information Technology Services Division as an Application Developer while I pursue my degree.

As I look forward to the rapid approaching close of this chapter and step closer to earning my degree, I still can’t help but reflect on how I made it this far. Originally, college was only an option because I didn’t know what else to do with myself. I attempted to pursue other goals and took time off after high school to ‘find myself’ without expectation and a lot of it didn’t work out, but things happened for a reason.

The same semester of starting college, I found out I was pregnant. While it wasn’t how I expected my journey to begin, I was determined to meet the challenges of parenthood, college, and whatever else life decided to throw at me. Through that determination, I had my son, completed my associate degree, had my daughter, married my husband, and continued to work full time and pursue my education. Each challenge was a lesson to learn and a step to finding my passion for helping others, learning, and setting a good example for my children.

 With that reflection of my overall journey, this term, I want to focus on accountability and visibility. I’ve spent the last four years quietly developing the minimum to understand the fundamentals, and to honestly just get by while handling those aforementioned challenges. I’ve lucked out so far and managed to land an amazing job where my work has become more visible but doesn’t quite showcase what I am capable of. Creating side projects that interest me, working on my capstone project, and publishing this blog weekly are all ways for me to increase the visibility of my work and to help those who support me in my life to better understand what I do.

The capstone project I will be blogging about is an exciting time in the degree path, as it marks the beginning of the end and allows for me, as a student, to put those fundamentals to use and build something meaningful. We choose from a list of interesting projects, some that help the community, others that would be fun to learn, and some that have been in progress for multiple classes now. I value having a good team more than a specific project and will be lucky if I get both. Some options include game development, which has always been interesting to me, and others include web development, which I consider myself to be more qualified for, but making a final decision from the list was tough.

As I move forward with this blog and my capstone project, I aim to challenge myself in ways I haven’t before. Whether through game development, web development, or whatever project I land on, I am excited to showcase my skills, document my progress, and learn as much as I can along the way. This journey, from the unexpected beginnings of parenthood and college to balancing a full-time career and my family, has shaped me into someone who not only survives but thrives in the face of challenges. Now, as I approach the final stretch, I am ready to turn “Hello, World!” into something much bigger—a symbol of growth, persistence, and the exciting future that lies ahead. Stay tuned for the next chapter, and thank you for being part of this journey with me.