Friday, May 9, 2014

UNIX Diary: Finals Edition

So we reached the conclusion of the course. After completing the project and reviewing everything that I have learned in this course, I have come to appreciate Unix and the design philosophy surrounding it. From combining programs so that certain functions can work independently of each other to manipulating data for each of those components, I have learned numerous techniques that will help me in designing numerous types of software for the future. Learning Git has also been an added bonus since I've been working on numerous projects with other people and have not learned how to use the bash version of Git, but thanks to its merging features, it's easier than ever to work with other programmers from anywhere around the world.

The information that I learned in this course will help me out greatly in the coming years as I continue to mature as a programmer and begin to work on major projects. I'm currently working on a game with a few other people for Android and PC that should be coming out this summer, and the various programming tips that I've obtained from this course have helped out in the developing process. Thanks to this class, I can continue working on these side projects to both boost my skills and to help me succeed in the future.

Friday, April 11, 2014

Unix Diary Week 11

There's only three and a half weeks left in the semester and there are still many things that I need to learn about Unix. From navigating through the interface to creating programs that interconnects with various other programs, there were numerous techniques that I learned from this course that would help me out with my other courses. For example, in microcontrollers, we recently worked on a project that required us to make a skiing game similar to those that were sold by Tiger Electronics in the 80's. We used C for programming the microcontroller and used numerous functions in order to implement controls using an analog stick and updating an OLED screen. Since this was a graphics-based game, I needed to implement a rougue-like interface to the game in order to get trees to randomly appear on the game screen.

As I progress through my college career, I can now see the tools that I will be using throughout my time here and within my programming career. As for things that I would want to learn over everything else, I would like to learn how to debug programs using a Unix interface. It would be helpful for me because I work on programs (such as games) that requires numerous variables that need to be tracked in order to see that each of them are producing the correct values, and it can be useful to see the values of each variable of a Unix program to see if each function is doing what it's supposed to do. Hopefully I can get the hang of Unix before the semester is done.

Monday, March 17, 2014

Unix Diary: Post Spring Break Edition

So over the course of this spring break, I've been thinking about UNIX and how to relate it to my future programming. Since I'm stuck here in New Jersey due to a canceled flight and snowstorm, it gives me enough time to reflect on all that I have done so far.

What I find interesting about UNIX is how you can connect multiple programs together to get a certain output. This is helpful in object oriented programming because it allows you to create multiple programs that can be used numerous times for any purpose. This helps save time in trying to transfer code over to a new program and edit it to fit a specific need. By creating these simplified programs and combining them together within the Unix interface, it allows the programmer to create his own set of tools in altering data and using it for whatever purpose the programmer needs to do with it.

One other interesting aspect about programming in Unix is the ease of transferring data from one source to another. Thanks to programs such as Git, it makes things easier to send data over to a remote server in order for other people to access said data. Even for transferring data from inside the personal computer it can help keep data safe from getting altered accidentally or getting deleted. Git can be a lifesaver on numerous occasions on the job, especially when working with multiple people, and it will be a great tool to use for future projects.

Over the last two months I learned numerous techniques about programming and how to use them effectively. We're halfway through the semester and can't wait for whatever challenges come up next.

Friday, February 28, 2014

UNIX Diary Week 5

So here is where things start to get a bit more complicated. We now begin to use all the concepts we learned from this class and start to create actual programs and push them using Git. Since I'm using a Linux system, I decided that I wanted to keep all of my files locally. The problem that I'm facing is that I need to import all the files that is currently up on the server and then try to set up the Git server again so I may be able to push updates to the server. Hopefully I can get everything sorted out and I will be able to get started on working on projects with other people.

That's it for now. At least the week from Hell is finally over.

Friday, February 21, 2014

UNIX Diary Week 4

The semester is a third of the way through, and my experiences with UNIX continues. This week, we discovered more functions in C which will allow us to create more intricate programs and concatenate the outputs with other functions. Although learning what the new functions do might've been a pain, it was overall easy to create the program and push it to Git. We also learned how to view programs that are running in UNIX and the ability to run programs in the background while using the terminal. Although I am running Linux Mint and have a GUI interface that I can use, I have trouble trying to run numerous programs akin to how it works in Windows. Some programs can exit out randomly or crash without any warning and I have no idea why. For example, I'm trying to get Linux Mint to recognize my NVidia graphics card using Bumblebee, but I consistently keep getting errors that states that it can't find my GPU drivers (even though I have them installed). By trying to run programs through the terminal, I might be able to find the source of the problem and fix it. Hopefully I will be able to fix this using the methods that I learned this week.

That's it for this week. Let the UNIX learning continue.

Friday, February 14, 2014

UNIX Diary Week 3

Although a massive snowstorm cut the week short, I still continued to experiment with UNIX. Linux Mint is continuing to work well for me (though I can't seem to be Bumblebee to work) so my journey continues. This week was more focused about actual coding in C than it was about the OS itself, but I am now beginning to understand how concatenation is working now. Being able to take the output of one program and entering it as input in another program makes it easier to perform certain tasks without needing to write the code out for it myself. It can save time by creating two smaller programs instead of trying to cram in numerous functions into one program, especially when you're writing functions that you may use numerous times.

Also, we started to work with Git. I have some experience working with Git along with Subversion, but the terminal interface scared me away from continuing to use with it. However, after playing around with UNIX, I now realize that it's not actually that bad. It will be useful since I'm going to be working with numerous people on multiple projects and we all have to share the same files. This will help us in keeping track of any changes in the code a lot easier than other methods.

That's all for this week. It ended abruptly, but I did learn a lot in the end.

Thursday, February 6, 2014

UNIX Diary Week 2

Over the last week I continued to experiment with the UNIX kernel. Over the course of this past week, I learned quite a few things:

1. Ubuntu 13.10 is terrible

When deciding which Linux operating system I should use for the class, I thought Ubuntu was the way to go. It's supposed to be the most streamlined version of Linux with an interface similar to other operating systems, but also contains all of the functions I would need for the course. However, after dealing with all the bugs and crashes, I decided that enough was enough and switched over to another Linux OS. Currently I am using Linux Mint 16 and have not encountered any issues so far. Let's hope that it stays that way.

2. Combining functions in UNIX gets confusing after a while

For this week, I decided to experiment with other functions in the course.  Some of them seem easy enough like "echo" and "cat", but I get confused when I try to combine some of the functions together. I understand that < copies files to a new location and | combines two functions together, but it gets confusing trying to combine all of the functions together and seeing exactly what is does. Hopefully with practice, I can get used to it.

3. Exit commands for the numerous functions in UNIX get confusing as well

While playing around with programs such as WeeChat, Nano, and Vim, I get confused when trying to exit each of the programs. Whether the command is Ctrl-D or Q or :X, each program works with its own specific commands and it gets confusing to memorizes all of them within a short amount of time from one another. Hopefully soon I will be able to memorize each of them so I no longer have this problem.

That's all for now. Still getting the hang of Linux/Unix so hopefully I'll have all the kinks worked out within a short period of time.