Saturday, December 14, 2013

Scientific Computing: Computational Physics

After years of gaming someone showed me a spreadsheet and my life was changed. I discovered for the the first time that computers can be used for much more than playing a video game. One of the first uses of major computational computing was the calculation of real world variables and the dropping location for a bomb. Scientists found that they could use complex physics formulas and instantly calculate those formulas. This opened up computing to many new and exciting fields. Not the least of which is computing physics.


The first electronic digital computer was built in a basement of the physics department at Iowa State University.  The computer was invented by a man named Professor John Atanasoff.  In fact most major jumps in computing were made by physicists.  It just so happened that these physicists were simply experimenting with ideas and created a computer.

Professor Charles Bennet, IBM Fellow makes a great argument when he says that for a long time physics separated from computer science and we stopped making great computational advances.  We thought that we had finally found the answer and stopped looking.  But recently physicists have reentered the computer science community to work on quantum computers.

In a normal computer every bit has two modes, on and off.  This is a simple way of describing binary.    In a quantum computer each bit would be able to hold many modes, not just two.  A company known as D-Wave created a quantum computer where each bit can hold two states simultaneously.  This allows for a total of four modes, (0,0), (0,1), (1,0) and (1,1).  Because of this, each bit can provide twice the information of an ordinary bit while computing at the same speeds maybe faster.


Physics and computers have a long relationship and more recently this relation will begin to grow to what it once was.  Maybe in the near future we will see some more great and wondrous advances in computing that will provide answers to bigger questions.  Or perhaps, take over the world.

Computer Graphics

Computer Graphics is a term to describe the drawing of objects on a display.  The original task was to change tiny little squares from on to off and back.  The display would be just black and white (no grey scale) and these tiny boxes, known as pixels, would turn on for white and off for black.  This allowed for text, pong and the beginning of the personal computer evolution.  Soon after, inventors discovered they could shade the pixels to be brighter or darker, ultimately creating grey scale.


Today, computer graphics have jumped leaps in order to build great games or movies.  Games have provided many advances in light shading and real world physics.  Calculations are made to determine what boxes get changed to what colors.  In a video game, the user can make decisions that can effect the the angle or lighting of a particular object.  So the computer has to make split-second decisions on what colors the pixels need to be.  These pixels are put together in an attempt to make things appear real world.



Computer graphics also has many real world applications.  The medical field has made great advances as a result of computer animations.  Objects can be created 3d representations on a computer and the doctors and scientists can get closer and better look.


Computer graphics will continue to make great advances to make visual representations more and more realistic.  We have come a long way from black and white boxes and a screen to the high quality and fast visual representations.  It will be exciting to see what comes next.

Tuesday, December 10, 2013

Communications and Security



In World War 2 it became apparent that the Japanese were able to crack the communication codes used by the military.  So the US Marines came with a great idea.  They could use communication codes but also use Navajo Indians to write the message in their original language.  Even if the Japanese cracked the code they would not be able to understand Navajo.  These troops soon became to be known as "Code Talkers."

Today, we still encounter the problem of bad people trying to collect our information.  Imagine if someone could see everything you were doing on your banks website.  They would be able to see your password, account numbers or billing information.  Imagine the damage that could be done.  So computer scientists teamed up with cryptographers to create a communication security that would protect users from malicious attacks.


The most common type of encryption is a symmetric-key encryption.  This uses a certain type of password that is a 
specific size that both the encoder and the decoder need in order to decrypt the message.  Anyone who obtains the information without the key will just see gibberish.  These keys have been anywhere from just a few bits to infinite in size.  The larger the key the more impossible the code is to break but also the longer the message will take to decode.



Some companies and even the militaries around the world have taken this encryption to the next level buy using physical objects.  Things like fingerprints or even keys can be used.  A version used by the US military has a physical key combined with a clock element.  The computers on both end must have their clocks synced.  Then both users must enter and turn the key with in seconds of each other in order for the computers to produce the same temporary encryption key.  The message is sent and received with no issue.  This makes the key difference every time while also reducing risks that can be caused by lost or stolen physical keys.

Your information online is very important.  It is our responsibility to ensure it is dealt with in a safe and secure fashion.  Please ensure everything you do is secure before transferring important information.


Artificial Intelligence




When ever the topic of artificial intelligence comes up the first thing that comes to mind is "Skynet."  In the movie "Terminator", artificial intelligence has become to advanced that it decided the world would be better off without people.  In a similar fashion, the short story that later became a movie "iRobot" displays how an artificial intelligence eventually came to conclusions that were dangerous for mankind.

Websters' dictionary defines artificial intelligence as "the power of a machine to copy intelligent human behavior."  I believe it is slightly more than that.  I would like to define it as the "the power of a machine to make decisions that are not pre-defined."

In Websters' definition we can say that a program that nearly asks a question and provides a limited number of responses in artificial intelligence.  For example, the site http://en.akinator.com is a 20 questions game where the makers have built an elaborate database that can narrow almost anything down in 20 questions.  But this does not display the computers ability to think.  All of the decisions are pre-defined.



Siri is a much better example of artificial intelligence.  Siri can't take over the world or exterminate humans in anyway, but the more people use Siri the better Siri can provide answers and understand people.  The developers at Apple designed her to be able to increase her intelligence and become more useful on her own.


I don't believe we will end up with some kind of Skynet and artificial intelligence can be very useful and helpful.  It provides us with many tools and ways to increase our knowledge.  Maybe someday we will see a significant improvement in the medical industry as a result of artificial intelligence.

Friday, November 15, 2013

Data Structures

My room may look messy but I know where everything is.  I know this is the motto of every teenager in the world but it's kind of true.  I placed everything in a particular place so I know where to go get it.  Unfortunately computers don't tend to follow my organizational style.  It's probably a good thing that it doesn't.  Data Structures are simply the methods used by computers to temporarily store data to
be used.

We store data in real life in various ways depending on what the data is being used for.  People will use file boxes to save old bills or tax documents and shelves are used for books or dvd.  Depending on what it is you are storing you have to choose the best way to store that information.  Data Structures are simply the shelves and file boxes of a program in a computer.

There are three major types of data structures: primitive types, composite types and abstract data types.

The primitive type is very simple.  Information is stored as a single element such as a number, character or a boolean (true or false).  These primitive data types can only hold object at a time and if a new object is placed into the storage the previous object disappears forever.

The next type is the composite type.  The composite type is simply multiple primitive types place in one object usually but always called a struct.  The composite type lets the programmer add as many primitive types as the programmers want but just like in the primitive data structure it only holds a finite number of objects that were predetermined by the author.  And just like in primitive data types if one of the objects is over written the previous data is lost forever.

The last is abstract data types.  Abstract Data types use creative programming techniques to allow a flexible and possibly infinite number of primitive types to be stored.  The easiest of these is the Array.  An Array is just a list of objects numbered from 0 to the limit of the code.  Each object can be over written but doesn't need to be as the programmer can simply keep adding more information on to the end.

There are tons of different types of data structures that can be used and picking the right one is just a matter of what you need to use the information for.  A book or taxes it doesn't matter as long as you organize the correct way.  I should probably clean my room.


File Sharing

When the US military is over seas there are no laws regarding the illegal downloading and sharing of media.  I guess they figure that they will allow anything to go in this area in order to keep the troops entertained and out of trouble.  I returned from Japan with an external hard drive of over 400 movies all legally obtained.  When people hear the words "File Sharing" their minds immediately land on Napster and illegally copying music but that is only the most media frenzied type of file sharing.

The reality is that the transfer of information from one user to another is a challenge that has plagued us since early home computing.  Now we have a number of tools that make sharing information fast and easy.

Social Media.

This is a great way to share something small very quickly.  Twitter and Facebook allows the user to post a short statements, photos or links to anyone who cares to look at it.  We don't have to send emails or texts to share this information nor do we need to care if someone sees it.  This has made it very convenient to share small amounts of data.

Documents.

The next greatest challenge to file sharing has been documents.  Does everyone remember fax machines?  Well I for one am glad that tools like Google Docs exist.  Not only can I post a document for other to see, I am able to set some rules on how the files are viewed or edited.  The user can share it for viewing only, allow editing, or even allow collaboration so that multiple users can edit a document at once.  Once Google Docs started to bridge a gap we have had to deal with since computers made into homes, Apple and Microsoft have built there versions of cloud documentation.


Large files.

The previous two tools are very nice and cover most of the file transferring necessary for the general user but what about those small amount of large file transfer?  There have been a number of great tools to help transfer large images but the two that have made this convenient and easy are Dropbox and Google Drive.  With an easy to install tool the user can setup a folder on their computer and anything that goes in that folder is automatically sent to the cloud.  Once the file is on the cloud the user can do what they want with it after that.  Other users can connect and download the needed files.

Code.

My Favorite type of file to share is code and I love to do it on GitHub.  GitHub allows users to post code, copy code and collaborate on projects to easily build projects.  GitHub cuts out the confusion brought on by trying to email or transfer code and makes it easy to build powerful projects with people you may have never met.

Although much of file sharing is illegal transfer of music, the majority of it is the legal and productive form.  These many tools make our projects, work and home life much easier when connecting to other people.

History of Computer Science

My computer science history started with a Mac II. When my dad bought it for $5500 I was so excited about the possibilities.  I mean I heard about computer games and now I could see for myself.  And lo my dad just wanted to do this thing that is still foreign to me, I think its called word processing?  Since this sweet piece of rockin machinery I have a few other computers.  Today I own a laptop which cost me about $1000 and a desktop which was also about $1000 and there is not a thing these computer cannot do.  And I think they also do that thing, word processing?

Computing in its simplest form is simply logical evaluation like: if this then that.  For example, if its raining then I will take an umbrella.  The first computer that we know of is the Antikythera Mechanism.  It was used to chart the stars by making some simple mathematical decisions.

Computing really started to come in its own by the US Military in order to compute artillery attacks.  A giant room sized computer was built in order to plug in different variables like range, elevation and wind; the computer would then output the necessary settings to plug into artillery.

Once these advanced forms of calculation started to make more of a public appearance, large companies began to put a serious investment into technology.  Companies like IBM took advantage of the sudden interest in computing and put all their effort into corporate us technology.

One of the first operating systems to be widely used is the Unix system.  Unix allowed companies and a small number of individuals to build unique programs limited to anybodies imagination.  Today, Apple's operating system, OS X, is built from a very close version of the original Unix.  Linux is also a more advanced build of Unix.  Microsoft, although they decided to reinvent the wheel a bit by building their own computational foundation, still followed the same structure when creating Windows.
Computers have come a long way from tubes and stone and Computer Science is moving faster today than ever before.  I am more excited than ever to see the new changes that are making computing cooler and cooler.  I can't wait to see what happens next!

Hacking…what is it? What does it mean?


To Hack is defined by Merriam-Webster Dictionary as "to gain access to a computer illegally."  I am going to take it one step further and say that it is "to gain access to computer data illegally."  Something as simple as guessing someones Facebook password in order to get data that doesn't belong to you is also hacking.  The average computer user has a warped view of how hacking works.  With movies like The Matrix, Hackers and WarGames we have this idea that hacking has a cool visual interface and if you are capable of typing fast enough you can get any information from any computer you want.  There are three major types of hacking that are popular today: website hacking, corporate hacking and trojans.Corporate hacking is the next largest form of hacking.  Because of how profitable identity theft has become, hackers are looking for ways to collect more people information at a faster rate.  Several major companies as list by HotforSecurity include AT&T and even Google.  Hackers are collecting user data in order to open credit in the users name.

As a Computer Technician I get to see my fair share of fun people.  But my favorite has to be the this one lady that kept coming back once a week to get her computer completely wiped.  Each time I would ask her "what's going on today?"  And her reply would always be "My computer got hacked."



Website hacking.  Recently an organization that calls themselves Anonymous has been breaking into websites in order the bring them down, even if its just for a short time.  Anonymous was born from the governments attempt to start taxing and regulating the internet.  So far they have targeted large companies or government organizations that support this anti-free-internet point of view.


The last form of hacking is trojans.  Since most people have no idea how to actually break the security of a computer, trojans have become popular by the younger crowd to spy and mess with there friends or enemies.  A group of poorly guided programmers built some software that attaches to anything the user wants.  Someone can add this software to a song, photo or another app and send it to there victim.  When there victim opens the file the malicious software installs on the computer and allows the attacker to see everything the user is doing, read all key strokes entered and even take over the computer.


What the moral of this story?  Its basically this: Your computer is not being hacked once a week by a group of shady people you never met; but that doesn't mean you shouldn't be careful about what you download or what information you put in your computer.  Its not hack happy world out there but please take care of your self and your information.  After you do that, have fun!  The internet is a fun place.

Tuesday, October 15, 2013

AGILE, show me.

 I recently was working on a web site for a friend of mine.  He continually asks me how my progress is going and he generally wants to see what has been completed.  I tend work on the back end of my projects first and then create a user interface that connects with the backend workability.  I hadn't completed any of the user interface but he demanded to see the site.  I showed him the various tools I had built and described to him how they would interface with the user.  He wasn't at all impressed with my work.  He was looking to see a neat and shiny product that would impress him, and all he saw where numbers in a terminal window with no magic.

