Pages

Sunday, October 27, 2013

Hacking: a dangerous double-sword


In computer science, hacking is a behavior to gain unauthorized access to data or system which is help by another people or organization. And hacker is the name for these people who are good at hacking. Sometimes hackers are esteemed as fighter to challenge monopoly while sometimes they are accused of crime. In my opinion, hacking is a double-sword; it could be used as a workaround for solving some problems, while many hacking behaviors are dangerous or even illegal, and should not be encouraged.

Many computer geeks are keen on hiking and take it as a spirit to challenge monopoly. One example is the popular “jailbreak” kits for Apple’s mobile operation system iOS. Since Apple’s iOS restrict iPad and iPhone users to use APP only bought from Apple’s store, many people don’t like this monopolistic like behavior and some of them took great efforts to hack the iOS system and developed a more open software environment freely for other users to let them download App not only from Apple store, but also from some unauthorized sources. After long term lawsuit, this hacking behavior is now taken to be legal in U.S.A. and has benefited many people. However, it might not be taken as a standard way to solve such kind of problems. Jailbreak iOS did give user more freedom while also brought with security issues and service issues. More malwares are easily to be installed on these jailbreak devices since they are not authorized by Apple. And Apple will not provide service to the problems caused by jailbreak. 


Hacking also has its dark side. Hacking bank’s computer systems and use other people’s credit card information stored in bank server to make personal benefit is the same as robbing a bank. Many people are doing similar hacking to illegally obtain other people’s private information due to profit purpose. These hacking behaviors should be accused of crime and will not be permitted. Even the purpose of hacking behaviors is not for personal profit, releasing private data of other people or organization to public without authorization could be a very dangerous behavior. A tragedy happened to Aaron Swartz is a warning for all of these hackers. Based on the purpose to make knowledge freely open to public, Swartz hacked MIT network in 2010 and downloaded nearly 5 million articles from JSTOR, one of famous digital archives of scholarly journals in the world and then put all these paper online for public free access. Many people adore him as a fighter to knowledge monopoly while the lawsuits against him finally pushed Swartz to commit suicide. Although I highly respect Aaron’s good wish, I don’t think such kind of hacking should be encouraged anymore. We should find a better way to achieve the same purpose without hacking.

Monday, October 14, 2013

Open Source: free but might not be high quality

What follows is a general definition of open source given by Wikipedia, a compute program in which the source code is available to the general public for use and modification from its original design. The open mind of open source stimulates the rapid development and spread use of software, as well as brings quality and maintenance problems.

Open is the key feature of open source. First, it is free to use. Nowadays, we can easily find many free software, such as Linux, R (a statistical computing software), both of which have been used by many people. More importantly, many expert users are becoming contributors for bug fixing, or new feature development because these software are also open to modify.  People get benefit by using these tools and then contribute their own effort to make it better. The open mind is the soul of open source software.


 Reference from http://www.r-project.org/

Of course, open source software has its own disadvantage. The quality and maintenance of open source software can’t be guaranteed. Because open source software developers do not need to make a strict commitment about functionality and quality to the users, while commercial companies such as Microsoft, Oracle will be required to pay more responsibility for their software products. Sometimes open source software can’t maintain consistency and coherence. For example, Android OS has too many different versions released by its principal contributor Google and some smart phone or pad manufacturers, such as Samsung, Amazon. This messy leads to a difficult problem for App developers on Android platform. They have to develop different versions of the same App for different cell phones. In addition, mistakes in open source software might be hard to solve. I have found a mistake in a mathematical package of R, which makes it can only be installed in Linux but not MAC OS. The worse thing is that there is no way to report the mistake and get the support to solve the problem because the original developer has stopped maintenance several years before.


  



Sunday, October 6, 2013

AGILE: advantage and disadvantage are equally obvious

Before discussing advantage and disadvantage of Agile, we need to know what is Agile. Based on definition from Wikipedia, Agile is a software development model that promotes adaptive planning, evolutionary development and delivery, adopts iterative approach, and encourages rapid and flexible response to change. The greatest feature of Agile is rapid.

A classic Agile development process is dividing project into small incremental releases. The cycle time of each release shortens from months to weeks. In addition, Agile focuses on communication between developer and customer. Through face to face conversation, developer can meet the dynamic change of customer.  


However, Agile also has some disadvantages. For large project, it is very difficult to assess the effort required at the beginning of the software development life cycle. Moreover, in order to improve the speed, Agile partly ignore documenting and designing which may cause the future problems when the program becomes larger and larger.  Also, project based on Agile might deviate from the track if customer is not clear with the target and always change mind, because Agile emphasize connection with customer and rapid response to customer.

Obviously, we can’t simply say that Agile is good or bad. The reasonable way is that we should make decision whether Agile is suitable for our project before adopting it.