What is an algorithm? What is the Cloud?

Robert Desmond
4 min readJan 9, 2020

A lot of people think that Software Development is complicated and you have to be some superhero to be able to program. I want to dispel these myths by clarifying a few buzz words that normally confuse people!

Binary

Binary is a way of counting with just ones and zeros. Normal (decimal) numbers, e.g. 1,2,3,4…10,11,12…99,100,101… are a different way of counting.

When you get to a 9, you add a new 1 to the front and then a 0.

The same happens in binary, but it looks scary because it is not easy for humans to read. But computers are really good at it.

1 = 001

2 = 010

3 = 011

4 = 100

5 = 101…

Why binary?

Computers store information as switches that are either on (1) or off (0). i.e. Magnetic disks that are positively charged (1) or negatively (0).

These data ‘bits’ are physically very small, but remarkably easy for computers to process.

This might sound great for doing mathematics (which is what original computers were used for) but how does that translate to me using my phone?

Text

Letters can be mapped to numbers, e.g. in a standard ASCII mapping: A= 65, B = 66, C = 67…

Images

Images can also be mapped in a slightly more complex way of combining a list of pixel colours, e.g. a pixel is made up of Red Green and Blue (RGB) in a certain ratio.

100%, 0%, 0% maps to pure red for example. You can make all colours by combining these in different ways.

Videos

Videos are simply a collection of images. You can save the amount of data needed by only storing the difference from one frame to the next.

Algorithm

An algorithm is simply a set of instructions. Think a recipe for food.

Computer instructions are made up of very simple actions, but you can build more complex concepts by adding lots of them together.

The most common instructions are:

  1. Storing data (e.g. variable x = 7)
  2. Go do some other bit of code (e.g. go execute line 22)
  3. Checking the data (if x = 7 go do this…)
  4. Looping (while x > 0 go do this…)

From these building blocks you can build some incredibly complex things.

Websites

Websites are a way of displaying data. We use another standard language called HTML (Hyper Text Markup Language) to write websites. (There are abstractions of this language with some tools to make things easier to code).

A html document contains elements such as headings, paragraphs, lists (bullet points or numbered) as well as images and videos.

It looks something like this:

…<h1>Hello Heading</h1>

<p>This is a paragraph</p>…

We also can change how these look using styles (CSS: Cascading Style Sheets).

e.g.

font-weight: bold;

Client

Your phone, tablet or computer is known as a client. Basically it is the device that requests the ‘web page’ using the internet.

You might also be familiar with many different client applications: Chrome, Firefox, Safari and the incredible Internet Explorer.

Server

Your client will request a web page from a particular address (e.g. www.google.com) which will be routed to the correct computer, which runs that website and sends back the HTML web page.

The Cloud

A server is a computer (normally sitting in a data-centre).

In the old days (i.e. a few years ago), you might have one computer, or hire out part of one to serve your website. You would do this with a hosting company making sure it doesn’t lose connection or power.

These days, computers can be moved virtually. This means you can copy all the programs that are running on a particular machine, and put them on another one easily.

The cloud is simply a description of your hosting company (probably Amazon Web Services: AWS) managing where the computer is actually running. You don’t care if it is on one particular machine, you just care that it is running.

So the cloud is a bank of computers in data-centres, but you don’t know which one will necessarily be running your website.

I hope this clarifies some of the scary looking terms that people use when talking about computers!

Leave a comment if you would like some more covered!

--

--

Robert Desmond

Software Consultant, Keen Cyclist passionate about Holocaust Education