Agile is a lightweight development methodology that focuses on customer stories for production.  Agile can be used in variety of ways that can be tailored to individual needs and cases.  But what really makes Agile shine is its tools that allow each member of the production to team to work more efficiently.  For now I am going to skip how Agile works and I am going to proceed to sell you the idea.

Client:  With Agile the client will be given various land marks for production.  They will be able to see what things will be completed and when.  This allows them to have a good expectation of how things are going and what to expect when asking to see the current iteration.  Agile also allows the client to explain to the production team how the product should look and act without needing to have any technical knowledge.

Production team:  Agile allows the production to take the "stories" that the client provided and decide the best approach to completing this task.  It sets up goals and landmarks to help focus production and allows collaboration between the team.

Managers:  Agile allows team managers to see and follow progress.  They can easily report the status of the project and adjust for unforeseens along the way.

Customer:  The end user will be supplied with a great product that was quickly released.

I would have been able to set a better expectation of the site I was working on had I followed some of the simple steps that Agile provides.  Finding ways to collaborate, while quickly turning out a product, while supplying the "higher ups" with the information they want and all the while keeping the client happy has been a long and timeless struggle.  Agile provides a solution to this problem and I for one am a fan.

If your interested in looking to Agile and the way it works, watch the video below.

OPEN SOURCE: the only kind of Source.

As a teenage I was determined to build my own computer.  My parents had an old iMac and this thing could not play a video game to save its life.  So my solution was to save up and buy a computer piece by piece until I had made my gaming machine.  What I didn't count on was that after it was built I would need to have software to put on it.  I couldn't as much as write a paper on my new beauty.  So I did some hunting and found my answer in Open Source.

Open Source software is simply projects where the code is available for users to look at and or change. This allows large groups of people who may or may not know each other to work on the software and make it better for no more than a bit of glory.  As a result the software is free and available for anyone to use.  A couple of well known and useful open source projects are as follows:
Ubuntu is an entire operating system build off the Open Source platform Linux.  Anyone can download and use it for free.

Open Office is a free and open source project that is attempting to replace Microsoft Office.  The original developers thought that office was to over priced for the simple software that it is and created an alternative.

Apache is a web server used by a majority of the internet.  It now comes preinstalled on every Apple Computer because of how powerful and useful it is.

Open Source projects like these have reduced the cost of competing software, made it easier for small business to cheaply operate and have allows millions of coder to collaborate to create great work.  I use Open Source software when ever I can, and I highly recommend you do as well!


Friday, September 20, 2013

LinkedIn and Branding: What's my name!?

I googled my name once or a lot more.  Apparently I make draw concept cars, I was in a movie call DisOrientation, and I take amazing wedding photos.  In truth I'm much more boring than that.  Nothing came up in my google search about an aspiring programmer named Andrew Sheffield who is just trying to get his Computer Science degree at San Jose State University.  That is, until now.  I recently googled my name once more and behold, the top result!  For those to lazy to click that link, that is a linked in page that displays me, the one true Andrew Sheffield, at the top of the list.  This little adventure into my digital me got me thinking.

When an employer types your name in google, and I honestly can not see a scenario where they wont, what will they find? What do you want them to see? Davidhallsocialmedia.com conducted a study and discovered that 92% of employers search online for details about their potential employees.  LinkedIn is the perfect location to get your name out there, while supplying the appropriate information.

In this digital age resumes make less and less sense.  Why look through countless pages of data that may or may not be accurate, when you can just get online and search for the information you need.  wbaltv.com says that the number one choice of employers to find candidates in LinkedIn.  With the ease of filling out a few forms on LinkedIn.com you can be one step closer to employment discovery.

I am not at the top of a google search if employers do decide to "stalk" me online and I think that is fantastic.  And when they do stumble upon my profile they will see only the best experience, schooling (shout out to SJSU) and skills that can be had.  Check it out for yourself: linkedin.com/in/andrewsheffield.

Friday, September 13, 2013

QR Code: Stop making people type!

I picked up my phone and noticed my girl friend had sent me a text.  I slide the screen up on my sweet samsung slide phone to reveal a number pad.  Using, my opposable thumbs I "quickly" jammed out a reply.  An elderly man behind me noticed my rapidly working thumbs and exclaimed "I don't understand how you kids do that!"  I chuckled and thought to myself how silly this old man was.  I never thought I'd see the day when I became annoyed at the time it took to type on a normal keyboard.  With the advances of smart phones and the copy and paste, I find myself wanting quicker and faster ways of transferring information.  In todays world everyone and everything has a webpage, email address, Facebook, Twitter and the list goes on.  What if, and I'm just reaching here, what if our phones could read the information and take us to those locations without any typing?  How awesome would that be?  And thus,viola, QR Codes!

