Saturday, November 2, 2013

Data Structures

Data structures and algorithms are a fundamental of computer science. For example, a red-black tree is the same whether it's implemented in Java, C++, or Python. According to some experience software engineers, you may never implement a Big-O notation in your career life. So, it's rather to understand how a binary search tree works, it will likely benefit you in the job interview, as well as your software development career. It's better to know one programming language but you have deeper knowledge in data structures and algorithms and how they work rather than knowing a few programming languages but don't know how to apply data structures or find a best solution to solve a given problem. Often time, once you know well in one programming language, you can easily pick up another language in a short time.

The software developer can apply data structures and algorithms to define and solve complex problems. Knowing the data structures exist is not enough, but knowing these details will better prepare developer to understand when it is appropriate to use one data structure over another. The most common abstractions for data collections are stacks, queues, lists, trees, maps, and hash. Lists and maps offer some valuable features, but they come with costs. And if we use the wrong one can significantly undermine the performance of the software. 

Knowledge of data structures and algorithms is an important part of software developer’s skill set because data structures and algorithms are very important when coding. To be able to develop robust, efficient and reusable code, the software developers need to know the design and analysis of efficient data structures and algorithms. They also need to know the disadvantage and advantage of the different types of data structures and algorithms. So, how do you strengthen your knowledge of data structures and algorithms? 

 
Picture from online

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!

Thursday, September 19, 2013

LinkedIn and Branding: How to make it an effective tool to benefit you

Today LinkedIn, like Monster.com did ten years ago, is growing in popularity.  Although LinkedIn is based in the United States, it currently has hundreds of millions of professional members worldwide. LinkedIn members actively look for jobs and read work-related content on the LinkedIn website. A couple of years ago one of my co-works left for another company, before she left she gave us her LinkedIn user name. At first, I did not know anything about LinkedIn and what it was used for. Therefore, I did a Google search and found out that this was a new way that many professionals use to keep in touch with each other.

However, LinkedIn is not only for professionals, it is also very beneficial for college students and a great way to build business and grow customer base. Within this blog, I focus on students only. Students can find out what courses they should take if they want to work in certain fields. They can create and update their profile, make connections with other professionals by joining groups and submit job applications. When we navigate around LinkedIn’s website, we can see many companies worldwide that are looking to recruit professionals to join their companies.

So, the question is how to make your profile attractive and look professional. Well, there are a few things that you can do to make it look better. One thing to do is add a professional profile picture. Another thing is to complete your technical skills section. Employers look at these two things first when they read your profile.  The technical skills section is especially important, so you should not leave this part blank and do not under estimate your skills. Some of the skills you have you might not think are important. Some of the skills that you may think are unworthy to be included in there. But you never know some employers may be looking for those skills. For example, I heard one of my classmates said he did not intend to include one of the programming languages that he is learning in the technical skills because it is somewhat of an old programming language and that not many companies need it nowadays. This is your selling point so make sure you include as much detail as possible. Be sure to include what you are learning, what you know and your work experience in your profile. Doing this will benefit you and make you look professional.

Pic from arkovi.com


Friday, September 13, 2013

QR Codes: Ideal travel or tourism uses

I read through a few hand-outs and online articles, I see people mention a lot about using QR codes to promote their brands or to advertise their products, but not much mention about using it for traveling purposes. Honestly, I myself have never scanned those promotional QR codes. I find it is most interesting and useful to use QR codes when traveling. Today, many airlines offer QR codes for boarding pass, and many airports provide QR scanners as well. I can use airlines' mobile app to check-in and download a QR code as my boarding pass right on my smartphone. I do not need to wait in line at the counter or kiosk at the airports to print out the paper boarding pass. Another thing I find interesting is the use of QR codes at museums or any kind of exhibits.  For example, when you walk through an art museum, you can use your smartphone with a QR reader to scan the QR code next to a painting and learn all about the painting, the genre, the artist, his/her contemporaries, etc.

Rather than a coupon or promotion, the QR code as use for traveling is such a convenience tool for travelers.  It would make for a much more informative and enjoyable time at the museum.  The QR code is a tool that can greatly enhance the consumers' experience, it is not simply a new technology.  However, there are still some disadvantages to QR codes.  Sometimes it takes longer to be scanned because there are many QR generators and many different kinds of smartphones or QR readers; and not all of them work well together.  For example, one time I had to step aside at an airport boarding gate and yield to other people to go first because the airport bar-code reader could not read my QR boarding pass.  Also, not every airports is equip with QR readers, so paper boarding pass is still necessary.  However, overall, QR codes help our lives by taking us one step closer to a paperless future, and having every conceivable information at the tip of our fingers.



Friday, September 6, 2013

Social Networking Security or Lack of When Promoting Your Brand

When discussing advertising on social networking, it is hard to miss the saga of General Motors pulling their advertising account from Facebook, just a few days before the big Facebook Initial Public Offering (IPO), then returning to Facebook after one year absent. If we think social media is good place to promote brand, then why GM withdrew their advertising? In May of 2012, General Motors announced that they would stop advertising on Facebook, claiming that it was ineffective to selling their cars.  The announcement caused a big stir in the media and caused a lot of speculation about whether advertising on Facebook is effective.  This was a big problem for Facebook as it gets most of its income from advertising.  A few days after the GM's announcement, Facebook IPO went off as a big disappointment.  The stock price dropped almost 30% at the close of its first week on the stock market.  There were a numbers of issues that analysts claim were the reason for the disappointing IPO, but could the move by GM also contributed to the disappointing IPO?

                                                       Picture from Forbes.com

In April of 2013, General Motors announced that they would return to advertise on Facebook.  They stated that they want to do an all-mobile advertising campaign for their new Chevrolet Sonic car.  Some analyst suspect that the reason GM pulled their ads in the first place was because of the lack of tracking by Facebook on how effective the advertisement on Facebook is. They were not worry about the social networking security or lack of when promoting their brand. Then at their returning to Facebook, GM tried to leverage their account to get Facebook to do more to track the effectiveness of the ads. However, other car companies stay with Facebook because they think Facebook reached many people, so they might think there is no need to concern about the effectiveness of advertisement. 

Furthermore, if a social media outlet set itself up as a medium for advertising, it needs to show its customers (the companies that will buy space to advertise) that it is effective, that it can track progresses, etc.  Just like how TV is selling time slot to companies for advertising.  For a time during a show with few viewers, the cost of that time slot is less than a time slot during a show that a lot of people watch, like the Super Bowl.  Even with advertising on a billboard by the side of the road, the ones on a road that has a lot of traffic will reach more people, whereas the billboard on some empty street will not be seen by many people.  Seems like with advertising on a social media like Facebook, the customers pay for a billboard, then Facebook decides where to put that billboard, it could be on a very busy traffic street or it is out in the country side somewhere.

In conclusion, when promoting your brand, there is no need to worry much about the social networking security. It is rather to focus on how social media promotes your brand and if it is effective.