Translate

Sunday, December 15, 2013

Scientific Computing: Studying Earthquakes Using Numerical Situations

Scientific computing or computational science is the process of solving scientific problems using computers. There is a little more to the definition such as creating algorithms and graphs that solve different problems in many different ways but for simplicity the definition is solving advanced science problems using computers. One such problem is the better understanding of earthquakes. Currently we have no way of knowing when an earthquake will strike. We know where one might hit and how powerful the quake will be but not when. This means that we can never be fully prepared for an earthquake that could just shake things up or destroy buildings. However using scientific computing we can recreate simulated earthquakes to show how large quakes damage buildings and prepare for future quakes as best as we can.


A research team at Princeton University has developed a virtual simulation that uses real world data of past earthquakes and recreates them for study. The simulator takes in key data of the quake such as location, magnitude, area around the quake, and simulates what happens when the quake begins. Using this data, scientists can better understand the waves of earthquakes, what happens underground during an earthquake and other geological aspects. The simulator can also take in data such as acceleration and velocity to create imaginary earthquakes suited for specific situations that have not happened in the real world yet. 

Computational science helps us visualize the seismic waves from an earthquake.
Photo from http://earthquake.usgs.gov/


As you can see computational science uses computers to study otherwise improbably scientific problems that would not be able to be solved without analytical power of computers. The simulation also takes several hours to complete once it has received data, which is also an important piece of information about computational science, if it does not take several hours or even days of analytical computer processing then it is probably not computational science.

Sunday, December 8, 2013

Computer Graphics: Steganography

In the past people would mostly create art on portraits and paper. As technology increased we developed the ability to draw using computers and tablets. Using technology you can create art with less strain and more freely. Computers depict pictures using image formats such as "jpeg", "png", and "gif" files that are created using data compression algorithms that can be done on mostly every coding language. The important part here is that images are created using algorithms and are essentially hunks of data. This means that an image can be something other than an image.


Steganography is the process of encoding secret messages that are more or less hidden unless you seek the hidden message. Steganography applies to things such as invisible ink or a hidden picture in another picture, but it can also apply to digital images. It is very possible that an image can contain a virus or malware. All a person needs is an image, a virus as an executable file, and merging program that will easily merge the two files together. This is only one way of merging a virus into a file and there are many more. The good thing is that the image cannot spread the malicious executable from just existing. The image must be executed so the virus can also execute, so it is important to always scan everything after downloading which most browsers and anti-viruses do automatically. Just remember that computer images can also be malicious and to have updated anti-viruses.

Tooltip text that is shown when you hover over an image is also considered steganography.
Try hovering over this image to see the hidden text.

Sunday, December 1, 2013

Communications and Security: Two-Way Authentication

Security is one of, if not the most, important thing in the technological world. We live in a technological age where everything has digital security now such as phones, houses, and cars. Digital security for non-software related objects are generally used for convenience such as not having to carry around keys. The problem with digital security is passwords. Studies have shown that people generally use the same password for everything and will tend to not make them complicated for fear of not remembering the password. A saving grace is the technology called “two-way authentication” or two-factor authentication.

To put it simply two-way authentication is a second layer of security that uses a separate device than the device you are trying to access. For example many banks use two-way authentication requiring you to not only log on normally with a password but also a randomized pin key that they send to a phone. This makes it much harder to hack into an account because it requires someone to have a physical registered device as well as the account information.

There are a few ways that two-way authentication works. One of the ways is quite simple yet effective. You use a physical device such as a digital key-chain or a smartphone with a specific application. The physical device or dongle will be set up to your account and you will enter a given id key. Using an algorithm based on the account and id key, the dongle will produce a pin number that you apply to the account whenever you access it. The pin number is also time limited. What this means is that for someone to hack into your two-way authenticated account, they would need your account information and either the dongle or your id key and the secret algorithm that makes this work, which I’m sure is different for every company.

A dongle showing a pin number.



If you want a secure digital life, either come up with a randomized extra secure password for every account you will ever have, or use two-way authentication which is available in the many popular sites such as: Amazon, eBay, Gmail, Yahoo Mail, LinkedIn, most banks, and many more.

Sunday, November 24, 2013

Artificial Intelligence: Doctors of the Future

Consider the game of Chess. A simple game in looks but has depths of complications that separate the masters from the experts. One of the key components of Chess is the ability to think ahead of your opponent. It sounds easy enough to think two or three turns ahead, but how about ten? Twenty? A computer makes a good Chess player because of the ability to hold and remember large amounts of data, enabling a computer to think ahead numerous amounts of steps.

What "Robot" Chess might look like.


