Skip to main content

Trying to cram all of computer science into one post and failing - Part one

1. It all starts with a bit

It's very common to hear in your CS 101 class, 'Everything is 1's and 0's in the computer world'. Let me explain,
So there is something called ASCII - you can google it. It's just a number assigned to most of the characters (i.e. letters and punctuation) that we use.
Ok, so what?

If you put a bunch of 1's and 0's together, you can represent any number. Kind of like Morse code. Don't worry if you don't know it. The idea is just there exists a mapping between a set of 1's and 0's and the normal numbers that we use. It goes something like this if we take 3 bits:

00 is 0
01 is 1
10 is 2
11 is 3

With 3 bits we can represent 9, with 4 -16, with 32 bits you can represent more than 4.2 billion numbers and so on.

Watch the movie The Matrix. It takes this idea to the next level.
So if a bit(a single 1 or 0 is called a bit) can be mapped to a number and a number can be mapped to a character(using ASCII). We can now represent any sentence ever spoken (in English) using just ones and zeros.
Of course, this sequence is for a computer to understand. They might be dumb but believe me, they are wicked fast.

Let's take this idea a little further. How do we store our music with 1's and 0's?
Sound is just a wave. It can be represented on a graph. Don't believe me? Take a look at it in real-time on this link.
So now the problem is converting this graph into 1's and 0's. It's pretty simple actually. You divide the horizontal axis into a fixed number of parts - say 100. Now for each part, you note the value on the vertical axis. So for 100 parts on the horizontal axis, maybe you get something like this for the vertical axis.

[54,87,32,98,132,85,31,78,235,941,79,23,14,412,6,34.... 100 values]

And we know how to convert number to binary (i.e. 1's and 0's).
Boom! You can store audio now.

Raising the bar. How can we store your favorite movie?
A movie has two parts - audio and video. We already saw how to save audio. A video is a bunch of pictures saved one after the other and then played very fast. Kind of like a flipbook. It's just that simple.

So taking a step back, we need to save a picture in binary.

We'll reverse engineer this answer. i.e. we will look at to solution and then try to figure out how we arrived at it.

Take a look at your laptop or phone or literally any digital screen very closely. You will see 3 color lights. Red, Green and Blue stacked beside each other - there are thousands of them. If you have a cheap display, it is easier to see as these lights are less closely packed in cheap displays.
So these lights light up at different intensities and with a little bit of physics magic called interference, generate different colors. Yes, it's either magic or a physics class to understand interference. Your choice.

So now we have a color, just like a painting, we put a bunch of colors with different shades together to get a picture. If we are able to store the brightness of the 3 color lights (Red, Green, Blue), we can store a picture.

It's a hell lot easier now. Let's say each color can go from a range of 0 to 100 in brightness. So now it just takes a few thousands of triplets of 3 integers to save a picture in your pocket. And guess what these numbers are converted into for the dumb computer to make sense.....

1's and 0's

Comments

Post a Comment

Popular posts from this blog

Mac theme on Ubuntu 17.04

1. Install Cario-Dock sudo add-apt-repository ppa:cairo-dock-team/ppa  sudo apt-get update sudo apt-get install cairo-dock cairo-dock-plug-ins 2. Tweak Tools sudo apt-get install unity-tweak-tool sudo apt-get install gnome-tweak-tool 3. Download the theme Download  Gnome-OSX-II-2-6.tar.gz Just copy the extracted file to a '.themes'-folder you make in your home directory.  Then use Tweak-tool to select the GTK and shell theme. You may need to log out and log back in for changes to take effect! 4. Get the Icons sudo add-apt-repository ppa:noobslab/macbuntu  sudo apt-get update  sudo apt-get install macbuntu-os-icons-v9 sudo apt-get install macbuntu-os-ithemes-v9 Just copy the extracted file to a '.icons'-folder you make in your home directory.  Then use Tweak-tool to select the icons. 5. For Animation effects Install and configure -  compizconfig-settings-manager sudo apt-get install compizconfig-settings-manager

Part 0: Introduction: The pragmatic programmers guide to Ruby and Ruby on Rails

Recently I had the opportunity for contributing to a project with which I really connected. The project started off with Ruby on Rails for both frontend and backend but now it is rapidly shifting to React on Frontend and Rails on the backend. Coming from a Golang world where things are simply what they are supposed to be, Rails was filled with surprises. My team is very supportive in answering my stupid questions but I've decided to double down on this beast. This is what I know about Ruby so far.  1. Ruby on Rails is known to be a 'developer friendly' framework - At the moment I disagree with this. Maybe once you get to know the framework well it is a breeze, but right now Rails is simply doing things without telling me. That is just confusing. 2. Rails documentation is really good - I had an internal BootCamp about rails(in my current company) which was a bit helpful but nothing beats the documentation. So for this series, I'm going to go through the documentation pa