Author Archives: John Pacheco

Music Composition and Programming are More Similar Than We Think

I consider myself a predominantly creative person as opposed to someone who thinks in a very mathematical and literal way. Most people would probably argue that I should be going to school for something along the lines of art or music but I’d argue that programming requires the same amount of creative prowess as both of those majors.

A user on DevDungeon wrote a post about this topic called Similarities Between Music and Programming. This article goes into detail about how the learning process in both music and programming is very similar. They talk about how most people feel like music and programming similarly are things that you are born with a natural gift for and can be difficult to learn. With music there is very much a mathematical science behind the music which can almost always be explained using the concepts learned through music theory. In music there are very many ways to get a similar result and all musicians will think of songs and have vastly different musical ideas. The same could be said for programmers. Many programmers can come up with vastly different solutions to the same problem based on how their brain solves the problem at hand. They also talk about how there is a hypothetical “stage fright” that occurs when just starting out in both fields. New musicians and programmers usually don’t want to share their work because it is very much an extension of yourself and if it is not up to your own standards it is hard to want to share what you’ve made. You can think of collaborating on a program with others as a band of sorts. If all members of the band aren’t on the same page then the outcome will most likely have many issues. They then go on to talk about how music and programming are very hands on and from day one should be taught in a hands on way.

I agree with almost everything said in this post. It was a very enlightening read because I have always taking a liking to the creative arts and seeing the similarities now it makes sense as to why I enjoy programming so much as well. I’d argue that programmers should learn music composition as it would help with the fundamentals of problem solving that are essential for programmers.

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.

Accessibility in VR: The hurdles we have to overcome

It’s no surprise to anyone how huge VR has gotten as an industry and a viral topic in everyday life. While Virtual Reality has been around for many years on recently have companies like Oculus and HTC brought it to the forefront of tech news. With the newest advancement in the industry it is very reasonable for anyone to be able to afford a headset and experience new worlds from the comfort of their own homes. The applications for VR don’t stop at entertainment either, VR can be used for medical procedures, physical, and mental therapy and much more. While this has been the push that VR needed for many years there is a large group of people who sometimes miss out on all of the VR experiences being crafted, those with disabilities. In Thoughts on Accessibility Issues With VR on ablegamers.org, AJ Ryan goes over some ways developers can start the conversation about what measures they should go to to make games accessible. The most alienating feeling is when you are barred from experiences because of a disability and while VR can be a very physical activity there are many ways to increase accessibility.

This Blog post is set up in a list format where each element is another things that developers should be trying to do better in order to accommodate those with disabilities. The first point is that motion controls are cool yet there should always be an option to play with a controller. Another point made is that games shouldn’t require you to stand up in order to play them. Something that is extremely easy to implement yet many developers don’t is full button remapping. This would allow people who use adaptive controllers while playing VR to comfortably experience the games we are developing. These ideas pretty much sum up the overarching theme of the list and that is “when developing games add as many ways to control the game as possible while not barring of ways of playing such as standing/sitting”. If developers spent more time thinking about those who are playing the games and not the game itself it would create a much more inclusive library of games. This article is an essential read for all developers because if developing for accessibility hasn’t crossed your mind you are missing out on a huge subset of people who most likely would love to play the games you are making yet can’t.

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.

Deep Learning AI Programmers Have Come to Take Our Jobs!

From the minds at Rice University comes a very interesting application for deep-learning AI. Bayou is an AI that, with a very small list of keywords, can produce usable blocks of code. It does this by scanning github and learning from all of the open source code on there. What does this mean for all of us computer scientists? This means that an era where AI may be able to aid us in completion of programs is on the way. For a long time this concept has been played with but never in such an efficient manner as Bayou. With other AI programmers sometimes the parameters you would have to enter to get a usable end product would surpass the program itself in length and complexity. While my title is very clickbaity I can guarantee that our jobs are safe for a very long time. This technology is only in infancy and for large programs that interact with many APIs and databases and such the need for a human to parse what needs to be written is still very essential. Bayou is more of a proof of concept that if built out even further can be very useful for speeding up the programming process.

In the post Turning deep-learning AI loose on software development, Jade Boyd makes many fair points about the ethics of Bayou. As programmers being so connected to the internet constantly has made it almost impossible to write programs from scratch. At any slight hitch we are able to search the internet and find someone else’s solution to a problem that we are facing. This point really proves that Bayou shouldn’t be seen as “cheating” rather that it is yet another tool that can give us examples of ways to solve specific problems that we maybe would have otherwise not given thought to.