According to Statisticbrain.com the average attention span of a human person is 8 seconds long.  That means if a user has to type out something long or read to much they may lose interest in the information.  So we have made a flyer with some awesome logos, the text pops and the user is drawn in and becomes interested in the information, next we need to have a way for the user to return to the information when they need and perhaps the ability for the user to collect more info if needed.  QR Code readers do both of these things.  A user can quickly hold up a cell phone and collect the address of the page with out much pause.  Code readers can store the data for later or take the user to the site.
Scanlife.com says that 39% of young adults have a scanned a QR Code at some point.  As this becomes larger and as people start collecting more data by QR Code, it will become more necessary to add them to your site, business card and advertisements.

And the best news is...it's free, easy AND takes up a small amount of real-estate!  http://goqr.me is my favorite place to create a QR Code and youtube.com can teach how to edit them and make them look cool!

In your next flyer try adding a QR code and see if anyone tries it.  You may just be saving some sweet, young teenager, who someday has dreams of becoming a thumb wrestler.

Friday, September 6, 2013

Social Networking and security. . .or lack of when promoting your brand.

Social media is a great tool that allows its users to communicate, share and build community quickly, easily and over great distances.  Because of the great benefits in can provide users at no cost, it allows for a constant stream of data and connections that can be made by people and companies to promote their brand.  Facebook, as an example, allows users to make ads that can be pointer to specific groups, interests, locations, searches, ages and the list goes on.  All of the information can be extremely helpful and useful in promoting a product and service but it is also now available for anyone and everyone to find and exploit.

The chart by Barracuda Networks shows the problems that users most experience as a result of joining social networks.  Although, this may seem scary and overwhelming, the things you can do to protect yourself is quite simple.

You can begin by creating a Professional identity.  Create a new email address and new accounts for every site you wish to be apart of.  This will allow you to start fresh and know that you haven't yet entered compromising data into these site.  Then ensure you do control the information that goes into these sites. Keep it limited to your email address and PO box if mail is necessary.  If you have to send a phone number make sure you are not publishing  the number for all to see and you that you trust the recipient of the number.

Secondly, don't fall victim to phishing scams.  Identity thieves will send emails or messages within social media sites that look and seem official.  These messages are intended to trick you into sending your information back to them.  These scams are easily bypassed if you know what to look for.  These emails and messages are rarely if every sent by an actual company.  Its always a good idea to not click any links inside these messages, even if they are official.  I go straight to the site and log in as normal.

Lastly, I like to start fresh whenever I switch from doing anything person to anything professional.  I usually reboot my computer, log-in under a different account and ensure I write everything carefully and with much thought.

With all of the technology available it is becoming easier and easier for thieves to steal identities.  And once it is stolen, your professional and financial lives can be destroyed.  It is our responsibility to protect ourselves and ensure we can coexist in this social, online world.

Thursday, August 29, 2013

Welcome to my Blog!

I spend a lot of time working on various projects and learning quite a bit about whatever idea pops into my mind. I have never posted what I have learned for others to read or even to remind myself later of my discoveries. So I hope to use this space as a record of my technological adventures for my use and your enjoyment.

I am first and foremost a father. My daughter, Abigail, is 3 years old this month and she loves to dance. I spend most of my time with her finding ballet recitals on youtube and watching her dance around the room. She is my inspiration for going to school and getting my degree so that I may make a better life for her.

Secondly, I am a United States Marine. I spent 5 years in the Marine Corps, serving my duty as an infantryman. My first post was protecting an aircraft carrier here in the United States while it was being refueled. I then went to Guantanamo Bay, Cuba and participated in the fence line protection. I have also been to Iraq, Japan, Thailand, Philippines and Australia.

Thirdly, I am a programmer. Most of my free time goes to trying to learn all that I can in various programming fields. My greatest coding passion is in web programming. I enjoy discovering new technologies that are constantly making the web programming world faster and more powerful, such as css3, less, backbone, stackmob, Heroku, Node etc. If you share this interest in web programming you should check out the Web_Design subreddit.

Lastly, I am a student at San Jose State University.  I am making my passion work for me by learning everything I can about what I am already interested in and getting my degree in Computer Science at the same time.  Various professors and classes that I have received at SJSU have pushed my coding to the next level and I am always excited to see what SJSU will have in store in the next semester.

Thank you for visiting my blog and hope you enjoy what you find.  Please leave comments so that I may improve my blog and further my career as a programmer.