I would suggest those articles since it is an advanced subject. the first one explains the math behind zk-rollups and the second one is Vitalik ( Founder of Ethereum) explaining how snarks work.
* [Build] React Roadmap
Additional Suggestions for 103 Refs
1. Web Dev Simplied - a youtube video that explains the use of refs and what it can do for us
2. A content blog from 'Dmitri Pavlutin' website
* [Build] 104-React Events
I've added an additional description text in the main markdown file to help other learners/readers
keep in mind how important it is to make sure that we write code that is easy to understand. Do take
a look.
* Update src/roadmaps/react/content/103-rendering/104-events.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* [Build] React Roadmap
1. Came across two other interesting topics related to props and state in react
2. Would like to suggest that we add these to the list as well as they highlight something important
3. One is from robinwieruch and the other from Dominik Dorfmeister (TkDodo)
* [Build] React Roadmap Contributions
1. Added one topic for Composition vs Inheritance
2. Added topics for Props vs State
3. Added topic for Render Props
The current text says that ACID are the for properties of _any_ database system. This is only true for relational databases. NoSQL databases can possess _some_ of these properties, but are due to their nature not ACID compliant.
* fixed typo in router outlets and added some content to router links
* syntax update
* Update content/roadmaps/104-angular/content/107-routing/102-router-links.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update readme.md
Definition and examples of Version Control Systems.
* Update content/roadmaps/117-flutter/content/104-version-control-systems/readme.md
* Update content/roadmaps/117-flutter/content/104-version-control-systems/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 101-playstore.md
Added links to guides on publishing flutter app to playstore.
* Update content/roadmaps/117-flutter/content/119-deployment/101-playstore.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
I capitalized any product names that were incorrectly in lowercase. I also fixed any grammar, punctuation, and writing mechanics issues that I noticed.
* Additional resources for tree and graph algorithms
Additional resources for tree and graph algorithms for technical interviews
* Update content/roadmaps/106-javascript/content/104-javascript-data-structures/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update a setup from Vs Code for Flutter.
* Update content/roadmaps/117-flutter/content/101-setup-development-environment/101-ides/100-vs-code.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added Resources and Information for "Dart Basics"
* Update content/roadmaps/117-flutter/content/100-dart-basics/readme.md
* Update content/roadmaps/117-flutter/content/100-dart-basics/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Remove invalid resource from Golang 102-types-and-type-assertions.md
The provided resource is a video about protocol buffers in Go, not types or type assertion
* Add link to OS tutorial
* Add introduction
* Update content/roadmaps/101-backend/content/102-os-general-knowledge/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added content in Learn the Basics of csharp (.NET CLI) in ASP.NET Core roadmap
* Update content/roadmaps/116-aspnet-core/content/100-basics-of-csharp/102-dotnet-cli.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adding information to the Registers and Ram node - CS Roadmap
* Update content/roadmaps/103-computer-science/content/120-how-computers-work/102-registers-and-ram.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 102-stored-procedures.md
Added information and link
* Update content/roadmaps/116-aspnet-core/content/102-database-fundamentals/102-stored-procedures.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* It's not polite term ' Dummies
* Update content/roadmaps/101-backend/content/100-internet/100-how-does-the-internet-work.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Fixed resource type
Fixed resource type from watch to read in 'Learn more about Data types and Variables'
* Updated java-fundamental resources
Replaced non-English resource with English one.
Added switch and nested conditional video resource
* Add SWAs, PWAs and Jamstack node information
* Update content/roadmaps/113-qa/content/103-qa-automated-testing/100-frontend-automation/100-basic-introduction/swas-pwas-jamstack.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added resources in frontend and react roadmaps
* moved new resources below exiting ones && BadgeLink stick to one line
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* A course added for PHP
- Add a link to PHP for Beginners (2023 Edition) [Free Course]
* Update content/roadmaps/101-backend/content/103-learn-a-language/103-php.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Talks about how the development of single-page websites or mobile applications that permit navigating without refreshing the page. Additionally, how react-router allows us to access browser history functionalities while preserving the correct application view, how component-based routing plays a huge role, and much more.
* An indepth introductory guide about watchers
Talks about deep and immediate options with examples. showcases example use cases on how to use watchers in action, and when to utilize computed properties, and when to use watchers.
* Update content/roadmaps/105-vue/content/101-advanced-topics/104-watch.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
This course is an in-depth angular introductory course with 17hrs of content from freecodecamp. covers topics ranging from TS introduction to Important Angular topics.
* Add an Introductory Text to Solid.js
Update the Solid.js Resource panel with an introductory text
* Update content/roadmaps/100-frontend/content/111-pick-a-framework/104-solid-js.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added one of the best and new resource to the java datastructures list
* Added content to JavaScript Type Conversion vs Coercion
* Update content/roadmaps/110-java/content/100-java-fundamentals/104-datastructures.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added client-side-file-caching
There was no data on client-side-file-caching, so I added some for people to learn.
* Update content/roadmaps/101-backend/content/110-caching/102-client-side.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added instrumentation, telemetry, monitoring
There was no data on instrumentation, monitoring, and telemetry, so I decided to contribute and help others by also providing links.
* Update content/roadmaps/101-backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md
* Update content/roadmaps/101-backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* fix readable content color scheme
* add content to 103-glob
* remove duplicate resources group title in 102-updating-packages
* fix swaped color in 100-morgan
* Update content/roadmaps/107-nodejs/content/107-nodejs-apis/101-express-js.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* feat: free content about ci/cd
add a read free content about ci/cd
* feat: add a postgre tutorial
Added PostgreSQL full tutorial for beginners in SQL
Thank you '-'
* Adding information on QA SDLC Delivery Model node
* Update content/roadmaps/113-qa/content/101-qa-sdlc/readme.md
* Tweaking files in the Chrome Dev Tools section - JS roadmap
* Tweaking format on files from Memory Management - JS roadmap
* Fixed issue with one of the Free Contents - CommonJS readme
* Format tweak on Callback nodes - JS Roadmap
* Format tweaks on different files from the Expressions and Operators tree
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added content to 104-go-zero.md
added content to go zero with free-read content
* Update content/roadmaps/109-golang/content/109-go-microservices/104-go-zero.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
I think the already given description was not enough for new learners, so I added a little more about what semantic elements in HTML are and what they do.
* Add reference to Effective Go for Arrays
* Add reference to Effective Go for Slices
* Add reference to Effective Go for Maps
* Add reference to Effective Go for make
* Add reference to Effective Go for 'for' loop
* Add reference to Effective Go for Conditionals
* Add reference to Effective Go for Interfaces
* Add reference to Effective Go for Goroutines
* Add reference to Effective Go for Channels
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adds shortcut for opening dev tools
`F12` open up Console tab in `Chrome`, `Mozilla`, `Brave` by default. However in `Microsoft Edge` it open up `Elements` panel.
* Update content/roadmaps/106-javascript/content/117-javascript-chrome-dev-tools/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* feat: free content about ci/cd
add a read free content about ci/cd
* feat: add cli-progress summary and content
Add summary and content to cli-progress package
Thank you '-'
* Edited Javascript Roadmaps Content
Added some content in arithmetic operators & arrow functions. Amended one file name as well.
* Reverted the File name
Just reverted the name of the file as it was breaking the build.
* add book to javascript roadmap
* add book to javascript section on frontend roadmap
* add book to javascript section on backend roadmap
* add book to javascript section on blockchain roadmap
* Update readme.md
Added CI/CD introductory description.
* Update readme.md
Added link to blog for further reference
* Update readme.md
Mentioned a video link
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adding Windows definition
* Adding to terminal multiplexers
* Fixing Windows links and added SAR description
* Adding VMStat description
* Fixing typos
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added video resource(youtube) for event loop.
* Update content/roadmaps/106-javascript/content/112-javascript-asynchronous-javascript/100-event-loop.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Edited the typeof operator file
* Update 104-running-scripts.md
* Added the content to the stack-trace.md
* Added content for the 104-asyn-errors.md file
* Update content/roadmaps/107-nodejs/content/103-nodejs-error-handling/100-stack-trace.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add summary and one free content to commander.js package
* Update content/roadmaps/107-nodejs/content/106-nodejs-command-line-apps/103-command-line-args/101-commander-js.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added Python Refrence read guide link from freecodecamp.org How to Learn python ?
* tag mistake update colorscheme
* \Update content/roadmaps/101-backend/content/103-learn-a-language/106-python.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content on desktop applications, examples and types along with free video and blog content
* Update content/roadmaps/100-frontend/content/122-desktop-applications/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content for JavaScript Error and its types
along with free tutorial link and YouTube link
* Update content/roadmaps/107-nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to readme.md file of 112-creating-a-custom-x folder
[#1847 ](https://github.com/kamranahmedse/developer-roadmap/issues/1847) I made the required addition of content to readme.md file of 112-creating-a-custom-x to resolve the issue.
* Update content/roadmaps/104-angular/content/112-creating-a-custom-x/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content for Nodejs to keep app running prod along with blog links
* Update content/roadmaps/107-nodejs/content/113-nodejs-keep-app-running-prod/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 104-datastructures.md
good guide to learn ds and alghoritms
* Update content/roadmaps/110-java/content/100-java-fundamentals/104-datastructures.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to data structure readme.md
Added basic understanding of data structures with a free-read content
* Update readme.md
* Update content/roadmaps/106-javascript/content/104-javascript-data-structures/readme.md
* Update content/roadmaps/106-javascript/content/104-javascript-data-structures/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to readme.md file of 103-qa-automated-testing folder
[#1840 ](https://github.com/kamranahmedse/developer-roadmap/issues/1840) I contributed to this issue by adding the readme.md file for the 103-qa-automated-testing folder.
* Update content/roadmaps/113-qa/content/103-qa-automated-testing/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content for debugging in node.js and how to debug.
added tutorial links for the same to learn more about debugging in node.js
* Update content/roadmaps/107-nodejs/content/116-nodejs-more-debugging/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
> A bunch of CLI scripts to make the development easier
## `roadmap-links.cjs`
Generates a list of all the resources links in any roadmap file.
## `compress-jsons.cjs`
Compresses all the JSON files in the `public/jsons` folder
## `roadmap-content.cjs`
This command is used to create the content folders and files for the interactivity of the roadmap. You can use the below command to generate the roadmap skeletons inside a roadmap directory:
```bash
npm run roadmap-content [frontend|backend|devops|...]
```
For the content skeleton to be generated, we should have proper grouping, and the group names in the project files. You can follow the steps listed below in order to add the meta information to the roadmap.
- Remove all the groups from the roadmaps through the project editor. Select all and press `cmd+shift+g`
- Identify the boxes that should be clickable and group them together with `cmd+shift+g`
- Assign the name to the groups.
- Group names have the format of `[sort]-[slug]` e.g. `100-internet`. Each group name should start with a number starting from 100 which helps with sorting of the directories and the files. Groups at the same level have the sequential sorting information.
- Each groups children have a separate group and have the name similar to `[sort]-[parent-slug]:[child-slug]` where sort refers to the sorting of the `child-slug` and not the parent. Also parent-slug does not need to have the sorting information as a part of slug e.g. if parent was `100-internet` the children would be `100-internet:how-does-the-internet-work`, `101-internet:what-is-http`, `102-internet:browsers`.
"description": "Learn how to peek through the history of any git repository to learn how it grew.",
"url": "/guides/project-history",
"fileName": "project-history",
"featured": true,
"author": "kamranahmedse",
"updatedAt": "2020-07-16T19:59:14.191Z",
"createdAt": "2020-07-16T19:59:14.191Z"
};
Asymptotic notation is the standard way of measuring the time and space that an algorithm will consume as the input grows. In one of my last guides, I covered "Big-O notation" and a lot of you asked for a similar one for Asymptotic notation. You can find the [previous guide here](/guides/big-o-notation).
Our last video series was about data structures. We looked at the most common data structures, their use cases, pros and cons, and the different operations you could perform on each data structure.
Today, we are kicking off a similar series for Authentication strategies where we will discuss everything you need to know about authentication and authentication strategies.
In this guide today will be talking about what authentication is, and we will cover some terminology that will help us later in the series. You can watch the video below or continue reading this guide.
<iframe src="https://www.youtube.com/embed/Mcyt9SrZT6g" title="Basics of Authentication" />
## What is Authentication?
Authentication is the process of verifying someone's identity. A real-world example of that would be when you board a plane, the airline worker checks your passport to verify your identity, so the airport worker authenticates you.
If we talk about computers, when you log in to any website, you usually authenticate yourself by entering your username and password, which is then checked by the website to ensure that you are who you claim to be. There are two things you should keep in mind:
- Authentication is not only for the persons
- And username and password are not the only way to authenticate.
Some other examples are:
- When you open a website in the browser. If the website uses HTTP, TLS is used to authenticate the server and avoid the fake loading of websites.
- There might be server-to-server communication on the website. The server may need to authenticate the incoming request to avoid malicious usage.
## How does Authentication Work?
On a high level, we have the following factors used for authentication.
- **Username and Password**
- **Security Codes, Pin Codes, or Security Questions** — An example would be the pin code you enter at an ATM to withdraw cash.
- **Hard Tokens and Soft Tokens** — Hard tokens are the special hardware devices that you attach to your device to authenticate yourself. Soft tokens, unlike hard tokens, don't have any authentication-specific device; we must verify the possession of a device that was used to set up the identity. For example, you may receive an OTP to log in to your account on a website.
- **Biometric Authentication** — In biometric authentication, we authenticate using biometrics such as iris, facial, or voice recognition.
We can categorize the factors above into three different types.
- Username / Password and Security codes rely on the person's knowledge: we can group them under the **Knowledge Factor**.
- In hard and soft tokens, we authenticate by checking the possession of hardware, so this would be a **Possession Factor**.
- And in biometrics, we test the person's inherent qualities, i.e., iris, face, or voice, so this would be a **Qualities** factor.
This brings us to our next topic: Multi-factor Authentication and Two-Factor Authentication.
## Multifactor Authentication
Multifactor authentication is the type of authentication in which we rely on more than one factor to authenticate a user.
For example, if we pick up username/password from the **knowledge factor**. And we pick soft tokens from the **possession factor**, and we say that for a user to authenticate, they must enter their credentials and an OTP, which will be sent to their mobile phone, so this would be an example of multifactor authentication.
In multifactor authentication, since we rely on more than one factor, this way of authentication is much more secure than single-factor authentication.
One important thing to note here is that the factors you pick for authentication, they must differ. So, for example, if we pick up a username/password and security question or security codes, it is still not true multifactor authentication because we still rely on the knowledge factor. The factors have to be different from each other.
### Two-Factor Authentication
Two-factor authentication is similar to multifactor authentication. The only difference is that there are precisely two factors in 2FA. In MFA, we can have 2, 3, 4, or any authentication factors; 2FA has exactly two factors. We can say that 2FA is always MFA, because there are more than one factors. MFA is not always 2FA because there may be more than two factors involved.
Next we have the difference between authentication and authorization. This comes up a lot in the interviews, and beginners often confuse them.
### What is Authentication
Authentication is the process of verifying the identity. For example, when you enter your credentials at a login screen, the application here identifies you through your credentials. So this is what the authentication is, the process of verifying the identity.
In case of an authentication failure, for example, if you enter an invalid username and password, the HTTP response code is "Unauthorized" 401.
### What is Authorization
Authorization is the process of checking permission. Once the user has logged in, i.e., the user has been authenticated, the process of reviewing the permission to see if the user can perform the relevant operation or not is called authorization.
And in case of authorization failure, i.e., if the user tries to perform an operation they are not allowed to perform, the HTTP response code is forbidden 403.
## Authentication Strategies
Given below is the list of common authentication strategies:
- Basics of Authentication
- Session Based Authentication
- Token-Based Authentication
- JWT Authentication
- OAuth - Open Authorization
- Single Sign On (SSO)
In this series of illustrated videos and textual guides, we will be going through each of the strategies discussing what they are, how they are implemented, the pros and cons and so on.
So stay tuned, and I will see you in the next one.
Big-O notation is the mathematical notation that helps analyse the algorithms to get an idea about how they might perform as the input grows. The image below explains Big-O in a simple way without using any fancy terminology.
The image below details the differences between the continuous integration and continuous delivery. Also, here is the [accompanying video on implementing that with GitHub actions](https://www.youtube.com/watch?v=nyKZTKQS_EQ).
DNS or Domain Name System is one of the fundamental blocks of the internet. As a developer, you should have at-least the basic understanding of how it works. This article is a brief introduction to what is DNS and how it works.
DNS at its simplest is like a phonebook on your mobile phone. Whenever you have to call one of your contacts, you can either dial their number from your memory or use their name which will then be used by your mobile phone to search their number in your phone book to call them. Every time you make a new friend, or your existing friend gets a mobile phone, you have to memorize their phone number or save it in your phonebook to be able to call them later on. DNS or Domain Name System, in a similar fashion, is a mechanism that allows you to browse websites on the internet. Just like your mobile phone does not know how to call without knowing the phone number, your browser does not know how to open a website just by the domain name; it needs to know the IP Address for the website to open. You can either type the IP Address to open, or provide the domain name and press enter which will then be used by your browser to find the IP address by going through several hoops. The picture below is the illustration of how your browser finds a website on the internet.
One of my favorite pastimes is going through the history of my favorite projects to learn how they grew over time or how certain features were implemented.
The image below describes how I do that in WebStorm.
The Internet has connected people across the world using social media and audio/video calling features along with providing an overabundance of knowledge and tools. All this comes with an inherent danger of security and privacy breaches. In this guide, we will talk about **proxies** that play a vital role in mitigating these risks. We will cover the following topics in this guide:
- [Proxy Server](#proxy-server)
- [Forward Proxy Server](#forward-proxy-server)
- [Reverse Proxy Server](#reverse-proxy-server)
- [Summary](#summary)
## Proxy Server
***Every web request which is sent from the client to a web server goes through some type of proxy server.*** A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. It replaces the source IP address of the web request with the proxy server's IP address and then forwards it to the web server. The web server is unaware of the client, it only sees the proxy server.

> NOTE: This is not an accurate description but rather just an illustration.
Proxy servers serve as a single point of control making it easier to enforce security policies. It also provides caching mechanism which stores the requested web pages on the proxy server to improve performance. If the requested web-page is available in cache memory then instead of forwarding the request to the web-server it will send the cached webpage back to the client. This **saves big companies thousands of dollars** by reducing the load on their servers as their website is visited by millions of users every day.
## Forward Proxy Server
A forward proxy is generally implemented on the client side and **sits in front of multiple clients** or client sources. Forward proxy servers are mainly used by companies to **manage internet usage** of their employees and **restrict content**. It is also used as a **firewall** to secure the company's network by blocking any request which would pose threat to the companies's network. Proxy servers are also used to **bypass geo-restriction** and browse content that might be blocked in the user's country. It enables users to **browse anonymously**, as the proxy server masks their details from the website's servers.
> NOTE: This is not an accurate description but rather just an illustration
## Reverse Proxy Server
Reverse proxy servers are implemented on the **server side** instead of the client side. It **sits in front of multiple webservers** and manages the incoming requests by forwarding them to the web servers. It provides anonymity for the **back-end web servers and not the client**. Reverse proxy servers are generally used to perform tasks such as **authentication, content caching, and encryption/decryption** on behalf of the web server. These tasks would **hog CPU cycles** on the web server and degrade the performance of the website by introducing a high amount of delay in loading the webpage. Reverse proxies are also used as **load balancers** to distribute the incoming traffic efficiently among the web servers but it is **not optimized** for this task. In essence, a reverse proxy server is a gateway to a web-server or group of web-servers.
> NOTE: This is not an accurate description but rather just an illustration. Red lines represent server's response and black lines represent initial request from client(s).
## Summary
A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. ***The position of the proxy server on the network determines whether it is a forward or a reverse proxy server***. A Forward proxy is implemented on the client side and **sits in front of multiple clients** or client sources and forwards requests to the web server. Reverse proxy servers are implemented on the **server side** it **sits in front of multiple webservers** and manages the incoming requests by forwarding them to the web servers.
If all this was too much to take in, I have a simple analogy for you.
At a restaurant, the waiter/waitress takes your order and gives it to the kitchen head chef. The head chef then calls out the order and assigns tasks to everyone in the kitchen.
In this analogy:
* You are the client
* Your order is the web request
* Waiter/Waitress is your forward proxy server
* Kitchen head chef is the reverse proxy server
* Other chefs working in the kitchen are the web servers
With that said our guide comes to an end. Thank you for reading and feel free to submit any updates to the guide using the links below.
Random numbers are everywhere from computer games to lottery systems, graphics software, statistical sampling, computer simulation and cryptography. Graphic below is a quick explanation to how the random numbers are generated and why they may not be truly random.
A thread is an execution context in which the instructions to the CPU can be scheduled and executed independently of the parent process. Concurrency is the concept of multiple threads in a shared memory space being computed simultaneously (or intermittently executed in succession to provide that illusion). Concurrency allows multiple processes to execute at once and can apply to programming languages as well as operating systems.
Since the explosive growth of web-based applications, every developer stands to benefit from understanding how the Internet works. Through this article and its accompanying introductory series of short videos about the Internet from [code.org](https://code.org), you will learn the basics of the Internet and how it works. After going through this article, you will be able to answer the following questions:
* What is the Internet?
* How does the information move on the internet?
* How do the networks talk to each other and the protocols involved?
* What's the relationship between packets, routers, and reliability?
* HTTP and the HTML – How are you viewing this webpage in your browser?
* How is the information transfer on the internet made secure?
* What is cybersecurity and what are some common internet crimes?
## What is the Internet?
The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols.
In the video below, Vint Cerf, one of the "fathers of the internet," explains the history of how the Internet works and how no one person or organization is really in charge of it.
Information on the Internet moves from one computer to another in the form of bits over various mediums, including Ethernet cables, fiber optic cables, and wireless signals (i.e., radio waves).
In the video linked below, you will learn about the different mediums for data transfer on the Internet and the pros and cons for each.
Now that you know about the physical medium for the data transfer over the internet, it's time to learn about the protocols involved. How does the information traverse from one computer to another in this massive global network of computers?
In the video below, you will get a brief introduction to IP, DNS, and how these protocols make the Internet work.
Information transfer on the Internet from one computer to another does not need to follow a fixed path; in fact, it may change paths during the transfer. This information transfer is done in the form of packets and these packets may follow different routes depending on certain factors.
In this video, you will learn about how the packets of information are routed from one computer to another to reach the destination.
HTTP is the standard protocol by which webpages are transferred over the Internet. The video below is a brief introduction to HTTP and how web browsers load websites for you.
Cryptography is what keeps our communication secure on the Internet. In this short video, you will learn the basics of cryptograpy, SSL/TLS, and how they help make the communication on the Internet secure.
And that wraps it up for this article. To learn more about the Internet, [Kamran Ahmed](https://twitter.com/kamranahmedse) has a nice little guide on [DNS: How a website is found on the Internet](/guides/dns-in-one-picture). Also, go through the episodes of [howdns.works](https://howdns.works/) and read this [cartoon intro to DNS over HTTPS](https://hacks.mozilla.org/2018/05/a-cartoon-intro-to-dns-over-https/).
Roadmap.sh is the place containing community curated roadmaps, study plans, paths and resources for the budding
developers. It started as a [set of charts to guide the developers](https://github.com/kamranahmedse/developer-roadmap)
who are confused about what should they learn next but that alone wasn't enough so I expanded it into the website to get
more contributors involved.
## What are the plans for roadmap.sh?
The website started off as
a [simple repository containing a few charts](https://github.com/kamranahmedse/developer-roadmap) for developers and
based on my personal opinions but it could have been much more than that so I decided to expand it to a website where
people can contribute to study plans with their areas of expertise as well, add more roadmaps, write guides etc.
We haven't opened up the sign ups for now but we will be doing. My long term plans for this website are to turn it into
a goto place for the developers to seek guidance about their careers, help others, share their journeys, incentivize the
learnings, get feedbacks on their projects etc.
## How did you build roadmap.sh?
The basic version of the website has been built with [Next.js](https://github.com/zeit/next.js/), is opensource and can
be found on [github](https://github.com/kamranahmedse/developer-roadmap). It was hastily done to get it out in front of the
people and get people to start contributing, so it might be rough on the edges, but that is where we need your help.
## How does it make money?
It doesn't make any money. I have been using my personal time and budget to build it. I did not create this website with
any intentions of monetization but as a good will, to help the people get out of the frustration that I was once in.
Having said that, I love teaching and my future plans are to be able to work full-time on roadmap.sh for which it has to
make enough money to pay for my rent, groceries, bills, travel expenses, etc but even if it doesn't it's likely I'll
continue growing the site however I can. My focus at the moment is not making money from it and just adding content that
creates value for the people.
> Sponsor the efforts by [paying as little as 5$ per month](https://github.com/sponsors/kamranahmedse) or with [one time payment via paypal](https://paypal.me/kamranahmedse). Alternatively, reach out to me at [kamranahmed.se@gmail.com](mailto:kamranahmed.se@gmail.com).
## Can I contribute?
You definitely can, infact you are encouraged to do that. Even your minor contributions such as typo fixes count. The
source code of the website can be [found on Github](https://github.com/kamranahmedse/developer-roadmap). Your contributions can
be:
* Adding a new roadmap
* Updating existing roadmap
* Suggesting changes to the existing roadmaps
* Writing a Guide
* Updating an existing guide
* Fixing grammar mistakes, typos on the website or the content
* Updating the UI of the website
* Refactoring the codebase
* Becoming a sponsor
Just make sure
to [follow the contribution guidelines](https://github.com/kamranahmedse/developer-roadmap/tree/master/contributing) when you
decide to contribute.
## Can I redistribute the content?
No, the license of the content on this website does not allow you to redistribute any of the content on this website
anywhere. You can use it for personal use or share the link to the content if you have to but redistribution is not
allowed.
## What is the best way to contact you?
Tweet or send me a message [@kamranahmedse](https://twitter.com/kamranahmedse) or email me
at [kamranahmed.se@gmail.com](mailto:kamranahmed.se@gmail.com). I get lots of messages so apologies in advance if you don't hear back
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.vox.com/2014/6/16/18076282/the-internet'>The Internet Explained</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='http://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm'>How Does the Internet Work?</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work'>How Does the Internet Work? MDN Docs</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='/guides/what-is-internet'>Introduction to Internet</BadgeLink>
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=TNQsmPf24go'>How does the Internet work?</BadgeLink>
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=7_LPdttKXPc'>How the Internet Works in 5 Minutes</BadgeLink>
HTTP is the `TCP/IP` based application layer communication protocol which standardizes how the client and server communicate with each other. HTTP follows a classical "Client-Server model" with a client opening a connection request, then waiting until it receives a response. HTTP is a stateless protocol, that means that the server does not keep any data (state) between two requests.
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/'>What is HTTP?</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://howhttps.works'>How HTTPS Works ...in a comic!</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview'>An overview of HTTP</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://kamranahmed.info/blog/2016/08/13/http-in-depth'>Journey to HTTP/2</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/'>HTTP/3 From A To Z: Core Concepts</BadgeLink>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.