* Update 100-beego.md
New official documentation website.
* Update src/roadmaps/golang/content/104-go-web-frameworks/100-beego.md
---------
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
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>
* Added content on memory leaks, its causes and its detectors
also added some free blog links for more information
* Update content/roadmaps/107-nodejs/content/116-nodejs-more-debugging/100-memory-leaks/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to readme.md file of 104-qa-non-functional-testing
[#1840 ](https://github.com/kamranahmedse/developer-roadmap/issues/1840) I contributed to this issue by adding content to the readme.md file of 104-qa-non-functional-testing folder.
* Update content/roadmaps/113-qa/content/104-qa-non-functional-testing/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to the readme.md file of 115-testing-angular-apps
[#1847 ](https://github.com/kamranahmedse/developer-roadmap/issues/1847) I contributed to this issue by adding the content to the readme.md file of 115-testing-angular-apps folder.
* Update content/roadmaps/104-angular/content/115-testing-angular-apps/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added node inspect content and useful links for reading and official documentation in node --inspect file
* Update content/roadmaps/107-nodejs/content/116-nodejs-more-debugging/101-node-inspect.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content for Debugging using APM and added blog link for complete information
* Update content/roadmaps/107-nodejs/content/116-nodejs-more-debugging/102-using-apm.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content about Migration strategies and added blog link for the same
* Update content/roadmaps/101-backend/content/123-scalability/102-migration-strategies.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Include the recent addition (from Python 3.10 upwards) of the match-case statement under the conditionals node of the Python roadmap. Also, correct some grammar mistakes.
* add Go building clis introduction
* Update content/roadmaps/109-golang/content/102-go-building-clis/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated and Added the content to 100-junit.md file
[#1840](https://github.com/kamranahmedse/developer-roadmap/issues/1840) I added the content to 100-junit.md file of the 106-qa-reporting folder to resolve this issue. Please check into this PR!
* Update content/roadmaps/113-qa/content/106-qa-reporting/100-junit.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated and Added content to readme.md file of 100-qa-basics folder
[#1840 ](https://github.com/kamranahmedse/developer-roadmap/issues/1840) I added content to readme.md file of 100-qa-basics folder to resolve this issue! Please check this PR
* Update content/roadmaps/113-qa/content/100-qa-basics/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* 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
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 103-figlet.md
adding a description for figlet and a link to the github repo
* Update content/roadmaps/107-nodejs/content/106-nodejs-command-line-apps/101-printing-output/103-figlet.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 102-chalk.md
adding a description to the chalk package and adding a link to its github repository
* Update content/roadmaps/107-nodejs/content/106-nodejs-command-line-apps/101-printing-output/102-chalk.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 101-process-stderr.md
Adding a description to the process.stderr and adding the link to the official documentation
* Update content/roadmaps/107-nodejs/content/106-nodejs-command-line-apps/101-printing-output/101-process-stderr.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added information about df command
* Update content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/138-df.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* [content] Added note on history and use of linux OS.
* Update content/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md
* Update content/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated info on windows card
* Update content/roadmaps/102-devops/content/102-managing-servers/100-operating-system/100-windows.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to the readme.md file of 107-qa-monitoring-logs
[#1847](https://github.com/kamranahmedse/developer-roadmap/issues/1847) I added content to the readme.md file of 107-qa-monitoring-logs to resolve this issue! Please check this PR
* Update content/roadmaps/113-qa/content/107-qa-monitoring-logs/readme.md
* Update content/roadmaps/113-qa/content/107-qa-monitoring-logs/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated readme.md file of104-templates
[#1847 ](https://github.com/kamranahmedse/developer-roadmap/issues/1847) I made the required additions to this file and resolved the issue.
* Update content/roadmaps/104-angular/content/104-templates/readme.md
* Update content/roadmaps/104-angular/content/104-templates/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added the complete guide to work with files using fs Module and a blog link is attached with it.
* Update fs content
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added documentation for interpolation
* Changed link
* \Update content/roadmaps/104-angular/content/104-templates/100-interpolation.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Fill or add info to orm, cucumber-jvm, jdbi3, ebean and jdbc template nodes
* Fill devops node management and monitoring
* Update content/roadmaps/102-devops/content/112-management-and-monitoring.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content to prisma.md and native-drivers.md
* Content added to forever.md
* link updated to forever documentation
* Content added to Nohup.md with links
* Update content/roadmaps/107-nodejs/content/110-nodejs-databases/101-document/102-native-drivers.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
This page introduces some basic considerations to help you get started developing web content that is more accessible to people with disabilities. These tips are good practice to help you meet Web Content Accessibility Guidelines (WCAG) requirements. Follow the links to the related WCAG requirements, detailed background in the “Understanding” document, guidance from Tutorials, user stories, and more.
* Added content to Rest in Golang section
The tutorial link are specific to Go language
* Update content/roadmaps/109-golang/content/107-go-api-clients/100-rest/readme.md
* Update content/roadmaps/109-golang/content/107-go-api-clients/100-rest/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* feat: add link to official website and official docs for daisyUI
* Add link to official website and official docs for daisyUI
* Update content/roadmaps/100-frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adding content to 134-strace.md
Added some content as a description of strace.
* Update content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/134-strace.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
New free course on Python ( pythonprinciples.com ) . This is where I learnt Python with interactive lessons - while reading what’s going on and giving you practical examples to follow along with and try yourself.
* content for Go maps
* content for Golang's make function
* content for Golang structs
* Update content/roadmaps/109-golang/content/100-go-basics/116-structs.md
* content for Go interfaces
* Update content/roadmaps/109-golang/content/101-go-advanced/103-interfaces.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added content and resources to golang node
* Update content/roadmaps/109-golang/content/101-go-advanced/104-context.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 106-cryptography.md
Added content to learn what is Cryptography?
* Update content/roadmaps/112-blockchain/content/101-blockchain-general-knowledge/106-cryptography.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* (#1840) Add basic content for QA-Automation-Jasmine.
* feat(*): Added an additional great tutorial for Jasmine.
* (#1840) Added content for QA-Automation-Robot Framework
Co-authored-by: Carlo Martin <carlocarlo.mtz.martin@gmail.com>
* add go modules and their usage
* Update content/roadmaps/109-golang/content/101-go-advanced/100-go-modules.md
* Update content/roadmaps/109-golang/content/101-go-advanced/100-go-modules.md
Co-authored-by: Matteo Bruno <satboy78@MacBook-Pro-Matteo.local>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adding information on QA SDLC Delivery Model node
* Update content/roadmaps/113-qa/content/101-qa-sdlc/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* (#1840) Add basic content for QA-Automation-Jasmine.
* feat(*): Added an additional great tutorial for Jasmine.
Co-authored-by: Carlo Martin <carlocarlo.mtz.martin@gmail.com>
* Added Resources and description to Morgan npm
* Update content/roadmaps/107-nodejs/content/112-nodejs-logging/100-morgan.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Resources and description added for jsonwebtoken
* Update content/roadmaps/107-nodejs/content/107-nodejs-apis/108-jsonwebtoken.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add description and example usage cases
* Update content/roadmaps/113-qa/content/111-qa-headless-testing/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added one of the best and new resource to the java datastructures list
* Update content/roadmaps/110-java/content/100-java-fundamentals/104-datastructures.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added link to mdn docs for rest parameter
* Added links to MDN documentation for default parameters,
rest parameters and function parameters
* added rest parameter MDN Docs following
guide lines
* Added MDN Docs links to rest and
default parameters in function parameters
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/101-rest-params.md
* Update readme.md
* Added link to article on function borrowing
* Update content/roadmaps/106-javascript/content/111-javascript-this-keyword/100-function-borrowing.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* added link to mdn docs for rest parameter
* Added links to MDN documentation for default parameters,
rest parameters and function parameters
* added rest parameter MDN Docs following
guide lines
* Added MDN Docs links to rest and
default parameters in function parameters
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md
* Update content/roadmaps/106-javascript/content/109-javascript-functions/101-function-parameters/101-rest-params.md
* Update readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated isLooselyEqual operator
Updated isLooselyEqual operator
* Updated strictly equal operator
Updated strictly equal operator
* Updated Same Value
Updated Same Value
* Updated Same Valued Zero
Updated Same Valued Zero
* Update content/roadmaps/106-javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/100-is-loosely-equal.md
* Update content/roadmaps/106-javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/101-is-strictly-equal.md
* Update content/roadmaps/106-javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/103-same-value.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added Details about RKT in 101-rkt.md
* Added Details about LXC in 102-lxc.md
* Update content/roadmaps/101-backend/content/118-containerization/101-rkt.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* content for Go maps
* content for Golang's make function
* content for Golang structs
* Update content/roadmaps/109-golang/content/100-go-basics/116-structs.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Changed TNS title error "Thew" to "The" and added "from" in place of the hyphen
* Update content/roadmaps/102-devops/content/105-infrastructure-as-code/101-containers.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* What is Software Architecture
added some descriptions and links for learning Software Architecture
* Update 100-what-is-software-architecture.md
* Update 100-what-is-software-architecture.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* short description about path module and its functions
* short description about path module and its functions
* short description about path module and its functions
* Update content/roadmaps/107-nodejs/content/105-nodejs-working-with-files/101-path-module.md
Co-authored-by: Muhammad Anas <anas.s@automatedbusiness.solutions>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* add defination about process-cwd
* Update content/roadmaps/107-nodejs/content/105-nodejs-working-with-files/102-process-cwd.md
Co-authored-by: Muhammad Anas <anas.s@automatedbusiness.solutions>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 103-test-oracles.md
- Add definition for Test Oracle taken directly from ISTQB Glossary entry for subject.
- Include link to glossary entry under `Read` badge in free content section
* Update content/roadmaps/113-qa/content/100-qa-basics/103-test-oracles.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 100-white-box-testing.md
Add description for white-box testing
Provide link to ISTQB glossary entry
Provide link to ISTQB syllabus with page to specific subject
* Update content/roadmaps/113-qa/content/100-qa-basics/102-testing-approaches/100-white-box-testing.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 103-functions.md
Added the content to learn Methods/Functions in Java.
Kindly merge this into the main branch!
Thank You!
* Update content/roadmaps/110-java/content/100-java-fundamentals/103-functions.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* comprehensive introduction of node js in (100 what is nodejs)
* add how nodejs works
* Update content/roadmaps/107-nodejs/content/100-nodejs-introduction/100-what-is-nodejs.md
Co-authored-by: Muhammad Anas <anas.s@automatedbusiness.solutions>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* history of node js
* Update content/roadmaps/107-nodejs/content/100-nodejs-introduction/102-history-of-nodejs.md
Co-authored-by: Muhammad Anas <anas.s@automatedbusiness.solutions>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added a new resource
This introduction to Ethereum is quite simple and easier for beginners to grasp.
* Update content/roadmaps/112-blockchain/content/101-blockchain-general-knowledge/109-blockchains/102-evm-based/ethereum.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Remove upcoming page and PDFs page from indexing
* Add tooling content
* Add project management contentg
* Add content for design system basics
* Update 110-traceroute.md
Add information for traceroute to DevOps roadmap with links
* Update content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/110-traceroute.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add modules resources
Added resouces of javascript.info it covers complete picture of modules like what is module and how to use import, export and dynamic imports.
* Update content/roadmaps/106-javascript/content/115-javascript-modules/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 102-conditionals.md
I've added content in the roadmap documentation to study conditionals in Java.
* Update content/roadmaps/110-java/content/100-java-fundamentals/102-conditionals.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added resources for the Java fundamantals
Basic Syntax - Proposed a G2G blog post as read and an intro to java syntax youtube video as watch.
* Update content/roadmaps/110-java/content/100-java-fundamentals/100-basic-syntax.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 104-datastructures.md
Added content in the Java roadmap to learn Data Structures and Algorithms.
* Update content/roadmaps/110-java/content/100-java-fundamentals/104-datastructures.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add content: Go testing your apps
Put a little description and some free content.
* Update content/roadmaps/109-golang/content/108-go-testing-your-apps.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added a course to HTML node
* Update content/roadmaps/100-frontend/content/101-html/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* adds poetry, and pipx
niche package managers added as a mentions
* Update content/roadmaps/108-python/content/105-python-package-managers/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Recommended because it's a very thorough and excellently written free, full-length textbook on JS. It's one of the resources that I most frequently saw mentioned when I was looking up how to learn JS, and it's the one that has helped me the most.
Recommended because it's a very thorough and excellently written free, full-length textbook on JS. It's one of the resources that I most frequently saw mentioned when I was looking up how to learn JS, and it's the one that has helped me the most.
* Web Components detail page and resources
Web Components detail page and resources
* Update content/roadmaps/100-frontend/content/113-web-components/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated Watch link for React Router v6
* Update content/roadmaps/103-react/content/102-react-ecosystem/100-routers/100-react-router.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
I'm proposing putting in a "latest news" links to The New Stack, where Roadmap and TNS categories overlap. The link here leads to an auto-updated TNS page with the latest news tagged with "service mesh."
* Update 105-javascript.md
Added a clear and more suitable description of what NodeJS does.
* Update content/roadmaps/101-backend/content/103-learn-a-language/105-javascript.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Resources added for Data Management
* Update content/roadmaps/102-devops/content/110-data-management.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add content for consul
* Update content/roadmaps/102-devops/content/105-infrastructure-as-code/100-service-mesh/100-consul.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
Hi there! This book has helped me greatly with learning javascript. It is so pleasant to read but highly detailed, eloquently written as the title suggests. The book includes exercises for every chapter, with solutions, multiple projects, and has everything available with its own code sandbox. I have the paperback copy, but I love having all of the extra features with the online version. It is 100% free.
Talks about the JavaScript Fetch API and how to use it to make asynchronous HTTP requests. This post goes through Sending a Request to Handling the status codes of the Response. Extremely beginner-friendly, easy-to-understand examples.
- Changed "represents" to "represent" because the former is used with singular nouns, while the latter is used with plural nouns (e.g., roadmaps)
- Added commas to "i.e." and "e.g."
- Changed ! to an interrobang (?!)
- Added determiners (the) to "value" and "curator"
* Added a reading point
* Update content/roadmaps/100-frontend/content/100-internet/101-what-is-http.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Resources added for Open ID
* Update content/roadmaps/101-backend/content/109-apis/106-authentication/105-openid.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* filled it up, with most help from the mdn docs
youtube link added( gud vid ), with the mdn docs
* Update content/roadmaps/101-backend/content/122-web-servers/readme.md
Co-authored-by: CookedPotato-1428 <103060805+CookedPotato-1428@users.noreply.github.com>
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Create 103 Tauri.md
Tauri is a great alternative for electron.js. Its super fast and small and secure. A great option every developer must consider.
* Add tauri docs
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* A Concrete Guide to React Native basics
I wasn't comfortable following the react native documentation when I was starting out as a web developer (even after learning javascript). this free react native course from udemy was my go-to guide to dive deep into react native basics. After playing with the basic knowledge you will acquire from this course then you'll be able to dive deep into react native documentation. This course structure follows a learn by build format. so you'll not be bored yet you'll be excited to build your first react native app ever.
* Update content/roadmaps/100-frontend/content/121-mobile-applications/100-react-native.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
In these SEO guidelines, the article talks about the importance of Clean Code, Site Architecture, Correct Title Tag, Meta Description, Optimized URLs, Meta Robot Tags, Structured Data, internal linking, Page Loading Speed, Website Responsiveness, and Security. which all of these play a crucial part from an SEO perspective for a web developer.
I found this ebook 2yrs ago explaining about Document Object Model. it was very helpful in my Journey to programming. A must-read for all DOM manipulators of the web.
* Update 106-data-replication.md
I added a short description and video link that explains data replication within four minutes. Please take a look at it, thanks :)
* Update content/roadmaps/101-backend/content/108-more-about-databases/106-data-replication.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* adding description to the type checkers
* Update content/roadmaps/100-frontend/content/116-type-checkers/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added a New resource to Fetch API
RapidAPI gives an in-depth explanation of fetch API. what it is, How to use it to process API responses, HTTP Methods with Fetch API and How can errors be handled. Suited For Beginners and the content is packed with real-time examples.
* Update content/roadmaps/100-frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update gRPC deffinition
I thought that some high-level definition of this would be nice.
* Update content/roadmaps/101-backend/content/109-apis/103-grpc.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
#### What roadmap does this PR target?
- [ ] Code Change
- [x] Frontend Roadmap
- [ ] Backend Roadmap
- [ ] DevOps Roadmap
- [ ] All Roadmaps
- [ ] Guides
#### Please acknowledge the items listed below
- [x] I have discussed this contribution and got a go-ahead in an issue before opening this pull request.
- [x] This is not a duplicate issue. I have searched and there is no existing issue for this.
- [x] I understand that these roadmaps are highly opinionated. The purpose is to not to include everything out there in these roadmaps but to have everything that is most relevant today comparing to the other options listed.
- [x] I have read the [contribution docs](../contributing) before opening this PR.
#### Enter the details about the contribution
I am suggesting the addition of PWA tutorials from MDN Web Docs. Apart from basic introduction to PWAs, it has numerous helpful How-to's such as using client-side storage with IndexedDB and Web Storage API, making mobile-first and installable PWAs, enabling "add to home screen", using notifications and push API etc.
#### What roadmap does this PR target?
- [ ] Code Change
- [x] Frontend Roadmap
- [ ] Backend Roadmap
- [ ] DevOps Roadmap
- [ ] All Roadmaps
- [ ] Guides
#### Please acknowledge the items listed below
- [x] I have discussed this contribution and got a go-ahead in an issue before opening this pull request.
- [x] This is not a duplicate issue. I have searched and there is no existing issue for this.
- [x] I understand that these roadmaps are highly opinionated. The purpose is to not to include everything out there in these roadmaps but to have everything that is most relevant today comparing to the other options listed.
- [x] I have read the [contribution docs](../contributing) before opening this PR.
#### Enter the details about the contribution
I have added a description and several resources that I have used myself and found useful in learning the topic of PWA performance analysis.
-1st link is from google web.dev and provides several articles on what is speed, how does it matter and how one can measure and optimize the performance of PWAs.
-2nd link gives detailed explanation on what is PRPL pattern and how it works.
-3rd resource is from google web.dev and teaches how to implement PRPL pattern to instantly load PWAs
-4th resource is from google web.dev and gives a detailed account about RAIL model and its implementation
-5th resource is from freecodecamp and gives an introduction to Chrome Lighthouse
-6th resource is from PWA training module of Google Developers (Web)
-7th resource is a 5 minute tutorial on how to use Lighthouse to audit your PWAs
I was unable to find a resource on devtools that is specifically catered to PWAs compared to general website performance analysis. Will add later if needed and this contribution gets approval!
* Resources added for JSON api
* Update content/roadmaps/101-backend/content/109-apis/101-json-apis.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add the Vox video "How Does the Internet Works?"
As the article that describes how the internet works, Vox also have a very intersing video about the topic. It's a great production that covers the whole process among sending and receiving a picture between mobile phones.
* Update content/roadmaps/100-frontend/content/100-internet/100-how-does-the-internet-work.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Resources added for MS IIS
* Update content/roadmaps/101-backend/content/122-web-servers/103-ms-iis.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added resources for Basics of SEO in Frontend Development Roadmap
* Update content/roadmaps/100-frontend/content/101-html/105-seo-basics.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added content for Pick a Framework
* Update content/roadmaps/100-frontend/content/111-pick-a-framework/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added Resources for Less
* Update content/roadmaps/100-frontend/content/109-css-preprocessors/102-less.md
* Update content/roadmaps/100-frontend/content/109-css-preprocessors/102-less.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Added Resources for Material UI
* Update content/roadmaps/100-frontend/content/114-css-frameworks/114-js-first/102-material-ui.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Adding an extra resource on HTTP
I've recently read this 3-part series on HTTP, mostly focused on HTTP/3 and QUIC, but the first part covers basic concepts about HTTP and how it evolved to HTTP/3 (which is really HTTP/2-over-QUIC) and I find it might be a great reading resource on the topic.
I'm not recommending the 2nd and 3rd parts as they're linked through the 1st one and they diverge a little from the topic of HTTP (going into performance improvements and deployment of QUIC)
* Replicating new HTTP resource to back end roadmap
* Add content to Css modules
Also I think you guys should change CSS Modules to Alternative Option as is not used much anymore.
* Update 101-css-modules.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add content for Scaling
- Add description and resources for vertical and horizontal scaling
- Fix typo
* Update 103-horizontal-vertial-scaling.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Add link to Roy Fielding's paper
The backend diagram makes reference to Roy Fielding's dissertation. I thought it would be helpful to have a direct link to his paper for convenience.
* Update 100-rest.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* DRY description and resources
Add a description and resources for DRY software development/design principle
* Minor space change
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Apollo Description and Content added
* Update content/roadmaps/100-frontend/content/119-graphql/100-apollo.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Update 104-accessibility.md
What I did: added new resource item
Why I chose it: Helped me several times to find a) a starting point on how to build an accessible web experience regarding a specific component and b) provides usually links with in-depth examples
* Update content/roadmaps/100-frontend/content/101-html/104-accessibility.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
✌️Added a youtube video as a watchable resource I found very useful and enough. I think knowing that much about how the browsers work is enough for the Front-end journey. The video covered all the important topics from User-Interface to Rendering Engine.
* Add Os and General KnowKnowledge content at backend roadmap
* Update content/roadmaps/101-backend/content/102-os-general-knowledge/readme.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* Updated the Electron section
Updated the Electron section in the front end road map
* Update 100-electron.md
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
* 📦 NEW: No auto formatting for JSON in VSCode
* 👌 IMPROVE: lingo for several libraries/software
* 👌 IMPROVE: alt text for Web Developer Roadmap Introduction
* 👌 IMPROVE: alt text for Frontend Roadmap
* 👌 IMPROVE: alt text for Back-end Roadmap
* 👌 IMPROVE: alt text for DevOps Roadmap
* 📖 DOC: make contribution fun again with more details
* 🐛 FIX: names of several libraries/software
Fetch API should be added instead of XMLHttpRequest(XHR) API
as fetch uses promises which enables a simpler and cleaner API.
However, understanding both Fetch/XHR is required for frontend.
Closes#475
* Added a list of Linux & Unix server distributions, and Emacs as text editor
* Updated Linux server list personal preference and possibilities
* Added OpenBSD and NetBSD as unix suitable OS's
> 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).
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.
As users, we easily get frustrated by the buffering videos, the images that take seconds to load, pages that got stuck because the content is being loaded. Loading the resources from some cache is much faster than fetching the same from the originating server. It reduces latency, speeds up the loading of resources, decreases the load on server, cuts down the bandwidth costs etc.
### Introduction
What is web cache? It is something that sits somewhere between the client and the server, continuously looking at the requests and their responses, looking for any responses that can be cached. So that there is less time consumed when the same request is made again.

> Note that this image is just to give you an idea. Depending upon the type of cache, the place where it is implemented could vary. More on this later.
Before we get into further details, let me give you an overview of the terms that will be used, further in the article
- **Client** could be your browser or any application requesting the server for some resource
- **Origin Server**, the source of truth, houses all the content required by the client and is responsible for fulfilling the client requests.
- **Stale Content** is the cached but expired content
- **Fresh Content** is the content available in cache that hasn't expired yet
- **Cache Validation** is the process of contacting the server to check the validity of the cached content and get it updated for when it is going to expire
- **Cache Invalidation** is the process of removing any stale content available in the cache

### Caching Locations
Web cache can be shared or private depending upon the location where it exists. Here is the list of different caching locations
- [Browser Cache](#browser-cache)
- [Proxy Cache](#proxy-cache)
- [Reverse Proxy Cache](#reverse-proxy-cache)
#### Browser Cache
You might have noticed that when you click the back button in your browser it takes less time to load the page than the time that it took during the first load; this is the browser cache in play. Browser cache is the most common location for caching and browsers usually reserve some space for it.

A browser cache is limited to just one user and unlike other caches, it can store the "private" responses. More on it later.
#### Proxy Cache
Unlike browser cache which serves a single user, proxy caches may serve hundreds of different users accessing the same content. They are usually implemented on a broader level by ISPs or any other independent entities for example.

#### Reverse Proxy Cache
Reverse proxy cache or surrogate cache is implemented close to the origin servers in order to reduce the load on server. Unlike proxy caches which are implemented by ISPs etc to reduce the bandwidth usage in a network, surrogates or reverse proxy caches are implemented near to the origin servers by the server administrators to reduce the load on server.
Although you can control the reverse proxy caches (since it is implemented by you on your server) you can not avoid or control browser and proxy caches. And if your website is not configured to use these caches properly, it will still be cached using whatever the defaults are set on these caches.
### Caching Headers
So, how do we control the web cache? Whenever the server emits some response, it is accompanied with some HTTP headers to guide the caches whether and how to cache this response. Content provider is the one that has to make sure to return proper HTTP headers to force the caches on how to cache the content.
- [Expires](#expires)
- [Pragma](#pragma)
- [Cache-Control](#cache-control)
- [private](#private)
- [public](#public)
- [no-store](#no-store)
- [no-cache](#no-cache)
- [max-age: seconds](#max-age)
- [s-maxage: seconds](#s-maxage)
- [must-revalidate](#must-revalidate)
- [proxy-revalidate](#proxy-revalidate)
- [Mixing Values](#mixing-values)
- [Validators](#validators)
- [ETag](#etag)
- [Last-Modified](#last-modified)
#### Expires
Before HTTP/1.1 and introduction of `Cache-Control`, there was `Expires` header which is simply a timestamp telling the caches how long should some content be considered fresh. Possible value to this header is absolute expiry date; where date has to be in GMT. Below is the sample header
```html
Expires: Mon, 13 Mar 2017 12:22:00 GMT
```
It should be noted that the date cannot be more than a year and if the date format is wrong, content will be considered stale. Also, the clock on cache has to be in sync with the clock on server, otherwise the desired results might not be achieved.
Although, `Expires` header is still valid and is supported widely by the caches, preference should be given to HTTP/1.1 successor of it i.e. `Cache-Control`.
#### Pragma
Another one from the old, pre HTTP/1.1 days, is `Pragma`. Everything that it could do is now possible using the cache-control header given below. However, one thing I would like to point out about it is, you might see `Pragma: no-cache` being used here and there in hopes of stopping the response from being cached. It might not necessarily work; as HTTP specification discusses it in the request headers and there is no mention of it in the response headers. Rather `Cache-Control` header should be used to control the caching.
#### Cache-Control
Cache-Control specifies how long and in what manner should the content be cached. This family of headers was introduced in HTTP/1.1 to overcome the limitations of the `Expires` header.
Value for the `Cache-Control` header is composite i.e. it can have multiple directive/values. Let's look at the possible values that this header may contain.
##### private
Setting the cache to `private` means that the content will not be cached in any of the proxies and it will only be cached by the client (i.e. browser)
```html
Cache-Control: private
```
Having said that, don't let it fool you in to thinking that setting this header will make your data any secure; you still have to use SSL for that purpose.
##### public
If set to `public`, apart from being cached by the client, it can also be cached by the proxies; serving many other users
```html
Cache-Control: public
```
##### no-store
**`no-store`** specifies that the content is not to be cached by any of the caches
```html
Cache-Control: no-store
```
##### no-cache
**`no-cache`** indicates that the cache can be maintained but the cached content is to be re-validated (using `ETag` for example) from the server before being served. That is, there is still a request to server but for validation and not to download the cached content.
```html
Cache-Control: max-age=3600, no-cache, public
```
##### max-age: seconds
**`max-age`** specifies the number of seconds for which the content will be cached. For example, if the `cache-control` looks like below:
```html
Cache-Control: max-age=3600, public
```
it would mean that the content is publicly cacheable and will be considered stale after 60 minutes
##### s-maxage: seconds
**`s-maxage`** here `s-` prefix stands for shared. This directive specifically targets the shared caches. Like `max-age` it also gets the number of seconds for which something is to be cached. If present, it will override `max-age` and `expires` headers for shared caching.
```html
Cache-Control: s-maxage=3600, public
```
##### must-revalidate
**`must-revalidate`** it might happen sometimes that if you have network problems and the content cannot be retrieved from the server, browser may serve stale content without validation. `must-revalidate` avoids that. If this directive is present, it means that stale content cannot be served in any case and the data must be re-validated from the server before serving.
**`proxy-revalidate`** is similar to `must-revalidate` but it specifies the same for shared or proxy caches. In other words `proxy-revalidate` is to `must-revalidate` as `s-maxage` is to `max-age`. But why did they not call it `s-revalidate`?. I have no idea why, if you have any clue please leave a comment below.
##### Mixing Values
You can combine these directives in different ways to achieve different caching behaviors, however `no-cache/no-store` and `public/private` are mutually exclusive.
If you specify both `no-store` and `no-cache`, `no-store` will be given precedence over `no-cache`.
```html
; If specified both
Cache-Control: no-store, no-cache
; Below will be considered
Cache-Control: no-store
```
For `private/public`, for any unauthenticated requests cache is considered `public` and for any authenticated ones cache is considered `private`.
### Validators
Up until now we only discussed how the content is cached and how long the cached content is to be considered fresh but we did not discuss how the client does the validation from the server. Below we discuss the headers used for this purpose.
#### ETag
Etag or "entity tag" was introduced in HTTP/1.1 specs. Etag is just a unique identifier that the server attaches with some resource. This ETag is later on used by the client to make conditional HTTP requests stating `"give me this resource if ETag is not same as the ETag that I have"` and the content is downloaded only if the etags do not match.
Method by which ETag is generated is not specified in the HTTP docs and usually some collision-resistant hash function is used to assign etags to each version of a resource. There could be two types of etags i.e. strong and weak
```html
ETag: "j82j8232ha7sdh0q2882" - Strong Etag
ETag: W/"j82j8232ha7sdh0q2882" - Weak Etag (prefixed with `W/`)
```
A strong validating ETag means that two resources are **exactly** same and there is no difference between them at all. While a weak ETag means that two resources are although not strictly same but could be considered same. Weak etags might be useful for dynamic content, for example.
Now you know what etags are but how does the browser make this request? by making a request to server while sending the available Etag in `If-None-Match` header.
Consider the scenario, you opened a web page which loaded a logo image with caching period of 60 seconds and ETag of `abc123xyz`. After about 30 minutes you reload the page, browser will notice that the logo which was fresh for 60 seconds is now stale; it will trigger a request to server, sending the ETag of the stale logo image in `if-none-match` header
```html
If-None-Match: "abc123xyz"
```
Server will then compare this ETag with the ETag of the current version of resource. If both etags are matched, server will send back the response of `304 Not Modified` which will tell the client that the copy that it has is still good and it will be considered fresh for another 60 seconds. If both the etags do not match i.e. the logo has likely changed and client will be sent the new logo which it will use to replace the stale logo that it has.
#### Last-Modified
Server might include the `Last-Modified` header indicating the date and time at which some content was last modified on.
```html
Last-Modified: Wed, 15 Mar 2017 12:30:26 GMT
```
When the content gets stale, client will make a conditional request including the last modified date that it has inside the header called `If-Modified-Since` to server to get the updated `Last-Modified` date; if it matches the date that the client has, `Last-Modified` date for the content is updated to be considered fresh for another `n` seconds. If the received `Last-Modified` date does not match the one that the client has, content is reloaded from the server and replaced with the content that client has.
```html
If-Modified-Since: Wed, 15 Mar 2017 12:30:26 GMT
```
You might be questioning now, what if the cached content has both the `Last-Modified` and `ETag` assigned to it? Well, in that case both are to be used i.e. there will not be any re-downloading of the resource if and only if `ETag` matches the newly retrieved one and so does the `Last-Modified` date. If either the `ETag` does not match or the `Last-Modified` is greater than the one from the server, content has to be downloaded again.
### Where do I start?
Now that we have got *everything* covered, let us put everything in perspective and see how you can use this information.
#### Utilizing Server
Before we get into the possible caching strategies , let me add the fact that most of the servers including Apache and Nginx allow you to implement your caching policy through the server so that you don't have to juggle with headers in your code.
**For example**, if you are using Apache and you have your static content placed at `/static`, you can put below `.htaccess` file in the directory to make all the content in it be cached for an year using below
```html
# Cache everything for an year
Header set Cache-Control "max-age=31536000, public"
```
You can further use `filesMatch` directive to add conditionals and use different caching strategy for different kinds of files e.g.
```html
# Cache any images for one year
<filesMatch".(png|jpg|jpeg|gif)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
# Cache any CSS and JS files for a month
<filesMatch".(css|js)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>
```
Or if you don't want to use the `.htaccess` file you can modify Apache's configuration file `http.conf`. Same goes for Nginx, you can add the caching information in the location or server block.
#### Caching Recommendations
There is no golden rule or set standards about how your caching policy should look like, each of the application is different and you have to look and find what suits your application the best. However, just to give you a rough idea
- You can have aggressive caching (e.g. cache for an year) on any static content and use fingerprinted filenames (e.g. `style.ju2i90.css`) so that the cache is automatically rejected whenever the files are updated.
Also it should be noted that you should not cross the upper limit of one year as it [might not be honored](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9)
- Look and decide do you even need caching for any dynamic content, if yes how long it should be. For example, in case of some RSS feed of a blog there could be the caching of a few hours but there couldn't be any caching for inventory items in an ERP.
- Always add the validators (preferably ETags) in your response.
- Pay attention while choosing the visibility (private or public) of the cached content. Make sure that you do not accidentally cache any user-specific or sensitive content in any public proxies. When in doubt, do not use cache at all.
- Separate the content that changes often from the content that doesn't change that often (e.g. in javascript bundles) so that when it is updated it doesn't need to make the whole cached content stale.
- Test and monitor the caching headers being served by your site. You can use the browser console or `curl -I http://some-url.com` for that purpose.
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.
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** which 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 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 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 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 which might be blocked in 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 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 performance of the website by introducing 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, reverse proxy server is a gateway to a web-server or group of web-servers.
> NOTE: This is not an accurate description 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***. 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 could stand to benefit from understanding how the Internet works. In this article, accompanied with an 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 below 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 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/).
We all have heard the mantra *"build it and they will come"* many times. Stories of people building a startup or project and seemingly stumbling upon a goldmine aren't few, but they aren't the rule. These stories are still the exception in the mass of launched projects and startups.
Before the [Wright brothers](https://en.wikipedia.org/wiki/Wright_brothers) built their Kitty Hawk, people generally believed heavy objects could not fly - physics simply forbade it. The idea to regularly board airplanes as we do it these days was unthinkable. It was considered an unrealistic daydream for humans to ever claim the sky. When the first airplanes took off, people were fascinated, of course. It was a topic people continued to talk about for ages. Technology had made something impossible possible. While the wording "build it and they will come" originated from the movie [Field of Dreams](https://en.wikipedia.org/wiki/Field_of_Dreams), this and similar historic events gave birth to the idea behind it.
The engineers' and inventors' dreams came true: spend time doing what you love while the success follows magically. The internet and web-standards democratized access to this dream. But with it, the idea behind it faded and became less and less powerful. In 2020, there are very strong signs the popular saying isn't correct anymore.
Why doesn't "build it and they will come" work anymore?
There are a few reasons working hard to make "build it and they will come" a thing of the past. This being said, it doesn't mean you can't succeed building a side-project anymore. You've just got to adjust the way you are building it.
### Building got much easier
As a software engineer, some websites are a blessing. Most of us couldn't work without GitHub, Stackoverflow and of course Google, ahem, DuckDuckGo. These powerful sites help us to solve problems, learn new techniques and find the right libraries to make building projects easier. If any of these sites are down, most engineers take a break and go for a coffee instead of trying to continue working. Combine this with more sophisticated web-standards and easier access to tooling, and you arrive at a world where building projects isn't just a job for highly specialist developers anymore. Powerful frameworks such as [Laravel](https://laravel.com/) and [Quasar Framework](https://quasar.dev/) are available for anyone to build projects on - for free.
In fact, building projects got to a point where some people simply build them as an exercise or hobby. If you spend some time browsing GitHub you will be surprised by the open source projects people built without any commercial goals. "Low code" and "No code" are the next wave of people building projects with less technological background.
### Too much going on: information overload
We are living in a world with information overload. In the online sphere, you can find a lot of useful information. But there is also a lot of noise. For each piece of information or advice you can find a number of opposing statements. This is partly due to the fact that the internet made it much easier to publish and share information. Everyone has been given a voice - for good or bad. This makes it much harder to reach potential users. Your new project probably just drowns amongst kitten videos, opinions, and news. Never has the average lifetime of published content been so low. You've got to come up with a marketing plan before setting out on the journey.
### Smaller Problems
Besides building being easier than ever before and attention being in short supply, there is another issue making the life of makers, inventors and engineers harder: today's problems are much smaller. Back when the previously mentioned Wright Brothers set out, they fascinated people with the problem they were aiming to address: flying. Unless your name is Elon, your problem is unlikely to attract many people naturally. As a solo developer or indie hacker, the chances are higher for having a much smaller problem in a niche (of a niche). With the information overload mentioned before, niches are pretty much the only way to build a side-project or startup and succeed.
Does sound pretty grim for inventors, developers and engineers? Well, yes and no. We've got to tweak the approach to get in front of the eye of potential users and customers.
How to market your project nowadays?
------------------------------------
The very first step to improving the odds of success is [idea validation](https://peterthaleikis.com/business-idea-validation/). While this sounds fairly obvious, many engineers and developers still don't validate their ideas before starting to build the MVP. The result is another stale project and wasted effort. To succeed you need to work on marketing before you start building anything. In the link mentioned before, I describe my approach to validation and collecting useful marketing information at the same time.
### Build your Audience first and the project after.
Build your audience before you build your project. Spend your time connecting with potential users, learn from their needs and talk about their problems. This will help you market your project later on. Audience first, project second. There are numerous ways to build an audience. One of the simplest and easiest is to start with a personal or [project blog](https://startupnamecheck.com/blog/how-to-start-a-small-business-blog).
Don't use Medium or a similar service - opt for a self-hosted blog as it allows you to build the blog freely to your needs and have decent links back to your project later on. Don't forget to add a newsletter. Newsletters are a key to reconnect in our world of short attention spans.
### Tool by Tool
Another approach is the "Tool by Tool" approach. I've first noticed this approach being used by Shopify. The team at Shopify are providing little tools such as a [logo generator](https://hatchful.shopify.com/) and release these tools free for anyone to use. This not just builds goodwill with people; it also allows Shopify to attract powerful backlinks to their projects. As developers we are in the perfect position to build such mini-tools. It boosts morale and drives attention at the same time.
Spend some time evaluating where your project or product will deliver value to the end-user. Look at options to split off small, independent tools. Build these and launch them before launching the whole product. This allows you to practice launching and promoting your part-projects at the same time. With each backlink to your part-projects you will enhance your ranking in Google. An example for a maker following this approach is [Kamban](https://kambanthemaker.com/) with [FlatGA](https://flatga.io/). He built FlatGA as phase one of a bigger project currently in development.
### Join a Maker community
While you are building your part-projects, don't forget to discuss the progress publicly. This helps to attract an audience around your work and makes the launches easier. You can use Twitter threads and Reddit posts to share updates. A maker community such as [makerlog](https://getmakerlog.com/) or [WIP.chat](https://wip.chat) can also extend your reach. These allow you to get instant feedback, keep yourself accountable and they will enhance your reach at the same time.
### Getting ready to Launch
Launching seems like this special moment when you release your project into the wide world. Often this moment is combined with high expectations and developers consider launching their project the key - if not only - part of their approach to marketing. While launching can help to attract some initial customers, it shouldn't be your only idea when it comes to marketing. You should also know that launching isn't a single event. You can (and should) launch again and again. Every time you launch you are increasing the chance to reach more and new customers. After the launch is before the launch.
### Marketing Is an On-going Fight
Many developers plan to launch their product on a few sites and see where it takes their project from there on. This works well, if your product goes viral by luck. A much more sustainable approach is constantly working a little on it. Marketing is most effective, if done consistently. That holds true for blogging as well as most other forms of marketing. A simple approach to keep you on the path to market your project regularly is subscribing to a free [newsletter with small marketing opportunities](https://wheretopost.email). This way, you are regularly reminded and given bite-sized tasks to complete.
Closing Words
-------------
I hope the article helped you to wrap your head around the idea that building side-projects alone doesn't solve any issues anymore. If you like what you've just read and want to read more, please consider subscribing to [my newsletter](https://peterthaleikis.com/newsletter). I'll send out the occasional email about interesting new articles or side-projects.
About the author
----------------
[Peter Thaleikis](https://peterthaleikis.com/) a software engineer and business owner. He has been developing web applications since around 2000. Before he started his own software development company [Bring Your Own Ideas Ltd.](https://bringyourownideas.com/), he has been Lead Developer for multiple organisations.
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 add 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
"title":"Frontend Developer Roadmap: Learn to become a modern frontend developer",
"description":"Learn to become a modern frontend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development.",
"keywords":[
"javascript roadmap 2022",
"frontend roadmap 2022",
"frontend developer roadmap 2022",
"guide to becoming a developer",
"guide to becoming a frontend developer",
"frontend developer",
"frontend engineer",
"frontend skills",
"frontend development",
"javascript developer",
"frontend development skills",
"frontend development skills test",
"frontend roadmap",
"frontend engineer roadmap",
"frontend developer roadmap",
"become a frontend developer",
"frontend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for frontend development",
"learn frontend development",
"what is frontend development",
"frontend developer quiz",
"frontend developer interview questions"
]
},
"title":"Frontend Developer",
"description":"Step by step guide to becoming a modern frontend developer in 2022",
"featuredTitle":"Frontend",
"featuredDescription":"Step by step guide to becoming a frontend developer in 2022",
"title":"Backend Developer Roadmap: Learn to become a modern backend developer",
"description":"Learn to become a modern backend developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.",
"keywords":[
"backend roadmap 2022",
"backend developer roadmap 2022",
"guide to becoming a developer",
"guide to becoming a backend developer",
"backend roadmap",
"backend developer",
"backend engineer",
"backend skills",
"backend development",
"javascript developer",
"backend development skills",
"backend development skills test",
"backend engineer roadmap",
"backend developer roadmap",
"become a backend developer",
"backend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for backend development",
"learn backend development",
"what is backend development",
"backend developer quiz",
"backend developer interview questions"
]
},
"title":"Backend Developer",
"description":"Step by step guide to becoming a modern backend developer in 2022",
"type":"role",
"featuredTitle":"Backend",
"featuredDescription":"Step by step guide to becoming a backend developer in 2022",
"title":"DevOps Roadmap: Learn to become a DevOps Engineer or SRE",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"devops roadmap 2022",
"sre roadmap 2022",
"operations roadmap 2022",
"guide to becoming a devops enginer",
"devops roadmap",
"sre roadmap",
"site reliability engineer roadmap",
"operations roles",
"become devops",
"devops skills",
"modern devops skills",
"devops skills test",
"skills for devops",
"learn devops",
"what is devops",
"what is sre",
"devops quiz",
"devops interview questions"
]
},
"title":"DevOps Roadmap",
"description":"Step by step guide for DevOps, SRE or any other Operations Role in 2022",
"featuredTitle":"DevOps",
"type":"role",
"featuredDescription":"Step by step guide for DevOps or operations role in 2022",
"title":"React Developer Roadmap: Learn to become a React developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"react roadmap 2022",
"react developer roadmap 2022",
"guide to becoming a react developer",
"react developer roadmap",
"react roadmap",
"become react developer",
"react developer skills",
"react skills test",
"skills for react development",
"learn react development",
"what is react",
"react quiz",
"react interview questions"
]
},
"title":"React Developer",
"description":"Everything that is there to learn about React and the ecosystem in 2022.",
"featuredTitle":"React",
"type":"tool",
"featuredDescription":"Step by step guide to become a React Developer in 2022",
"title":"Angular Developer Roadmap: Learn to become a Angular developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for angular development. Learn to become a modern Angular developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a angular developer",
"angular developer roadmap",
"angular roadmap",
"become angular developer",
"angular developer skills",
"angular skills test",
"skills for angular development",
"learn angular development",
"what is angular",
"angular quiz",
"angular interview questions"
]
},
"title":"Angular Developer",
"description":"Everything that is there to learn about Angular and the ecosystem in 2022.",
"featuredTitle":"Angular",
"type":"tool",
"featuredDescription":"Step by step guide to become a Angular Developer in 2022",
"title":"Vue Developer Roadmap: Learn to become a Vue developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for vue development. Learn to become a modern Vue developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a vue developer",
"guide to becoming a vue.js developer",
"vue developer roadmap",
"vue.js developer roadmap",
"vue roadmap",
"vue.js roadmap",
"become vue developer",
"become vue.js developer",
"vue developer skills",
"vue.js developer skills",
"vue skills test",
"vue.js skills test",
"skills for vue development",
"skills for vue.js development",
"learn vue development",
"learn vue.js development",
"what is vue",
"what is vue.js",
"vue quiz",
"vue.js quiz",
"vue interview questions",
"vue.js interview questions"
]
},
"title":"Vue Developer",
"description":"Everything that is there to learn about Vue and the ecosystem in 2022.",
"featuredTitle":"Vue",
"type":"tool",
"featuredDescription":"Step by step guide to become a Vue Developer in 2022",
"title":"JavaScript Developer Roadmap: Step by step guide to learn JavaScript",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for javascript development. Learn to become a modern JavaScript developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"javascript guide 2022",
"learn javascript",
"step by step javascript guide",
"javascript roadmap 2022",
"javascript developer roadmap 2022",
"guide to becoming a javascript developer",
"javascript developer roadmap",
"javascript roadmap",
"become javascript developer",
"javascript developer skills",
"javascript skills test",
"skills for javascript development",
"learn javascript development",
"what is javascript",
"javascript quiz",
"javascript interview questions"
]
},
"title":"JavaScript Roadmap",
"description":"Step by step guide to learn JavaScript in 2022",
"featuredTitle":"JavaScript",
"type":"tool",
"featuredDescription":"Step by step guide to learn JavaScript in 2022",
"title":"Android Developer Roadmap: Learn to become an Android developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming an android developer",
"android developer roadmap",
"android roadmap",
"become android developer",
"android developer skills",
"android skills test",
"skills for android development",
"learn android development",
"what is android",
"android quiz",
"android interview questions"
]
},
"title":"Android Developer",
"description":"Step by step guide to becoming an Android developer in 2022",
"featuredTitle":"Android",
"type":"role",
"featuredDescription":"Step by step guide to becoming an Android Developer in 2022",
"title":"Learn to become a modern Python developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming an python developer",
"python developer roadmap",
"python roadmap",
"become python developer",
"python developer skills",
"python skills test",
"skills for python development",
"learn python development",
"what is python",
"python quiz",
"python interview questions"
]
},
"title":"Python Developer",
"description":"Step by step guide to becoming a Python developer in 2022",
"featuredTitle":"Python",
"type":"tool",
"featuredDescription":"Step by step guide to becoming a Python Developer in 2022",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for Go development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a golang developer",
"guide to becoming a go developer",
"golang developer",
"go developer",
"guide to golang",
"guide to go",
"golang roadmap",
"go roadmap",
"golang skills",
"go skills",
"golang skills test",
"go skills test",
"skills for golang",
"skills for go",
"cloud development",
"what is golang",
"what is go",
"golang quiz",
"go quiz",
"golang interview questions",
"go interview questions"
]
},
"title":"Go Developer",
"description":"Step by step guide to becoming a Go developer in 2022",
"featuredTitle":"Go",
"type":"tool",
"featuredDescription":"Step by step guide to becoming a Go developer in 2022",
"title":"Learn to become a modern Java developer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for java development. Learn to become a modern Java developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a developer",
"guide to becoming a java developer",
"java developer",
"java engineer",
"java skills",
"guide to java",
"java roadmap",
"java skills",
"java skills test",
"skills for java",
"cloud development",
"what is java",
"java quiz",
"java interview questions",
"java engineer roadmap",
"java developer roadmap",
"become a java developer",
"java developer career path",
"java developer",
"modern java developer"
]
},
"title":"Java Developer",
"description":"Step by step guide to becoming a Java developer in 2022",
"featuredTitle":"Java",
"type":"tool",
"featuredDescription":"Step by step guide to becoming a Java Developer in 2022",
"title":"DBA Roadmap: Learn to become a database administrator with PostgreSQL",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a database administrator",
"guide to becoming a DBA",
"dba roadmap",
"db administrator roadmap",
"database administrator roadmap",
"postgresql roadmap",
"dba skills",
"db administrator skills",
"become dba",
"postgresql skills",
"modern dba skills",
"dba skills test",
"skills for dba",
"skills for database administrator",
"learn dba",
"what is dba",
"database administrator quiz",
"dba interview questions"
]
},
"title":"PostgreSQL DBA",
"description":"Step by step guide to becoming a modern PostgreSQL DB Administrator in 2022",
"featuredTitle":"DBA",
"type":"role",
"featuredDescription":"Step by step guide to become a PostgreSQL DBA in 2022",
"title":"Blockchain Developer Roadmap: Learn to become a blockchain developer",
"description":"Learn to become a blockchain developer using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.",
"keywords":[
"blockchain roadmap 2022",
"web3 developer roadmap",
"web3 developer roadmap 2022",
"web3 roadmap",
"blockchain developer roadmap 2022",
"guide to becoming a blockchain developer",
"guide to becoming a blockchain developer",
"blockchain roadmap",
"blockchain developer",
"blockchain engineer",
"blockchain skills",
"blockchain development",
"javascript developer",
"blockchain development skills",
"blockchain development skills test",
"blockchain engineer roadmap",
"blockchain developer roadmap",
"become a blockchain developer",
"blockchain developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for blockchain development",
"learn blockchain development",
"what is blockchain development",
"blockchain developer quiz",
"blockchain developer interview questions"
]
},
"title":"Blockchain Developer",
"description":"Step by step guide to becoming a blockchain developer in 2022.",
"featuredTitle":"Blockchain",
"featuredDescription":"Step by step guide to becoming a blockchain developer in 2022",
"title":"QA Roadmap: Learn to become a modern QA engineer",
"description":"Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords":[
"guide to becoming a QA engineer",
"QA engineer",
"QA skills",
"QA development skills",
"QA development skills test",
"QA engineer roadmap",
"become a QA engineer",
"QA engineer career path",
"skills for QA development",
"what is QA engineer",
"QA engineer quiz",
"QA engineer interview questions"
]
},
"title":"QA Engineer",
"description":"Steps to follow in order to become a modern QA Engineer in 2022",
"featuredTitle":"QA",
"type":"role",
"featuredDescription":"Step by step guide to becoming a modern QA Engineer in 2022",
<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 badgeText='Watch' 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. It defines how the content is requested and transmitted across the internet.
<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>
A web browser is a software application that enables a user to access and display web pages or other online content through its graphical user interface.
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.browserstack.com/guide/browser-rendering-engine'>Role of Rendering Engine in Browsers</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://developer.mozilla.org/en-US/docs/Web/Performance/How_browsers_work'>Populating the Page: How Browsers Work</BadgeLink>
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=WjDrMKZWCt0'>How Do Web Browsers Work?</BadgeLink>
The Domain Name System (DNS) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet resources.
A domain name is a unique, easy-to-remember address used to access websites, such as ‘google.com’, and ‘facebook.com’. Users can connect to websites using domain names thanks to the DNS system.
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_domain_name'>What is a Domain Name?</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.cloudflare.com/en-gb/learning/dns/glossary/what-is-a-domain-name/'>What is a Domain Name? | Domain name vs. URL</BadgeLink>
<BadgeLink badgeText='Watch' href='https://www.youtube.com/watch?v=Y4cRx19nhJk'>A Beginners Guide to How Domain Names Work</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.