Sunday, December 15, 2013

Scientific Computing: Bioinformatics

What is bioinformatics? Bioinformatics is an interdisciplinary field of computer technology to the management of biological information that develops and improves on methods for analyzing, storing, and retrieving biological data. It has been started since 1968. In the past three decades, bioinformatics had seen extraordinary development and use in many areas of computer science, mathematics, engineering, and life sciences to process biological data. However, the term bioinformatics is recently invention, and not appearing in the literature until early 1990s. It’s also known as bioinformatics computational biology.

Bioinformatics plays a few important roles such as in the textual mining of the development of biological and gene ontologies; and in analysis of gene and protein structures. However, bioinformatics favor of the development of algorithms, theory and statistical techniques and calculations to solve the problem stems from the need to manage and analyze biological data. Bioinformatics tools aid in the comparison of genetic and genomic data. The comparison of the genes in the same species or between different species can show similarities of protein functions, or relations between the phylogenetic species.



The goal of bioinformatics is to determine the sequence of the entire human genome. Bioinformatics is a powerful new technology for the efficient management, analysis, and search of bio-medical data. The main concern of the bioinformatics is the use of mathematical tools to extract useful information from the chaotic data was collected using data mining technology.

Bioinformatics now entails the creation and advancement of databases, algorithms, computational and statistical techniques, and theory to solve formal and practical problems arising from the management and analysis of biological data





Friday, December 6, 2013

Computer Graphics: Image processing

What is image processing? Images are everywhere, from those we take with our digital cameras and/or mobile devices and share with our family members and friends to those that we see in the movies and receive from Mars, as well as the whole ensemble of images of our bodies that are taken at dentist office or in hospital visits. Image processing is the art of working with such images. From making it possible to capture, transmit, and store them as blurry and dark images for analyzing the medical data to recognizing our family members and friends’ faces in social pictures. 

There were two robot geologists were launched to Mars in summer 2003 and landed in January 2004. After over eight Earth years, one is still operating. While searching for liquid water on Mars, they took pictures and sent back to Earth so NASA scientists could analyze. How could they do that? They put a camera on the robot, and the pictures were sent to NASA after they were taken. The computer scientists used image management technology such as metadata to interpret, analyze, and store those pictures. Using metadata, they could define the width, height, size, file name and directory, and the date the pictures were taken. They converted between Mars and Earth time. They used Java Message Service for synchronous and asynchronous messaging.



Pics from NASA

Saturday, November 30, 2013

Communications and Security: Data Communications

Five basic components make up telecommunication architecture. They are terminal, processor, channel, computer, and control software. Terminal is where input signals are made. Processor converts signals from analog to digital (and back to the receiving end). Channel is the cable that transmits signals from one end to the other. Computer does the communication task, specifically running the control software; which, in turn, handles network activities and functionality.

Some widely known telecommunication networks are the Internet and the telephone system. The Internet is a network of computers (also act as terminal most of the cases) communicating with each other via TCP/IP protocol. Each connected terminal is given an IP address to identify itself within the network. In addition, TCP/IP is the method which data is communicating between terminals.

Lately, there is a new technology for telecommunications networks called Multi-protocol Label Switching (MPLS). MPLS is a mechanism in high-performance telecommunications networks that directs data from one network node to the next base on short path labels rather than long network addresses, avoiding complex lookups in a routing table. MPLS can encapsulate packets of various network protocols. MPLS supports a range of access technologies, including T1/E1, ATM, Frame Relay, and DSL.

The need to carry voice using the Internet gives rise to VoIP (voice over the Internet). Now that mobile phones are commonplace, the competition for a single network to carry voice and data is bustling.


From what-when-how.com

Saturday, November 23, 2013

Artificial Intelligence

Allen Newell and Herbert Simon are the first two people who started researching about Artificial Intelligence (AI) since 1950s. But when talking about Artificial Intelligence, some people may ask what is it? Even though most of us might have watched some AI movies such as I Robot or Terminator, but the terminology of AI is still new to some of us. Nowadays, there are more advancement in computer technology that computer scientists could actually create a few amazing tools such as robotic surgical system, da Vinci, made by the Intuitive Surgical and self-driving car made by Google. Lisp and Prolog were used mainly for AI technology in the beginning, but later these two programming languages were using for other purposes as well.


http://www.coterouen.fr/2011/04/21/la-clinique-mathilde-acquiert-un-robot-chirurgien-dernier-cri/

Da Vinci uses the latest in surgical and robotic technologies available today. The da Vinci robots operate in hospitals worldwide, most commonly for kidney, hysterectomies and prostate removals. The da Vinci surgical system requires a human operator, which most likely is the surgeon. It enables surgeons to perform complex and delicate operations. There are a few key components such as an ergonomically console where the surgeon sits while operating, a high-definition 3D vision system that the surgeon looks through two eye holes of the procedure, a four interactive arms with foot pedals. There are two hand controllers that the surgeon uses while operating. 

Surgeon arms

Surgeon view

The self-driving cars were made recently, but I see them very often on my ways to work and home on high way 280, though. However, there was always a driver behind the wheel, and I have never seen one that driving without the driver. Hope, I can see it someday.

The future self-driving cars

Both da Vinci system and self-driving car came out for a while, but these two new technology are still new to people. Most of us still somewhat are not used to them yet and afraid to take the risk for using them.

Sunday, November 10, 2013

History of Computer Science: HTML5

