About Me: I am currently a Computer Science major at San Jose State University.

Sunday, October 27, 2013

Hacking: Two Sides to Every Coin



Don't trust anyone wearing a ski-mask. Source
If you have spent any amount of time on the Internet, then you have most certainly heard of the term hacking. I am willing to bet that whenever you hear about hacking, there is a very negative connotation about that word.  To many, hacking means using a computer to force your way into somewhere you are not supposed to have access to, and steal passwords, accounts, personal information, and sometimes proprietary secrets belonging to a company. I’ve had my fair share of run-ins with hackers before. About 10 years ago, I had an account on a video game service called Steam. Steam is a platform that lets you buy and download video games. One day I tried to start up the program, only to find my account information was not working. Back then my experience with computers and the Internet was very limited, so I did not know how to retrieve my account, so I ended up creating a new account. Luckily, I spent maybe a hundred dollars on games tied to that account, so it was not that much of a setback. 


What a fancy hat. Source
Now while many of us are familiar with the bad kind of hackers, known as black-hat hackers, there are other hackers, called whit-hat hackers, who use their talents to help people. Some of these people are just good Samaritans, trying to break into places with no intent on stealing anything and then letting the owners know. Others are paid consultants that are hired to find vulnerabilities in software and websites so that the developers can fix these security holes. The perfect example of the former is one that I briefly talked about one of my earlier posts, when a Palestinian computer scientist, named Khalil, discovered a vulnerability in Facebook that enabled people to post stuff on other people’s walls without having to be their friend(1). When he became stymied by Facebook’s IT department, he took the matter into his own hands and posted on Mark Zuckerberg’s Facebook page to show off the vulnerability. After that, Facebook’s security team was able to patch up the exploit, but due to the unorthodox way of showing the exploit, Khalil was not compensated for finding the bug. I, for one, am glad that there are people like Khalil out there who find these types of exploits and do the right thing.

  1. http://rt.com/news/facebook-post-exploit-hacker-zuckerberg-621/

Sunday, October 13, 2013

Open Source: Open for Everyone



https://www.apertus.org/sites/default/files/bart_os.gifI for one love open source for many different reasons. For the uninitiated, programs that are open source have their source code (the core of the program that defines how it functions) freely available online for anyone to access. This lets anyone download and change that program to their heart’s content, and then share their changes online. Eventually, more and more people would build upon that modified program, and the end result would be a vastly improved product that everyone contributed to. There are a number of reasons why people would choose open source over other paid programs. Some either can’t or won’t put up the money to purchase a license for the premium software, and others are thrilled at the prospect taking a program and customizing and making it their own.

When I think of open source programs, one of the most useful in my opinion would have to be Open Office. Open Office is the open source version of Microsoft Office. It has many of the functions that Office has, like a document editor, a spreadsheet maker, a presentation maker, and a number of other useful features. I have two computers, and since I do not want to pay for MS Office on both, I decided to install Open Office on my laptop. It works very well, and I can always search for different plugins in order to get any missing functionalities.and if you decide to go down the MS Office route, that will set you back something to the tune of $139.991, which on a student's budget is not a small sum.In my opinion, if you can avoid spending money and get a product just as good (as long as you are not pirating it), go for the free route.  


  1. http://www.microsoftstore.com/store/msusa/en_US/pdp/productID.259179500

Sunday, October 6, 2013

Agile: Collaboration at its Finest


http://www.noupe.com/wp-content/uploads/2010/04/Waterfall2.jpg
Just like a real one, it flows in one direction and is hard to go back.

When you find yourself working in a group with a product deadline off in the distance, there are many ways to work together as a team to produce a shippable product. There are some strategies based on the Waterfall model, which focuses on incremental stages of development. Each stage of development is executed in sequence. Generally, each stage has its own theme, like a planning, researching, testing, or development stage. While it sounds like an orderly and efficient way of executing a project, there are many who believe it to be quite inefficient. For example: you are half way through the development phase of a service that assists the client in baking cookies, but now the client suddenly changes his mind and wants to cook pies instead. Being halfway through the project with this sudden paradigm shift will invalidate much of the work that was accomplished during the previous stage relating to cookie baking. This results in the waste of numerous dollars and man-hours. As a result, this sequential strategy became less popular, and a new model known as Agile began to gain prominence.


http://upload.wikimedia.org/wikipedia/commons/5/50/Agile_Project_Management_by_Planbox.png
short, sweet, and to the point.
The Agile model was first introduced in early 2001, when a number of software developers met and discussed ways to improve productivity. It was there they published the Manifesto for Agile Software Development. Agile differs from Waterfall in one key area: instead of having a long line of different phases, the Agile method breaks up the development cycle into numerous short work periods called sprints, with the intention of delivering smaller, finished portions of the project  to the client. The Agile method is described in much more detail here. During each sprint, there are daily meetings called scrums.  During these 10-20 minute meetings, the development team, the client, and a facilitator called the scrum master gather and discuss the team’s progress on the project. The scrum master helps direct the flow of the meeting and acts as an intermediary between the team and the client. During each meeting the team reports to the client three things: what they have finished, what they are working on, and anything that is blocking their progress. These meetings allow the client and the team to continually improve the product and quickly react to any blocks that the team experiences, along with any shifts in the requirements put forward by the client. This more natural development cycle both saves time and money by catching problems early instead of halfway through the development.  For the project I am currently involved in, we are using what I would call Agile lite. Since we are all students, it is very difficult to meet every day with the client, so instead we are having Scrum meetings every other week for an hour a day. While it does not fit the mold of Agile perfectly, I can definitely see how this method is superior to the Waterfall method in every way.