That way of thinking has been expanded to artificial intelligence's in the medical field. Indiana University has created a computer doctor that analyses patient and medical data and attempts to diagnose the patient. According to their study, the computer had a 30 – 35% higher success rate than human doctors in finding the correct diagnoses. There is also the benefit of having a 50% reduction in medical costs. A cheaper and more successful diagnosis seems very appealing, but why does it work so well?


The computer can create very educated guesses because of it can retain tons of medical data, much more than a human doctor can ever hope to remember. The computer also has no bias at all. What I mean is a doctor will look for signs that point to their specialty, a robot doctor will have no such bias and therefor look at all kinds of ailments not specific ones. I don’t know about everyone else, but I would like to be diagnosed by a robot in the future.

Sunday, November 17, 2013

History of Computer Science: The First Computer Programmer

Once in a while it is good to learn the roots of our professions, future professions, and hobbies. According to the Computer Sciences Accreditation Board there are four major areas of computer science: computation, algorithms and data structures, programming methodology, and computer architecture. Now each area is important in its own way, but this post is about algorithms. Now an algorithm is defined as “an effective method expressed as a finite list,” in other words an algorithm has to have an end. Mathematical algorithms are used to teach programming, such as the Fibonacci sequence.

In 1842, a mathematician and writer named Ada Lovelace created what is believed to be the first computer program and is well known to be the first computer programmer ever. Lovelace wrote many notes and algorithms to be computed on the “Analytical Machine” created by Charles Babbage. Her algorithms were the first algorithms intended to be used on the "Analytical Machine" and because of that, her notes are considered the first algorithm intended to be used on a computer making her the first computer programmer. Unfortunately the "Analytical Machine" was never fully completed so Lovelace never had her algorithms tested.

Augusta Ada Byron a.k.a. Ada Lovelace



Ada Lovelace’s legacy has been imprinted in modern times. The U.S. Department of Defense created a programming language named after Lovelace and Google Doodle was dedicated in her honor. It is always nice to remember that programming is not as recent as we think it is and it older than one hundred years.

Sunday, November 10, 2013

File Sharing: The Three Hour Torrent Rule

Torrents, a peer-to-peer file sharing system that almost everyone is familiar with and uses. There is no denying that you have not used it yourself. Maybe you shared a legitimate file within a group of people, but chances are you used a torrent to pirate something off the internet. Maybe you pirated an overpriced school textbook or maybe some song. Either way we have all used torrents for whatever reason, I’m not here to judge.

Logo for uTorrent. One of the most popular torrent clients.



In 2012, the University of Birmingham of the United Kingdom studied the monitoring of BitTorrent clients and found out something interesting. Through hours and hours of data gathering and tracking of torrent monitors, the university had found that it took about three hours to capture your I.P. address. The torrent monitors were most likely owned by the U.S. government and were looking to find people illegally downloading files. However, this three hour time only applied to the top one hundred most popular torrents in the present time and could be significantly faster in less populated torrents if such torrents were being monitored. A popular torrent might be something like media files such as TV shows, music albums and such. The reason for the three hours is because each monitor had to either connect to a peer or request to be connected which takes time. A popular torrent could have thousands of peers each disconnecting and reconnecting frequently. Overall what this means is that the popular torrents are monitored and you if you happen to use one, you should probably limit your download to three hours.

Sunday, November 3, 2013

Data Structures: A tip for my fellow SJSU classmates

If there is one aspect that is important to computer science, it is data structures. I am not talking about some concept that dwells inside everyone such as integrity and willpower, but an actual concept that exists within computer science that everyone programmer should know. I have seen presentations by several tech companies, usually presented by former San Jose State University students, and they all say the same thing, the most important class is advanced data structures aka CS146.

The book that contains every useful algorithm and how to execute them on data structures.


The reason why it is so important is because data structures encompass all of computer science. The basics include things like arrays and trees which are used in everyday code. In more advanced code you need to know how to properly optimize your code using sorting algorithms that is taught in CS146. An example of the importance of a finely tuned data structure and sorting algorithm are search engines. Search engines have to sift through so much data that is it hard to conceive just how much there is. Search engines must sort through an ocean of data and send you the results at minimal time. Using something like bubble sort will not only get you crippling speeds but you will also lose customers if that was your search engine.


To put it simply, CS146 is a very difficult class but it is also very important. If you are a SJSU student do remember to take the class seriously and if you are from another school, be sure to do the same for similar classes.

Sunday, October 27, 2013

Hacking: Not just about standard computers anymore