HTML5 is very popular nowadays in the web development community. But, before introducing about HTML5, I would like to talk a little bit about its history. Berners-Lee wrote the first HTML page in 1989. For its first five years between 1990 – 1995, it went through a number of revisions and extensions, primarily hosted first at CERN and then at the IETF. Berners-Lee found the W3C to standardize HTML for all browsers to follow. HTML started small and got bigger. In 1995, HTML 2 and 3 were released then made way to a more pragmatic approach known as HTML 3.2, which was completed in 1997 by W3C. HTML 4.0 quickly followed later that same year. In 1999, HTML 4.01 came out.

The following year, the W3C membership decided to stop evolving HTML and instead begin work on a XML-based equivalent, called XHTML. This effort started with a reformulation of HTML4 in XML, known as XHTML 1.0, which was completed in 2000.

In 2004, the idea that HTML's evolution should be reopened was tested at W3C. Mozilla and Opera presented the early draft proposal covering just forms-related features and some principles that underlie the HTML5, but the proposal was rejected. And W3C membership wanted to continue developing XML-based.

Browser developers got frustrated with W3C progress and created a new standard committee to write the HTML5 specification. Shortly after that, Mozilla, Apple, and Opera jointly announced their intent to continue working under a new venue called the WHATWG. In 2006, the W3C expressed an interest to participate in the development of HTML5 after all. And in 2007, W3 formed a working group chartered to work with the WHATWG on the development of the HTML5 specification, which added:
  • Form input type
  • Audio/video
  • Data storage
  • 2d/3d Graphics
  • Drag-and-drop
  • and much more


The HTML 5 DOCTYPY is now the most common, used on over 40% of pages.

DOCTYPE is a piece of HTML code that says which version of HTML is being used at the top of the HTML page. For example,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> // HTML 4.01 declaration
<!DOCTYPE html> // HTML5 declaration

Since different browsers support different audio/video formats, HTML5 lets us specify multiple sources for the audio/video elements, so browsers can use the format that works for them.
For example, below is how we code in HTML5. Very simple and clean, isn't it?

<!DOCTYPE HTML>
<html>
<body>

<video width="320" height="240" controls>

  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

</body>

</html>

<!-- Old HTML version for one kind of video -->
<object width="420" height="360" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">
   <param name="src" value="movie.mp4">
   <param name="controller" value="true">
</object>

Friday, November 8, 2013

File sharing

File sharing is the practice of distributing or providing access to digitally stored information such as audios, videos, documents, etc. File sharing is very convenient for people to share files with family members, friends and/or classmates/teachers. There are many ways to share files across the internet such as FTP, SFTP, peer-to-peer file sharing, etc. However, most of people are intended to share music files which have copyright protected.


In 1999, Napster was the first company provided peer-to-peer file sharing system. But, couple years later it was sued and lost by the A&M Records company, which caused Napster to shut down to comply with a court order. This drove millions of users to other peer-to-peer applications and file sharing continued its growth. And there were a few peer-to-peer applications came out such as LimeWire, Kazaa, BitTorrent, isoHunt, etc. Some of them are still active until now.  

Picture from buydig.com


The legal debate surrounding file sharing has caused many lawsuits. According to CBS news in 2009, 58% of Americans who followed the file sharing issue, considered it acceptable if a person owned a music CD and shared it with family or friends. However, the Record companies stated that they lost money because of unauthorized music sharing. There were two-third of 22 studies conclude that unauthorized music sharing has impacted the recorded music sales.


Today, there are still a few software and companies provide file sharing or file holder. As a student, I see the two popular companies are Google and Dropbox. Google has Google Drive application, and Dropbox has Dropbox application (sometimes called 'Box'). These two applications work as a file holder. A person can upload and share files to any one they want. It's very convenient for students and teachers to share lectures or turn in homework using these applications. I can also share projects with teammates so that we can free up some space for my mailbox. I have never tried to share music files via Google Drive or Dropbox so I'm not quite sure if they let us doing that or not.  

Picture from makeuseof.com


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. 

Friday, August 30, 2013

Welcome to IT field

Welcome to my blog...

Students choose computer science (CS) major for different of reasons. One reason is that they can work in different computer-related fields such as computer networking, web development, software engineering, system administration and management, and computer graphic; another reason is high-pay salary. I have chosen CS as my field of study because of two reasons. First, I like mathematics. This propensity would help me a lot in securing a strong technical foundation in this field.  Second, I have thought it would not require a lot of communication skills because it seems like I just need to work on a computer. When I first came to college, after talking with some Vietnamese students, I found out that CS was a popular degree; so I decided to learn more about it. I have taken a couple of computer-related courses to see whether CS would be an interesting field to learn. It has turned out very well: I have not only learned more mathematic knowledge but also liked working on a computer, thus I want to study further in the field.


                                                 Picture from Careerealism.com

I currently study CS at SJSU. This provided practical and theoretical background to my work as a computer programmer. I have been working in the IT field on and off for about ten years. I was surprised by how quickly this profession evolves, both technically and socially. Regarding the technical changes, new programming languages, protocols, frameworks, etc. arose all the time. It took time to both learn and become proficient in each of these new technologies. Thus, one needed to pick those that were most relevant to their company and work environment. The challenge here was to pick those that give one broad marketable skills. One's skill set could become obsolete quickly if one did not keep up with the learning.  On the social respect, there were a lot of students who studied in this field.  Together, technically and socially had created intense competition for jobs and created more stress.