Monday, August 26, 2013

Snakes Everywhere!



     This is a game of snake that I wrote for Software Development 2. It uses standard draw package from Java and has a basic splash screen. I do realize that there is a better way to draw the snake and update the screen but the assignment told us to use StdDraw. There are a few bugs, such as I cannot get it to register the keys Y or N when I would like to restart the game. After this semester with Advanced Java I think I will be able to make a better version. I may even try my had at a side scrolling shooter.

     To download files go to: https://github.com/zmchenry/Snake


     The Snake.java is the main file. If you would like to run this yourself you will need the StdDraw.java file found here: StdDraw.java This is the apple file that controls all of the attributes of the apple, such as the amount of time the apple will stay in a position. I am only going to post the collision detection in from my Snake game here but the rest of the project can be found on my GitHub. The collision detection works by looking at the position of the head and comparing it to the walls, the rest of the body, and the apples. To keep position I used an 2 arrays to keep the x and y positions of the body and then the apples have their own getter methods for getting their x and y position. To check the walls, I compared the position of the head to the amount of pixels that the wall would take up. I do not own the rights to StdDraw and I did not create StdDraw that was created by Sedgewick for his Algorithms book and his Introduction to Java Fundamentals book.

Sunday, August 25, 2013

2013 Summer Internship



     This summer was a long one that included many classes, and an internship at a company called Innovative Routines International. At IRI, I created scripts that would create and validate international identification numbers, some of the countries that were included in this script were the United States, Korea, and Italy.

     The fun thing about this project was all of the special rules about national identification numbers and the way that they are created. Such as, the United States first three numbers are based upon the state that you were born in, or in Korea the first six numbers are the birth date of the person being identified. Also, some countries, Netherlands, decided that it was safer for their citizens to not have any format in their Sofi Number that would indicate the person to which it belongs.

     I spent most of my internship with the creation and validation of national identification numbers, but the final project that I worked on at IRI was one that involved tokenizing credit card numbers for Payment Card Industry Data Security Standards compliance. PCI DSS compliance is important whenever a credit card number is used on the internet or a network. To be compliant the company must take the credit card number and make it secure through certain ways of encryption or any other security methods. It is hard to explain exactly how I made a script to provide this compliance as it would then defeat the whole purpose of the compliance. However, anyone using a credit card with IRI or any other company that uses its product SortCL or FieldShield will be happy to know that their credit card number is safer.

     Below I will include links to the blog posts that I directly wrote for IRI so that if anyone is interested they will be able to check them out and find out more information about the methods that I used to create and validate national identification numbers. There will also be a link later for the PCI DSS blog post on IRI's website.

     When I was assigned this project I was assigned a 3 manuals that had the documentation for IRI's three main products: SortCL, RowGen, and FieldSheild. These three manuals were filled with information that I was not sure how to handle as this was my first time reading documentation of this size. Then to throw a wrench in the cogs, I was told to learn a new programming language, C. I found that I enjoyed learning C, it is probably similar to when a person begins to learn French or Italian for their upcoming trip to France or Italy. After defeating the learning curve I began programming and found that pointers and the changed syntax from my most dominant language, Java, were not anything to be scared of. I actually preferred to have all of that dirty laundry out in the open instead of hidden as Java does.

     It was a great experience and taught me further that programming is a meticulous practice and that a program is not written only once. Working has taught me that planning a project is as important as the programming itself, maybe even more so. Going straight to a keyboard to begin programming is an ill practice and usually results in far more rewrites than if planning were done ahead of time. I learned this the hard way.



Korean Social Security Number:

Netherlands Social Fiscal Number:

United States Social Security Number:

Italy Social Fiscal Number:


Beginning a New Semester.



     This blog is mostly about my experiences as Computer Science student at FIT. Also, I will post any interesting projects that I do in classes on here if at all possible. If they are not web ready programs, such as a compiler,or a program in assembly language, I will post the source code and you may run it yourself. I am always open to critique on my projects and also ideas for anything that I could do differently.

     As the fall semester of 2013 start I begin taking 6 new classes:
  • Software Engineering
  • Computer Architecture and Assembly Language
  • Advanced Java Concepts
  • Applied Statistics
  • Management Information Systems
  • Research Sources and Systems
Book required for class
     Although I am tied for favorite between Software Engineering and Advanced Java Concepts. Software Engineering is a project based course that has the students take an existing program, such as computer game and then fix existing bugs. As my professor said "the easy part is fixing it, the hard part is not messing anything else up" (Dr. Gallagher). Software Engineering should prove to be a fun class, and I will post the bug fixes that I contribute to on here so that you can see them and may even be able to pick up a new program or game. 

     The other class, Advanced Java Concepts, with Dr. Stansifer, has peaked my interest because as he says we will be making programs that will produce things that look pretty. This class is focused mainly upon UI and then touches upon networks. I will include a link to his website that has the list of projects and when I can, I will post those projects on here.
Book used as reference for class.

     Lastly, with a new semester comes new experiences. I have accepted a part-time job with the company that I interned for over the summer called Innovative Routines International. In this job I will be a programmer and I am finishing up a project that spilled over from my internship, but may be doing something different. 

     This semester looks promising since I am taking upper level classes and made it through the dreaded Algorithms and Data Structures over the summer.