First Things First: Establish a Coding Foundation
The first step in learning anything is to learn about the fundamental concepts around it.
Don’t feel uncomfortable asking basic questions; even if you think it’s dumb, it will count.
Every question is an opportunity to learn something new.
And if you take it, you’ll get yourself a solid foundation upon which you build your new knowledge.
But if you ignore it, you miss a piece of knowledge that could be a game-changer at some point in your career.
So, never let anything slip through the cracks.
It makes sense to ask questions like:
- How does the Internet work?
- What is the Web?
- If that is HTTP, then what’s HTTPS?
- What is the difference between a website and a web application?
To be honest, I look up many questions every day that might sound simple to other people.
We are humans, not encyclopedias.
Mozilla’s website has a Web Glossary you can use as a reference to lookup Web-related terms.
To get you warmed up, I begin with five fundamental concepts you need to learn when starting web development.
Then, I’ll let you go for the rest.
A quick history lesson on operating systems
An operating system is a system software, which manages the hardware and helps us use a computer.
They make it easy to run tens of programs with a few clicks of a mouse – all at the same time.
It wasn’t always the case, though.
There was a time when there were no operating systems.
In the early days of computing, computers were only able to run one program at a time, loaded into memory by a human operator.
Programmers used to give their code (in a deck of punched cards) to an operator and come back a few hours (probably after having a coffee or two) to collect the printed results.
Over time, computers got faster and faster and could execute way more than what bare hands could give them.
Computer scientists invented operating systems to make this slow and human-intervened operation as automatic as possible and use the available computing resources to the fullest.
And here we are today without having to worry about any of these.
All we need to do as a user, is to input data and get the output.
What is I/O?
I/O – Input/Output – means data exchange between a computer and the outside world, such as humans or other computers.
All computer programs work in the same way; they receive an input and return an output.
For instance, when you type in a URL into your browser’s address bar, you’re performing an input, and the web page you see is the output.
Devices used for these types of communication are called I/O devices, such as monitors, keyboards, hard disks, network cards, etc.
For example, you communicate with a computer via a monitor and a keyboard.
Another example is when a program needs to store data on a hard disk. In this case, the communication is between the CPU and the hard disk drive; This is called a disk I/O.
What is the client-server model?
Everything on the Internet works based on a client-server model.
Any computer or device – the client – can use the services or resources offered by another computer – the server.
For instance, a server hosts a news website, and I, as the client, access that website.
Another server streams movies, and I, as the client, pay a subscription fee and watch my favorite movies.
Technically, any computer can be a server as long as it is configured to be one and has something to offer.
However, servers are supposed to be more powerful and reliable than personal computers.
When you open a website, you’re requesting a resource from a computer somewhere on the Internet.
A computer (or a group of load-balanced computers) that’s ON 24/7.
In this scenario, you are the client, and that remote computer is the server.
What is a client application?
The Internet users (the clients) use the services of a server via special applications.
We call these applications client applications.
Some client applications allow users to browse the web (e.g., Firefox or Chrome), and some of them help them send a photo of their puppy to friends and family (e.g., WhatsApp).
In the client-server model, the terms client and client application are used interchangeably.
What are communication protocols?
Client applications and servers interact with each other via communication protocols.
A protocol is a set of rules that describe how two entities should communicate with each other.
In a digital context, these two entities are usually two programs installed on two different computers.
For example, a web browser (e.g., Chrome) uses HTTP (Hypertext Transfer Protocol) to request a web page from a web server (e.g, Nginx)
A web server is a program installed on the server to serve web pages.
WhatsApp uses a customized version of the XMPP protocol to operate. It also uses HTTP to send multimedia messages.