About Me: I am currently a Computer Science major at San Jose State University.

Sunday, December 15, 2013

Scientific Computing: Simulating the Human Brain



The field of Computer Science is an extremely diverse field, and can be applied to many different areas of study. In addition to writing programs that we use in our day to day lives, computer scientists have developed extremely specialized programs that help researchers make complex calculations, help extrapolate data, and model complex systems.
http://www.redorbit.com/media/uploads/2012/11/tech-113012-002-617x416.jpg
One such system, which has proven to be extremely difficult to model even to this day, is the human brain. Many teams have tried tackling this challenge, like IBM's Watson's ability to search its terabytes of memory for a solution, but it seems that the Computational Neuroscience Research Group of the University of Waterloo went a step further. They attempted to create a computer system that mimics how the human brain solves problems. SPAUN, which stands for Semantic Pointer Architecture: Unified Network, is a computer that contains over 2.3 million simulated neurons. Those neurons are patterned into facsimiles of different parts of the human brain, like the prefrontal cortex (memory) and the basal ganglia and the thalamus (motor control). When tasked with remembering a sequence of numbers and writing them down, SPAUN had a success rate of 94%. While there are many computers that can do these tasked more efficiently than SPAUN, it is the fact that each of the simulated neurons is communicating in the exact way that real neurons do.
While this sounds like a very stellar achievement, we must keep in mind that we are still years and years away from anything that completely simulates the human brain. Even SPAUN is a very limited machine. The 2.3 million neuron count is puny compared to Watson’s, and each task that SPAUN is given takes over two hours to complete. And if that wasn't enough, SPAUN is not actually capable of learning or adapting. Its neurons are hard-wired and incapable of dynamic modifications of the kind that real neurons. All that said, this is still am impressive feat, and I
am very interested in the future of this project.

Sources:

Tuesday, December 10, 2013

Computer Graphics: Voxels vs. Polygons




During the 1990s, the video game industry had two competing methods for visualizing and building the virtual world of a game: voxels and polygons. Both had their upsides and downsides, but at the end of the day, polygons won out and now nearly every single modern game uses polygons to represent characters, objects, and the environment. But what are polygons and voxels, why did polygons win, and are voxels coming back into use?

http://upload.wikimedia.org/wikipedia/commons/6/65/Voxel-polygon-alleycats-v01.gif
Voxels on the left, Polygons on the right.
In order to define a voxel, we need to also define what a pixel is. A pixel is short for Picture Element, and they are used to represent a single point in an image. A computer monitor is divided into tens of thousands of pixels, arranged in columns and rows. There are very many pixels in any given monitor; you would be quite hard pressed to find a specific pixel. In monitors, each pixel generally stores some kind of color value, generally of the RGB type. A voxel is then short for Volume Pixel, which is essentially a 3D pixel. Voxels are generally represented by a cube, and each cube is one small part of a whole 3D image. Voxels together are used to simulate volume and give an image a quantifiable depth. Polygons, however, are quite different. First you start with at least three lines which connect a series of coordinates together. Each coordinate would have, depending on the type of game, an x, y, and z portion, which determine the shape of the polygon. You can then apply polygons to a wire frame skeleton of the object you with to model, then apply phong shading or a texture map to the shape to get a final object that a play can interact with.

So now that we all have a basic idea of what each type is, why did polygons beat voxels when it came down to designing a game world? The answer can be narrowed down to two reasons: memory and visual fidelity. When it comes to memory, polygons beat voxels with almost no effort. Since polygons are usually wrapped around a wire frame model, each object that uses polygons is completely hollow. We do not need to know what is inside the object, so the game generally does not bother putting anything in there, which saves memory. Voxels, on the other hand, are present throughout an object. Each of the voxels, from the ones representing the skin of the object to ones in the middle of it is held in memory. Each when an object is manipulated, each individual voxel needs to have its position updated, which take a lot of processing power to do just for a single object. Just imagine a game where a hundred voxel based boxes get thrown around by an explosion, each and every voxel will have to be updated constantly. The issue of visual fidelity also ties somewhat into the memory issue. When creating a person, polygons, through a number of texture maps, shading techniques, and anti-aliasing, can create a surprisingly realistic model with very low overhead. But in order to match that with voxels, we will have to create many extremely tiny voxels to simulate the non- uniform surface of a person's body, which is difficult to maintain due to memory and processor constraints. As time went by, we began to see a phasing out of voxels as a medium to display video game worlds.
http://cdn2.planetminecraft.com/files/resource_media/screenshot/1202/2012-01-14_153552_1214597.jpg
This is just one of the many creations made by user the players of Minecraft: CVN 65, The USS Enterprise.
While this may sound like a bleak outlook for voxels, they are still being used in a number of ways. In medical fields, voxels are being used to render 3D models that are created during MRI scans. Doctors use these static models to essentially examine the body from the inside-out. We are also seeing a bit of a resurgence of voxels in the video game industry. One of the most well-known sandbox games on the market, Minecraft, uses voxels to represent terrain. Voxels are being used to represent meter-sized cubes of dirt, wood, rock, etc. that players can pick up and place, creating vast sculptures. The game even gets around the memory issue by only storing the values of voxels near the player character in memory, and loading and unloading more voxels as the player character moves around the environment. So while the voxels are nowhere near as prevalent as polygons, they have still found their own niche in the realm of computer graphics.

Monday, December 2, 2013

Communications and Security: HTTPS and you



As the Internet becomes more and more prevalent, many activities that we used to do in person, like shopping, have moved online. According to a Nielsen survey, in 2012, 59 percent of the respondents stated that they now perform most of their shopping online. Whenever I need to get some parts for my computer, books to read, or some games to play, I always choose the internet over brick and mortar stores. Since so many people make their purchases online, there needs to be some sort of way to safely send credit card information to the seller; otherwise some mischievous hacker might grab the information during the transfer. In order to prevent this, a different type of HTTP called HTTPS (not very creative were they?) was implemented, and it uses SSL, and later TLS, to encrypt any sensitive information.


Source
There are a number of steps that happen when a browser wishes to connect to a TLS/SSL secured server. The first step in the handshake is for the user to and the server to exchange some session specific data, like what version of TLS/SSL they are using, some security settings, and the server's digital certificate. With that information in hand, the user attempts to authenticate the server. If the certificate comes back clean, then the transaction proceeds, but if the browser was not able to authenticate the server, the user is notified and asked if they wish to continue on. I really would not recommend continuing for the internet is dark and full of terrors. A key is created by the user, once the server has been verified, and that key is then encrypted via the public key and sent to the server. Once the server acquires that key, the client will then notify the server that all future communications will be encrypted by that key, and then the session can begin. That is a basic look at how your credit card information is safely sent across the series of tubes that we call the Internet. If I missed anything glaring in my explanation, please let me know; network and computer security is not my specialty.

Couple of sites that both provide information about TLS and certificates for servers: