Week Ten - Week for the Weak
What did you do this past week?
I did HackTX the past weekend.
In my team, we tried to create a web application that mimicked the JPL idea thinking. Normally, when brainstorming in a group, discussion is usually overwhelmed by 1-2 people whose voices and ideas are the loudest. To prevent this, JPL provides 15+ mins of time where group members can jot ideas down onto a note before showing the notes all openly and presenting them.
For us, we planned to create an interface where people could create and join a room to create ideas without be disrupted by other people’s thoughts for a certain amount of time. After that time runs out, all the people in the same room would be able to reveal their ideas and each person would have some time to present each of their idea, round-robin style. We only got some of the features completed (time counter, database population, multiple user interaction), but when we have time, we might try to work on it more.
Other than that, this past week as been busy as usual. We got our OOP project, Darwin, which is a crazy project because the problem we must solve is to create a “Game of Life” without using any getters or setters. This was a conundrum, since for most of our programming life, we had always survived by using these methods.
The goal behind not using getters and setters is to prevent other classes from knowing how a given class is structured. This pushes us to design classes that would have methods that would abstractly do the work for us rather needing to directly get or change the data within a class through external means. In other words, acting like an API where the client doesn’t have to worry about the underlying code, the classes we created would do all the necessary work for us.
After understanding the specs, my partner and I spent more than 6 hours designing the three classes we had to make. It was hard because we had to scrap our implementation many times because we still had our minds wrapped around using getters and setters. Fortunately those long hours paid off, because after finishing our design, implementing it, and fixing minor pointer and logic errors, we got the program to work fully. This was both a big surprise and accomplishment. Usually for programming, we would spend about 10% of the time designing, 50% coding, and 40% fixing bugs, but for this project, we spent 60% of the time designing, 10% coding, and 30% fixing bugs that were easy to catch. We still have some work to do, along with creating our best creature for extra credit, but this project has given me an appreciation for having a well-thought out design before working on any project.
This “designing first” concept also applied to my Operating Systems class. Currently, we’re trying to implement virtual memory for our operating system. So far, we’ve spent most of the time designing, because a bad design could cause us to have to rewrite all our code.
Finally, this Friday was the 50th anniversary celebration for UTCS department. During that time, many UT professors and alumni came to give talks, an endless amount of free Tiff’s Treats and Amy’s Ice Cream were served, and activities/events such as arcade games, rock climbing, and live band music happened throughout the day. I got to do some live tweeting about the festivities as a blogger for the UTCS department, and enjoyed all the events I got to attend. Cheers UTCS.
What’s in your way?
OS has a test next week, so I need to refresh myself on all the material from class.
Also, I will begin registration on Monday. Considering all the waitlisted, close, and canceled CS classes, I’ll be lucky to get any of the upper division classes I want.
Furthermore, for OOP, we created a lot of methods, which means that we’ll need to create a lot of unit tests for them (three for each)… This is not bad, but it just means that we’ll spend a lot of time creating up tests for methods that do very basic things.
OOP Class Impressions
Class has been very chill. Other than Monday’s project description discussion, we didn’t have much class.
Wednesday’s Pariveda talk was good because I got to have my first insight on what consulting was. I had always thought a consultant was a business position (which it was), but I didn’t realize that they did a lot of programming on a shallow level. I don’t know if that is the field I would want to go into, but it’s good to know all the options available. Friday, we didn’t go to class in order to celebrate 50th fest.
What will you do next week?
I plan to prepare for my exam for OS. There’s a lot of memorizing to do, and I hope I can find time to do it alongside all the projects I have.
Additionally, I plan to go to Indigitous Hack. That’ll be good, because it’ll be a time where I can attempt to use the skills I have in Computer Science for Christianity. There are a lot of challenges that need to be created, and I’m looking forward to what I can give to God during that time.
Finally, I plan to start working on a side project. I’ve been thinking of working on a Facebook Messenger bot, but I haven’t worked out all the details for that, so I might begin designing it.
Tip of the Week
Use your programming skills to improve or enhance you daily life. I know before college, I had always considered my skills to be used only on the work and projects I was assigned. But these skills can be used outside of that! Break free of the skills for school mentality, and try to find ways to make life easier.
I had a friend of mine last year who coded up a program that created Punnett squares for his Biology class just by inputting gene data.
I know another guy who worked on an Arduino to create lights on his bicycle to simulate left and right turn signals. These lights would light up when his handle bars turned left or right to a certain degree.
My manager from the summer also does crazy things to try to improve his life at home. He used Agile to manage chores at home and machine learning/data science to predict sleep patterns of his twins.
I encourage you to find ways to apply what you know from school into your life, because that is where you can learn the most: from experience. Hack away and discover the endless things you can do!