Friday, June 15, 2018

CST 499: Week 8

CST 499 Week 8

The journey to achieving a degree in Computer Science has been challenging, rewarding, and eye opening. This week has been focused on polishing my game and getting my capstone video ready. I look forward to expanding on this Unreal Engine prototype. The journey has just begun...

Tuesday, June 12, 2018

CST 499 Week 7

CST 499 Week 7

With only 1 more week left of school, it has been an amazing journey in getting my Bachelor's degree in Computer Science. This week has consisted of many long hours at night getting my project to where I want it to be. I finished my final report at a whopping 42 pages in length. I also finished the essentials of having a game prototype. I plan to make a few tweaks to the game over the next 3 days. As I type, I realize that I still need to have my final capstone video complete and hope to have a draft video up tonight. I anticipate not finishing my video until Friday night.

Wednesday, June 6, 2018

CST 499 Week 6

CST 499 Week 6

This week I was able to get functions for the character to take and use objects working along with creating HUD's for the player. I created an in game HUD and an inventory HUD. I was able to get the ability for the player to utilized the inventory working as well and started working on the character's health aspect. I met with my client this week. He was able to get a previous version of the game loaded but could not get the most current version loaded. I will have to solve to figure out why this is so. I was unable to take my ETS test this week as there was a miscommunication with the testing agency. I plan to take my ETS test this Friday.

Wednesday, May 30, 2018

CST 499 - Week 5

CST 499 - Week 5

This week we were able to review how to give a successful presentation. I was also able to review the ETS computer science field test. In implementing an incremental grow and shrink function. I found it difficult to also implement it with the smooth grow and shrink functionality of the character. This ended up taking more time than expected. I was however able to get this successfully completed. I also was able to successfuly make my character fly when small via a jetpack. I found this weeks work to be both challenging and rewarding. I can't wait to see what the next week brings.

Tuesday, May 22, 2018

CST 499 Week 4

CST 499 Week 4

This week we were able to view some good tips regarding job searching an interview tips. I also was able to complete my website which can be accessed here. 

This week was all about smoothing out the grow and shrink function for my character. I was able to implement a seamless growth and shrink function. When messing with the characters size, I also realized that they were not moving "normally" so I had to figure out how to iron out the movement physics of a larger or smaller character. I was able to make up a few hours of work but need to work harder next week to get back on track.

My advisor gave me great advice regarding keeping a project timeline and prioritization.

Tuesday, May 15, 2018

CST 499 Week 3

CST 499 Week 3

This week I received some good feedback on both my resume and LinkedIn profile for seeking a job in the industry. I need to add projects to both to showcase what I have done in school over the past years since I have no work experience in the industry.

I created a commercial for my Capstone project which was fun and excited me to create more. The commercial consists of the initial character build along with interchangeable camera and showcase of shrink and grow functions.

Here is the commercial:


I got a bit behind due to family functions but hope to get back on track next week.

Tuesday, May 8, 2018

CST 499 Week 2

CST 499 Week 2

This week was mainly used to work on my project. We received some good pointers on job hunting, resume building, and cover letters. I was able to finalize my resume and cover letter.

Last weeks article was in regards to holding successful team meetings. Successful team meetings have 3 parts to them. This is the planning phase, the actual meeting phase, and the post meeting phase. During the planning phase, you should layout who should be present for a meeting and the goals outlined for the meeting. Also evaluate whether a meeting is even necessary. Sometimes a goal can be achieved by a simple string of emails. As a team leader, you want to make sure everyone of importance can attend the set meeting; otherwise, it may be wiser to postpone the meeting to allow for everyone to contribute and achieve the goal. You should provide documentation before the meeting to allow the people attending to review and form ideas ahead of time. More can come from the meeting when the people attending have time to think about the agenda. During the meeting, the team leader should set a positive tone and keep on track with the agenda. Of course, the documents distributed before the meeting should be used during the meeting. You do not want to set a precedence of people feeling pre-distributed work is unimportant. As team leader you also want to make sure everyone participates in the meeting. Finally, you want to create an action plan for post meeting follow up. After the meeting, meeting minutes and the action plan should be published within 24 hours. It is important to make good on the action plan and follow up with everyone at the established time on their current status on the action plan. Finally a debrief of the meeting is important where everyone is allowed to discuss what went well and what they would change about the meeting. Using these meeting principles can help a team leader achieve the goals they strive for within their team. I hope to be a team lead in software development and using these principles will help me when the time arises.

Tuesday, May 1, 2018

CST 499 Week 1

CST 499 Week 1

