Friday, October 25, 2013

Hacking: Good and Bad

There are three groups of hackers, not two or one like most people think. They are called “white-hat”, “black-hat”, and “grey-hat”.

The "white-hat" hackers are people who are very good at computer programming, networking, or other related computer functions and love to share their knowledge with other people. They use their computer skills and knowledge to access computer systems to warn us that the systems are vulnerable and need to be upgraded before the “black-hat” hackers have a chance to break into the systems and damage things.

For example, a couple of months ago there was a video and a conference hosted in Las Vegas showing how to hack a Toyota Prius'. In the video, Chris Valasek, director of security intelligence at IOActive, and Charlie Miller, a security engineer at Twitter, hacked into the Prius' computer system via a laptop, while the car was being driven by another person. Chris and Charlie pulled some basic pranks: honking the horn, messing with the digital fuel gage and seat belt, or making the speedometer read 199 mph and then stopping the car. By doing this, it would trigger other systems like the airbag deployment system because the car would be under the same conditions as a crash. Therefore, what Chris and Charlie did was to inform us of security risks and not intentionally hurting us.

On the other hand, the “black-hat” hackers are people who intentionally use their expert computer skills and knowledge to gain unauthorized access to computer systems, corporations, or networks with malicious intent. Oftentimes the black-hat hackers are involved in criminal activities. All they do is seek out to damage and destroy the computer infrastructures. As we heard, a lot about black-hackers who make devices that can read credit card or ATM card numbers at the ATM machines and/or gas stations. Some of these hackers do their work across the internet by breaking through firewalls, or start a DDoS on someone's website.

The "grey-hat" hacker group falls in the “grey area” which is between black-hat and white-hat. One of the reasons grey-hat hacker would categorize himself “grey” because he wants to distance himself from black-hat and white-hat hackers. Grey-hat hackers can do both good and bad things, but they usually carry out good intentions. However, some of them hack because they want to show their disobedience to the system. 

Picture from buzzinbiz.com

Thursday, October 10, 2013

Open Source: And Its Usefulness

“Open source software is computer software with its source code made available and licensed with a license in which the copyright holder provides the rights to study, change and distribute the software to anyone and for any purpose”[1]. As a Computer Science student, I am glad that there are many open source software that are available for students and teachers to use without paying anything while doing school projects.

Open source software is not limited to students and teachers, it is available for industrial use for free as well. In the Java development community, there are two main integrated Development Environments: Eclipse (owned by IBM) and NetBeans (owned by Sun/Oracle). This is one-step closer for students to get familiar with the tools that are used in the software industry. For example, those students who are using Eclipse in school are most likely to learn the industrial Java development tool, which is called Rational Application Development from IBM, quicker.

Another useful tool is OpenProj, which was developed at Projity by Marc O'Brien, Howard Katz and Laurent Chretienneau in 2007. There is now a newer version called ProjectLibre. This is a very good tool for people to outline and create tasks for their projects. They can breakdown tasks and stages. Unfortunately, there are still some limited functionality compare to the pay software applications. But sometimes we don’t need all functions fully loaded, though. We just need those simple applications but it is easy to use and has enough functionality for us to complete our tasks and work. I personally thank those people who use their space time to create those open source applications for us to use.

Picture from online.

Below are some popular open source applications:
  • MySQL (now owned by Oracle): Popular relational database.
  • Eclipse: Java development tool
  • NetBeans: Java development tool
  • Red Hat: Major distributor of Linux for server and desktop use.
  • WordPress: Widely used blogging platform.
  • NotePad++:  Coding editor for Windows
  • SugarCRM: Business customer relations management.
  • Magento: E-commerce shopping platform.
  • OpenProj/ProjectLibre: Project management software.

Picture from online

[1]. St. Laurent, Andrew M. (2008). Understanding Open Source and Free Software Licensing. O'Reilly Media. p. 4

Thursday, October 3, 2013

Agile: The good, the bad and the ugly

Today, businesses are changing and their systems and services must change quickly in order for them to stay competitive. The traditional Waterfall development methodology demanded that all requirements, design, and system testing be completed before our customers could interact with the system. It has large impacts on the solution delivery schedule and is costly when business changes may be required throughout the project life cycle.


A new methodology has selected and is implementing called Agile Scrum by IT. This methodology is based on the interactive and incremental development approach in short durations. It focuses on goals that result in demonstrable product.


Here are some benefits to the Agile methodology:
  • Provide working software code that is reviewed frequently (~ 2 weeks) by product owner.
  • Work burn down and project velocity by using daily standing up to provide high visibility of project progress and issues.
  • Improve customer satisfaction by rapid delivery of useful software and continuous collaboration between the product owners and the development team.
There are three essential roles in any Scrum project: Product Owner, Scrum Master, and Team

Product Owner is accountable for product success, responsible for prioritizing product features, maintains the Product Backlog, and ensures team working on highest valued features, etc.

The Scrum Master is a facilitator for the team and product owner not a manager, removes obstacles, maintains the Sprint Burndown Chart, facilitates Sprint Retrospective at the end of a Sprint, etc. Rather than manage the team, the Scrum Master works to assist both the team and product owner in the certain ways.

Scrum Team is cross-functional and consists of 5-9 people, defines tasks and assignments, is self-organizing, maintains the Sprint Backlog, etc.

User Stories: A very high definition of what the customer wants the system to do. Each user story is captured as a separate item on the Product Backlog.

Story Points: A simple way to initially estimate level of effort expected to develop a user story. Story points are a relative measure of feature difficulty, complexity, and risk.

Velocity: The rate at which a team converts items to “DONE” in a single Sprint – usually calculated in Story Points.

Above are just briefly some important terminologies in Agile Scrum that you must know to understand how Agile Scrum works.

Pic(AgileZen): Task board


However, there are a few biggest challenges in Scrum are teams not self-organizing and Scrum Master managing and not leading. From my experience, I see that most of Scrum Masters try to managing the team instead. For example, in daily scrum meeting, team members should report each other, not Scrum Master. But it doesn’t work that way. The Scrum Masters makes us feel like they are managers, and everyone try to become a Scrum Master. Other thing is that, team members don’t have a big picture of the whole project. With Agile, team members should also have meetings with Product Owners regularly (maybe weekly) to understand about the requirements, and have questions related to the requirements if they are not clear enough. Here, we just hear from the Scrum Master small parts by parts. Sometimes the Scrum Master doesn’t know all the existing functionality, that cause the project moves slowly and behind schedule.

The worst case is that when the Scrum Master or the tech lead left for another company, team members are clueless.

 Agile is good if people apply it in a correct way only!