The wonders of a break

Resetting the mind

There I was. Trying. Thinking. Working. And failing.

What is the problem? Why won’t this work? I followed the documentation. I double checked my syntax. I retraced my steps and reviewed my logic. But my code is failing and I am not getting the result I am expecting. What is missing?

Working on the capstone project with my group, I encountered this experienced that I’ve been through multiple times before (as do all coders). The experience of seemingly doing everything correct, yet getting an incorrect feedback from testing. It happens when learning a new language, while still occurring while using familiar tech.

Our project requires the use of a natural language parser to interpret and manipulate user input. I decided to venture out to learn regular expressions. And wow. After several hours of reading documentation, looking through tutorials, I just barely was able to return a searched group of characters from a string.

I was frustrated. Did I just waste the all this time and not even see if this was applicable to our project? I decided to take a break and work on something else.

The day after, I decided to return to my venture. Lo and behold, I was able to successfully do what I intended with regex. It was, as if, something clicked and I was able to better see how the syntax worked, and use regular expression.

This was not the only time this happened. It really does seem that taking a break and distancing your mind on a certain topic really does more than brute forcing it for another few hours. I’ve really heard a lot of advice, not just for programming, about the importance of taking a break.

Taking a nap is good for you… sometimes

It just feels both good and exasperating that sometimes, all I needed was to step away and focus of something else for a while. I was so close, but just blocked off at that moment in time. Just need to breathe and relax to find they way through.

Learning new technologies

I have been working on some new personal projects with the aim of using a technology that I have not used before. One of these is Android development, which meant I would have to start learning Java. Through this experience, I am again reminded just how familiar yet different learning something new is.

In OSU, I have worked with Python, C, and Javascript. So coming into Java, there were many things that were already familiar, being another object-oriented language. Going through the some tutorials and documentation, I was able to pick up the similarities with Python and C. The main thing so far that is causing me problems is syntax.

It seems that having similar syntax sometimes makes it more confusing. Keeping track of keywords and parentheses usage is usually the cause of error for me at the moment. So many times where the build breaks, only for me to realize an hour later that I declared a variable using Python syntax.

Then, there are the completely new concepts. While there are familiar concepts with objects and classes and inheritance, I am still trying to wrap my head around the features I have not used before. Interfaces are still eluding my understanding on where a programmer would use them. Some more practice and studying will be needed in this area.

Overall, it is an interesting endeavor to learn something on my own. I am reminded of where I started 2 years ago when first enrolling in this university. So far, I have built a simple command line tool. Hopefully it goes on to building a working mobile app, the ultimate goal.

Importance of a strong vision

The role of the director / lead designer

This is the first week where my teammates and I started doing heavy brainstorming for our capstone project. We are tasked to create a text-based adventure game. I was very excited to start working on it because I have been a fan of video games and adventure stories since childhood. Even though most games already had 2D or 3D graphics already for me growing up, I still have played some text adventures on my father’s old computer back in the day.

Oregon Trail was a game allowed on school computers

As my team started discussing and deciding on what to do with the project, it became clear that everyone had a different ideas. I have worked in teams before on other projects and classes, this was the first time where our project goals were unlimited and not held to specific requirements. In these previous teams, the directions of the assignment were clear enough that most team members started off on the right track.

This was something different though. It was the first time I experienced team members having very different interpretation on the project goals than what I had. While not a bad thing at all (my teammates were very nice and eager to discuss), it became clear that we had to have a clear direction set in stone. This was the first time I realized how important and powerful a director/lead designer is, whether it be software development, game development, movies, etc. It was something I never really thought about before.

The director is the one who decides where the project is going to go, and makes sure everyone is working in that direction. Without the director and a set vision, the team would not function cohesively. Everyone would have differing ideas on how things are. This is how my team meeting felt the first hour as I realized everyone had varying visions of our adventure game. I can now see why the director is always the one praised when the project succeeds.

From another perspective, I now understand what it means to “have too many cooks in the kitchen”. Often times I would hear that about sports teams that under perform, despite having all-star talent. The media would say that there are too many coaches on the staff. I can see now how this would be a problem when too many “leaders” are trying to push the team in multiple different directions.

While my team of 3 ultimately all worked out the theme and direction of our game and are in agreement, I can see how much more difficult it would be on a huge project with dozens of team members. While we didn’t appoint anyone as the “director”, we agreed to always have a discussion on major ideas as a group.

Cat-sitting

Hindrances to productivity

Recently I’ve had to help a friend take care of their cats while they were away (“cat-sitting”). This experience has allowed me to understand the many memes from the internet about a cat getting in the way of daily life.

“Don’t worry, my cats are just like dogs”

-my friend as they left

The very first day, the cats were weary of my apartment, but quickly started exploring my humble abode. They didn’t seem like much, just sitting and laying in certain spots. I followed the instructions my friend gave me and had food and water out

Every time I would sit down in front of my computer to do some coding, there will be a sudden cat on my desk blocking my monitor or keyboard within 10 minutes. Move them aside, and they reappear. My personal project took a huge dive in progress due to these feline interruptions.

In the past, I have only had to take care of dogs, but this was a different experience. Unlike canines, the cats would take their time with their food. Nibbling on a little bit here and there, while dogs would usually just eat their fill until the next meal.

For a few mornings, I would wake up to some furry entities crawling around my bed, informing me that it was breakfast time. On some nights, I would endure some loud cat calls that spookily sounded similar to a child crying (I guess it is Halloween month).

All in all, these pets would be in my care for only a few more days. I don’t know if I will miss them, but at least I will be able to do some coding in some peace soon. Also will have to do some cleaning with all the cat hair left over. Perhaps I can use this experience to fuel an idea for a future coding project (some sort of cat-sitting app maybe?).