This weeks article was in regards to holding successful team meetings. Successful team meetings have 3 parts to them. This is the planning phase, the actual meeting phase, and the post meeting phase. During the planning phase, you should layout who should be present for a meeting and the goals outlined for the meeting. Also evaluate whether a meeting is even necessary. Sometimes a goal can be achieved by a simple string of emails. As a team leader, you want to make sure everyone of importance can attend the set meeting; otherwise, it may be wiser to postpone the meeting to allow for everyone to contribute and achieve the goal. You should provide documentation before the meeting to allow the people attending to review and form ideas ahead of time. More can come from the meeting when the people attending have time to think about the agenda. During the meeting, the team leader should set a positive tone and keep on track with the agenda. Of course, the documents distributed before the meeting should be used during the meeting. You do not want to set a precedence of people feeling pre-distributed work is unimportant. As team leader you also want to make sure everyone participates in the meeting. Finally, you want to create an action plan for post meeting follow up. After the meeting, meeting minutes and the action plan should be published within 24 hours. It is important to make good on the action plan and follow up with everyone at the established time on their current status on the action plan. Finally a debrief of the meeting is important where everyone is allowed to discuss what went well and what they would change about the meeting. Using these meeting principles can help a team leader achieve the goals they strive for within their team. I hope to be a team lead in software development and using these principles will help me when the time arises.

Saturday, April 21, 2018

CST 438 Week 8

CST 438 Week 8

This course was very informative as to the design process of larger scale projects as a software engineer. The agile and waterfall processes were explored. The course emphasized the importance of communication and quality of product throughout the development cycle. It was discovered that there are many design patterns utilized by software engineers and I feel that I have just touched the surface of this. Implementing design patterns is a skill that only gets better with more practice. We were also able to explore the importance of continuous testing throughout the design process. A good piece of code has high cohesion with low coupling. Also as has been drilled in me throughout my studies, detailed commenting is essential to be a successful software engineer and part of a larger team. I enjoyed working with the team on this project.

Tuesday, April 17, 2018

CST 438 Week 7

CST 438 Week 7