I believe that applications such as Bayou are a step in the right direction. If we can get AI to write all of the simple parts of programs it would guarantee less simple errors and can also unify the format of the program. Programs can get extremely complex and Bayou wouldn’t replace us rather aid in saving us time and therefore money in the programming process.

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.

Crunch-a-Time me Captain (I just took a class on Design Patterns and Just Read That They are Wrong)

If that title scared you, I am sorry. This is the second post I am writing in a span of a couple hours and decided that this topic would prove to be a very interesting one to cover. While the post Rethinking Design Patterns by Jeff Atwood very openly claims that design patterns often cause unnecessary complexity and have turned much of today’s programming army into a mindless army of Gang of Four missionaries I believe it is a very delicate balance of both sides of the argument that is the solution.

In the post Atwood lays out the definitions (yes definitions!) of design pattern in order to get rid of any confusion about what he is referring to. There are two definitions because he is talking about the patterns created by the gang of four in order to solve typical solutions and also the general idea of designing a template for a solution one is faced with based on the circumstances. He also writes about the book that directly inspired the gang of four bible. This book is called “A pattern Language”, and is a direct inspiration for the design pattern book that succeeded it. This book outlines general ideas for solving problems rather than giving the reader templates to solve general problems. While the difference in these may be subtle, the latter cause anyone implementing an idea to have less of an understanding of the implementation and whether the chosen pattern is the best way to solve the problem at hand.

I feel as though the teachings I have received about design patterns has greatly influenced my understanding of coming up with solutions to problems. Before taking this class almost every program leading up to it was extremely complicated while solving relatively simple problems. Many of my programs were one trick ponies that if implementation had to be added would be in need of an almost total rewrite. After learning about design patterns I have the proper tools to increase how modular my programs are which is a huge step in the right direction. I feel like there are many cases where the gang of four design patterns are applicable and can be very efficient but for problems that don’t require a pattern it is important that we as programmers can recognize this and implement a simpler design to avoid useless complexity.

I will definitely be reading A Pattern Language soon because it seems like many of the ideas laid out in that book are extremely helpful in situations where I am tasked to program something that I can’t think of a design for. Thank you for coming to my Ted Talk.

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.

An Update on this Blog and also Cleaning Up House

I would like to preface this blog by saying that I am very sorry for the lack of content on here. Life can be overwhelming and this blog was put on the back burner throughout the semester. This being said I am excited to give my opinions on some really interesting content that I have been reading about.

The blog post I decided to write about for my blog post is aptly named “Clean, high quality code: a guide on how to become a better programmer”. I decided to research this topic a bit because while I feel like I have a good grasp on the technical side of programming I have trouble keeping my programs neat. This issue becomes very apparent when you decide to update a program you haven’t looked at in a month or so and it is complete nonsense that is almost impossible to parse no matter how much time you look at it. This problem is exponentially larger when others have to collaborate on projects with me and find it difficult to contribute to the giant ball of garbage I have artfully crafted with my keyboard. I long for the day where every aspect of my programs shine like a well polished stone and I am proud to add projects I have created to my resume.

The blog starts off with asking the very appropriate question “what is clean code?”. To which it replies with an image that genuinely made me laugh out loud. It illustrates that code can be measured in how many “WTFs” can be heard from others reading the code. While this is hilarious it also lies very much in truth. The less confusion others have while reading your programs the cleaner it is. The first half of the post is mainly outlining why clean code is good and why bad code is bad. It explains it extremely well using metaphors such as “leave the campsite cleaner than you left it.” After the post goes into detail giving tips as to how one should name variables and functions. Many of the ideas in the blog I have never given any thought to like naming functions verbs and naming variables nouns. While this is extremely intuitive I can guarantee that I have done the contrary which resulted in the use of functions being lost in translation. Interestingly enough the blog claims that having functions that are so clear in their intent that comments are unnecessary is how one achieves code nirvana.

Overall I’d recommend this to anyone who hasn’t taken the time to lay some base guidelines while they are writing programs. All of the information given in the post is very useful.

Image result for hoarder
Visual representation of my code before reading the blog

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.

My Blog Origin Story

My name is John Pacheco and I am a student in the Computer Science field at Worcester State. This blog will be a place where I can share my own views on things that inspire me and on things that give me new ways of thinking. I’ve always wanted a place to save all of the interesting things that I find while searching the internet and never though to create a blog. I hope that this blog goes smoothly and at least someone out there will read this and get something out of it. I also hope to post things I am currently working on outside of class in order to start making a portfolio of sorts where I can track my progress and see what I have accomplished.

Image result for hacker voice im in

From the blog CS@Worcester – Dummies for Programming by John Pacheco and used with permission of the author. All other rights reserved by the author.