Hacking is a term everyone is familiar with, but most do not know it very well. A very generic definition people might have is that hacking is the process of bypassing computer securities to do illegal or immoral things. This could be something like finding out someone’s password using obscure means, or changing data inside a video game. Essentially if you do something you aren’t supposed to against a computer using another computer it is hacking. Keep in mind that is also a very vague definition but it serves its purpose for this post.
The popularity and growth of computer science has enabled the modern world to have computer chips in everything. There are computer chips in cars, body parts, and even running shoes. While it is pretty awesome that technology keeps on expanding to everything, there is also a downside.

I'm sure there is a good reason for it's existence.


The problem with computers in everything means that everything can be hacked. For example, computers in cars are designed to not only modernize cards with new gadgets such as built in GPS systems, but to also provide better security and safety. The computers enable the car to be monitored by safety companies and if needed, can be remotely controlled. The problem with this is if someone hacks into the car and forces it to do things that would hurt the people inside and outside, such as suddenly activating the brakes while on the road.


The one upside to this is that hacking is pretty hard and not a lot of people can do it well. It is also possible to trace a hacker so there is solace in that hacking is not a very evasive crime.

Sunday, October 13, 2013

Open Source: Linux. Is it for you?

The three most popular desktop operating systems today are Windows, OS X, and Linux. Out of the three Linux is the only one that is open source. This means that Linux has customizable code that anyone can obtain and change themselves. This customization makes Linux popular among more computer savvy people, but it also has its flaws. One flaw is that Linux has no wall to lean back on. What I mean is that if your copy of Linux breaks because of some add-on, then it is busted. The total customization means that it is impossible to fully prevent a user created add-on from destroying your copy of Linux. Despite the flaws people still use Linux, but should you be using it?

For starters let’s look at what it takes to install Linux. Linux is more or less free, and can either be installed as a regular boot, dual boot, or on a virtual machine. The current form of OS X and Windows makes it hard to dual boot anymore, so virtual machines are the only way to have Linux along with another operating system. Virtual machines are very finicky objects; they tend to have random problems due to many variables. This makes installing Linux on a virtual machine a bit time consuming and ends up with little reward if you don’t really need Linux.

A Linux desktop. Looks pretty at least.


Linux has some good points though. Because Linux is in its purest form as an OS, there are very little other system resources that interfere with other processes. For example, developing on smart phones require either a phone to test code on, or an emulator. Emulators usually don’t run well because they have to be converted many times in short amounts of times. The Android phone emulator for instance runs very poorly on Windows even with optimizations, but runs smoothly and quickly on Linux.

So to put it simply, if you code you should keep Linux on hand for those odd projects. If you are a normal computer user don’t bother going into Linux. The turn-out is not worth the reward.

Sunday, October 6, 2013

Agile: Should You Be Using It?

Programming is hard, messy, and complicated. There is no doubt that you cannot just learn how to program well, especially not at an industrial level. One thing much more difficult than programming is group programming. Group programming involves communication, management, version control systems, and many hours of debugging everything.

Agile is a type of project management that is used in many software engineer and programming fields. Agile uses group management, communication between groups, and communication between groups and clients to create short windows of time where the group will fulfill part of the entire project and deliver it to the client. This time of management creates rapid execution of projects using short term goals and lots of communication between everyone. This way the client is satisfied by seeing how their needs are being satisfied, and the group feels satisfaction by completing a small project in a larger project. One other advantage is that because the Agile method breaks down the project into smaller projects, there is more room change and adjustments.

Agile flowchart from Wikipedia


Now there is nothing without its cons. One such con of Agile is the management process. Sometimes a team should not manage itself, but should be managed by someone else. This is important in larger groups where the team will have a boss who will have their own boss. A large group cannot possibly manage themselves because there will be too many different opinions and options. Another con is that Agile breaks up a project into equal smaller projects, but sometimes that just isn't doable. In that event Agile does not work because the short cycles end up becoming long cycles.


The answer to this blog entry title is that Agile should be used for smaller group projects. There is no deal breaking defect of Agile, and should be used if possible. If not then there’s always other management methods that are surely just as effective.

Thursday, October 3, 2013

LinkedIn and Branding: When LinkedIn Becomes Unsafe

These days everything is all about social media. The professional world is also attuned with the growing social nature of the Internet. LinkedIn is a website that acts as an online, social version of a professional resume. LinkedIn can keep track of your current and past jobs, your education, and practically anything else needed to improve your professional self. However LinkedIn is still a social media website and still has the same dangers.

Stalking is Illegal, cyber stalking is still undecided upon.
According to the Huffington Post, many LinkedIn users have petitioned to create a block or black list function. The reason is because many users are being stalked by former coworkers, bosses, and anyone else who can easily locate a person’s information on LinkedIn. When people use LinkedIn, they must remember that it is still a social media website that stores your personal information and shows it to the public eye.