This week we further explored the various design patterns that a software engineer can implement. There are many different ways to tackle your problem and it is apparent that practice is the only way to get better at implementing design patterns to be a successful programmer. These patterns help to simply the code, DRY the code (Don't repeat yourself), follow SOLID design principle, and help to make the code extensible and reusable. 

I looked at our project and decided to implement the Filter Pattern aka the Criteria Pattern. This was a perfect use case for filtering our movies to be able to choose from the best movie and can easily be implemented should the code be expanded on. A Filter pattern is a design pattern that enables developers to filter a set of objects using different criteria and chaining them in a decoupled way through logical operations. This design pattern falls under a structural pattern.

Tuesday, April 10, 2018

CST 438 Week 6

CST 438 Week 6

This week we learned about the various design patterns and principles. It is good to be familiar with design patterns as they help developers learn software design easier and faster. Design patterns can be categorized as Creational, Behavioral, and Structural. Creational patterns allow for creating objects while hiding the creation logic. This gives the code more flexibility. Behavioral patterns are concerned with communication between objects. Structural patterns involve inheritence to create intefaces and define ways to compose objects to obtain new functionalities.

As for our project, this week I was able to get movies.html? to sink with the appropriate movieId
along with pictures for each movie. I also created a method to automatically move a movie to nowPlaying when it is passed it's release date. 

Tuesday, April 3, 2018

CST 438 Week 5

CST 438 Week 5

This week we learned about Gantt charts. I have studied Gantt charts before but this was a good refresher on the topic. We also learned about earned value and velocity for measing progress in our project through Agile development. We also applied the test-driven development process in our projects. We had to create test cases in JUnit to test our methods. The ability to understand github and branching within github has been essential to our development process. Our team was able to get a prototype website up for our Moviehouse website. The initial site can access our in memory database. We have built our website with Java Springboot framework while utilizing Thymeleaf for web development. This project has been challenging so far but I am grateful that we chose to do the project in a way that we are unfamiliar. It has been good to put another form of web development in my belt.

Tuesday, March 27, 2018

CST 438 Week 4

CST 438 Week 4

This week we learned about the importance of gathering and documenting requirements during the development cycle. We learned to use class responsibility collaboration as a design tool for creating class diagrams. We were also able to learn and create UML diagrams for our project. The UML diagrams utilized were use case, class, sequence, and deployment diagrams. All of these diagrams are useful in creating a blueprint for how to code and design your project.

I mainly worked on the design class and deployment diagrams:



Wednesday, March 21, 2018

CST 438 Week 3

CST 438 Week 3

This week we learned about the differences of white box and black box testing. White box testing takes into account the internal mechanism of a system. Black box testing has no visibility to the code and the test cases are written based on input and output functionality. Although black box testing is not controlled, meaning it only finds symptoms of problems, it is still necessary to find different types of faults that white box testing may miss.

During the assignment, I had trouble with question #10 which asked to develop test cases for different scenarios. I felt the text did not provide adequate instruction for me to efficiently figure out this last problem. I hope to get good feedback from the professor as to how to go about this problem.

This week we were able to get a simple hello world program written in the language and framework we will be using for our group project. Our next step is to build a database to utilize for the movie house website that we will be developing for.

Tuesday, March 13, 2018

CST 438 Week 2

CST 438 Week 2

This week we learned about how to effectively utilize github for project management. It was explored how to properly use branches for version control. We were also introduced to using Pivotal Tracker as an effective project management tool.

We met for the first time as a group and I liked how quickly we were able to come to an agreement for our project. We decided to build a movie ticketing system for a local movie house. We created our git repository, slack site for communication, and pivotal tracker page for project management. We decided to hold our sprint planning on Sundays at 6pm and scrum meetings on Thursdays at 7pm. I am looking forward to seeing the outcome of this project.

Sunday, March 11, 2018

CST 438 Week 1

CST 438 Week 1

This week proved to be extremely challenging. We were tasked to create a hangman game and implement on AWS. I have never used AWS before or a framework and I could not figure out how to get the code implemented in a framework in AWS. I was able to get a working code on my own computer using a local server but could not figure out how to get the framework on AWS. My hope is that I can learn from someone on how to get a working framework up on AWS. It seems that a problem for me is that I am on a Windows system and everything I looked up was from a reference of using a Linux terminal.

This week we also learned about the differences in development approaches for large scale projects. These can include the agile and waterfall approach. 

Saturday, December 16, 2017

CST 373 Week 8 Scrapbook

Artificial Intelligence Microchips Will Turn Humans Into Zombies, Says Prominent Neuroscientist



Article Summary:

This article details a warning by Mikhail Lebedev, a senior neuroscientist at Duke University, that brain implantation technology could cause humans to become zombie like as a result. The doctor argues that humans may become more like machines with such implants leaving their humanity behind. The article then goes on to cover how Elon Musk of Tesla has created a new company called Neuralink. Neuralink's goal is to provide brain implants that can help humans think clearer and remember more in order to keep up with the expanding world of artificial intelligence. As of the time of writing in the article, Neuralink has not done any type of implantation into a human brain.

Why it was Chosen:

I chose this article because, I feel that Elon Musk may be right in his assessment that if artificial intelligence is not limited it could mean the end of human civilization. This is a scary thought. It seems as though Mr. Musk is an ardent believer in such a scenario as he is actively looking to make the human mind as resourceful as a computer may be. Ever since I was a child, I have been interested in the concept of artificial intelligence. 

Ethical Implications:

There are ethical implications on both sides of the coin on this. For one, Dr. Mikhail Lebedev argues that brain implantation will make humans more like humans and less like machines. He argues that such technological innovations could in effect lead to humans to act like machines. On the flip side of the coin, Mr. Musk argues that we need to take such steps of augmenting our own brain in order to keep up with the rise in artificial intelligence; otherwise, humans may become obsolete.

Credibility of Source:

Inquisitr is an online news publication that has been around since 2008. It is a smaller publication as it is not stemmed from a major news network or station. Inquisitr does not employ a staff of journalists but instead opts to accept contributions from journalist who may work as contractors. This is a different model than all of the major new sources. Even though contributors are not employees of Inquisitr, they still go through a vetting process by Inquisitr. This is done to ensure timely, quality, and accurate news.

Monday, December 11, 2017

CST 373 Week 7 Scrapbook

CST Week 7 Scrapbook


The Ethics of Algorithms, or Why Coders Need an Ethics Code


Link: https://www.calcalistech.com/ctech/articles/0,7340,L-3725995,00.html
PDF: https://drive.google.com/a/csumb.edu/file/d/1mbemNfP8k9QW1Mz_rM4ClWYw1-903vTE/view?usp=sharing

Additional reading regarding China's new credit system: http://www.wired.co.uk/article/chinese-government-social-credit-score-privacy-invasion

Article Summary:

This article argues that boundaries in ethics must be established to limit the amount of big data that algorithms are allowed to collect. The article explains how we are subjected to many algorithms a day in order for organizations to learn more about us. It goes on to say,
"Today we already understand that we are being cataloged, analyzed, ranked, grouped and graded not just by the servers of those who would sell us something. Security and law enforcement agencies invade our lives unhindered in order to decide whether we pose a threat; politicians study us for the next election; banks determine how likely we are to return our loans; insurance companies rate our health and our life expectancy."
 It then goes on to say that China is piloting a new Social Credit System that incorporates many aspects of data about a person, ie. what they buy, where they live, and who are their friends, in order to determine that individual's credit score. The author argues that we must limit the amount of big data that is collected by organizations in order to avoid a path where everything we do is scrutinized and ranked by other entities particularly government as is seen in China. I have included a link detailing China's new credit system.

Why it was Chosen:

This article was chosen because, I feel that we as developers are at a point where we can stop the growing trend in big data collection. I personally do not want to live in a world where my every action is examined and scrutinized. I believe we all have a right to personal privacy and the trend is that more and more big companies and governments are beginning to learn about all aspects of those who use their product or are within their jurisdiction.

Ethical Implications:

Although the corporations make the decisions to create such algorithms, developers hold the power to embrace an ideal and refuse to work towards a potential world where people's privacy becomes non-existent. I believe knowledge is power and the more knowledge a government or organization has over the people under it, the more control it has over them.What China is incorporating in their new credit system is scary. By incorporating behaviors into their credit system, they can more easily mold a society to think and act how they want them to act. The majority of people would want their "score" to be as high as possible and thus force a trend in personal spending or actions in the way the government wants them to spend. As mentioned above, the ethical implication of exploitation of personal privacy come into play.

Credibility of Source:

CTech is a fairly new technology news site established just in the year 2017. Being a new organization more research into the validity of China's new big data credit system was done. It was discovered through wired.uk.co that this is in fact true. Wired is a reputable tech magazine that has been around since 1993.

Tuesday, December 5, 2017

CST 373 Week 6 Scrapbook

CST 373 Week 6 Scrapbook

There are 170,000 fewer retail jobs in 2017—and 75,000 more Amazon robots




Article Summary

The article discusses how there may be a correlation between Amazon's success in automation and decline in retail jobs. The article gives an estimate that Amazon's workforce will increase in size by 75,000 units in 2017. In the same year it is estimated that Amazon will add 146,000 employees to its workforce but the overall workforce in the retail industry will still decrease by 24,000. It is argued that Amazon's growth is and reliance on robotics is a contributing factor to the loss of retail jobs. The article then goes on to say that although Amazon only represents 3% of overall US retail sales it is accounting for 20% of the US retail industry growth in 2017. It is interesting to see that one company can account for 1/5 of the growth in an industry. 

Why it was Chosen

I chose this article because, I think that automation effects us as an economy for better or worse and it is necessary to keep a keen eye on how it is shaping the economy. This is precisely the reason why I have decided to get a second degree in Computer Science. I feel that technology will be at the forefront of US industry for the decades ahead and if you are not a part of that industry you may be left behind struggling for a job. 

Ethical Implications

The ethical implication is that the increase in automation that all industries are seeing may have a negative impact on the unemployment ratio in America. The statistics here show that although a causation can not be proven, there is a correlation in increase in automation and job loss in the retail industry. I feel that this extends to all industries. With a higher unemployment rate comes a higher poverty rate. I feel that this is something that will have to be watched with a keen eye amongst our business and political leaders in America. Employers will have to look at filling the void of job loss as a result of technological innovation. If not we may face a growing poverty level from people who may be forced out of jobs.

Credibility of the Source

Quartz is a digital news outlet that has been around since 2012. The company is based in New York but has staffed reporters throughout the world. The company strives to embrace technology as it's way to inform the public. Quartz is owned by Atlantic Media Inc., the publisher of The Atlantic.

Wednesday, November 29, 2017

CST Week 5 Scrapbook

CST 373 Week 5 Scrapbook

HP quietly installs sytem-slowing spyware on its PCs



Article Summary

The article explains how many consumers have been complaining that Hewlett Packard has installed software on their system without them knowing. The software in question is called HP Touchpoint Analytics. The article explains that the program appears to replace previous software called HP Touchpoint Manager. It seems that this may have gone unnoticed had it not been for the new software creating slowdown in customer's systems. HP responded to Engadget's article with the following statment.

HP Touchpoint Analytics is a service we have offered since 2014 as part of HP Support Assistant. It anonymously collects diagnostic information about hardware performance. No data is shared with HP unless access is expressly granted. Customers can opt-out or uninstall the service at any time.
HP Touchpoint Analytics was recently updated and there were no changes to privacy settings as part of this update. We take customer privacy very seriously and act in accordance with a strict policy, available here.

Why It was Chosen:

This article was chosen because I take privacy with regards to computer software seriously. The article claims that the software collects user's data without their permission. It is even more disturbing when a company distributes software without the user's knowledge.

Ethical Implications

The ethical implications are that software is potentially being distributed by a company without a user knowing that it is being put on their system and breach of privacy. Obviously it is illegal for a company to install software on a user's system without their consent. A disturbing way around this is that companies may put in their licensing agreement which may consist of numerous pages of legal jargon that allow them to do this. A company may have it's software default to automatic updates or bundle other software in a software suite where the user may not fully understand what they are getting. I do not like such practices as many users unknowingly just click through the defaults when installing software. Companies should find a way to make it very clear that a customer may be getting additional software. I feel that companies get away with this when they make their installation software in small print. 

Credibility of Source

Engadget has been around since 2004 as a source for technology news and reviews. The company operates on a global scale.