However it is important to look at the other side of this. While stalking is definitely bad, a coworker or boss “stalking” your LinkedIn profile may not be so bad. It is good to allow potential employers to openly view your profile. People, even former coworkers, will follow someone they might be able to work with again In the future. So remember, treat LinkedIn like any other social media website and keep only professional information on it, and sometimes a person who views your profile a lot is just someone who is interesting in hiring you and wants to make sure you are fit for the job.

Friday, September 13, 2013

QR Codes: Wonderful for You and Them

Quick Response Codes (QR Codes) are a slowly rising popular tech item. Originally created for Japanese Auto Industry, a QR code is able to hold a decent amount of data in a bar code like image. The image itself looks like a bunch of squiggly lines, but they are able to store things like phone numbers and websites. A QR code scanner allows a person to quickly access the data that is inside the code, and the rise of smartphone technology allows everyone to readily and easily have access to a QR scanner. The wonderful part of QR codes is that a person can quickly go to an advertised website without having to type in a long website address, and has changed the way outside advertising works.
A QR code that goes to the San Jose State University Website
However QR codes are also wonderful for people on the more villainy side of the Internet. Due to the growing popularity and ease of QR codes, they are attracting negative uses. One bad aspect of QR codes is that they have no security at all. A QR code is basically just an algorithm rooted into an image that takes you to whatever data is in the image. If a QR code were to take you to a malicious website then your device could end up being infected with all kinds of nasty stuff. According to a study by the Carnegie Mellon University, 85% of people who scanned random QR codes would also visit the website that was in the code. The study also shows that all it takes for someone to scan a random QR code is curiosity. A person could just create an interesting advertisement and add in a QR code that goes to a malicious site, and then you are in trouble.

While new technology is always fun to use it is important to remember to use it cautiously and safely, especially if that new technology connects to the Internet.

Friday, September 6, 2013

Social Networking Security: A Reminder of Why it is Important


Here is a story you may have heard before. On August 3rd 2012, writer for tech site wired.com, Mat Honanhad his virtual life completely destroyed. It all started with a security flaw from the two companies, Apple and Amazon. A hacker was able to gain access to Honan's vital information by presenting small bits of information to Apple and Amazon's customer service. The hacker used information that anyone can obtain such as the last four digits of a credit card or social security number, an address, a phone number, or even an utility bill. All of these things are easily obtainable because they are either asked for frequently by many websites or you can obtain them by going through someones garbage. Apple and Amazon gave the rest of Honan's information to the hacker where the hacker proceeded to destroy Honan's virtual life for the very dull reason of wanting Honan's twitter account name. Despite the lax security from major companies such as Apple and Amazon, Honan attributed his downfall to having all of his accounts "daisy-chained together" and not using "two-factor authentication" for his Google account.This meant that the hacker had access Honan's email and was able to easily guess the passwords to Honan's other accounts including social websites.

What the unfortunate events of Mat Honan gives everyone is the importance of protecting their various website accounts. According to a study done by Internet security company BitDefender, 75% of 250,000 people surveyed used the same password for both their emails and social networking accounts. In other words, if someone had access to just one of your passwords, then they can gain access to everything else if you used the same password. Two-factor authentication is available for some websites such as Google Accounts but other websites won't have such a tool and will most likely not have the same security strength as Google. A popular comic is being passed around the Internet which gives a useful password tip.

Courtesy of xkcd
However this method does not deter someone from using the same password for everything. There is no easy method to remember multiple passwords. Physically writing down passwords is insecure(but you will know who used them), password managers from programs such as AVG and Norton work well but they can also be insecure because you are keeping all of your passwords in one location. There is no easy way to memorize multiple passwords that are also strong security wise, but if you use multiple social networking sites and have a very active virtual life, it might be worth it to do so. Using multiple strong passwords for your various accounts is better than going through the nightmare that Mat Honan has faced.

Friday, August 30, 2013

Who am I?

Hello everyone, my name is Matthew Hwang and welcome to my blog. I am a senior at San Jose State University. My major is in computer science and because of that I know several programming languages such as Java ,C, C#, and Perl. I started programming on my second year of college, so I don't have as much experience as other programmers, but I do try and make up for the lack of experience with hard work.

People think programming is hard and they are right. However, once you learn the basics then the whole thing just "clicks" and you will get it, at least this is how I see it. My experiences tell me that the real hard part of programming is the logical and analytic aspects. You have to know how your code will fit in with other code and constantly analyze everything. I expect the future to hold challenges where I cannot figure out the logical steps to do something and spend hours and hours fixing my code, but that sort of challenge is what I love about programming.

Constant analysis means the "gears" of your brain don't stop.


In this blog I will talk about the technical and analytic aspects of things. As computer scientists, we have chosen to increase our analytic, logical and critical thinking, so we might as well use them.