{"id":1662,"url":"https://github.com/mikeroyal/Developer-Handbook","name":"Developer-Handbook","description":"Developer-Handbook","projects_count":3462,"last_synced_at":"2026-06-12T13:00:18.191Z","repository":{"id":39752364,"uuid":"323429879","full_name":"mikeroyal/Developer-Handbook","owner":"mikeroyal","description":"Developer-Handbook","archived":false,"fork":false,"pushed_at":"2024-01-04T22:12:28.000Z","size":973,"stargazers_count":88,"open_issues_count":1,"forks_count":22,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-26T21:03:54.714Z","etag":null,"topics":["awesome","awesome-list","awesome-lists","awesome-readme","awesome-resources","book","developer","development-tools","handbook","manual","reference"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikeroyal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-12-21T19:30:50.000Z","updated_at":"2026-04-28T15:06:24.000Z","dependencies_parsed_at":"2024-01-11T20:46:48.658Z","dependency_job_id":"91984ed9-e956-4419-8817-5f155c4a4cd9","html_url":"https://github.com/mikeroyal/Developer-Handbook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mikeroyal/Developer-Handbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FDeveloper-Handbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FDeveloper-Handbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FDeveloper-Handbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FDeveloper-Handbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikeroyal","download_url":"https://codeload.github.com/mikeroyal/Developer-Handbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeroyal%2FDeveloper-Handbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34245218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-04T18:13:57.295Z","updated_at":"2026-06-12T13:00:18.192Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Tools","Resources","Advanced Topics","elementaryOS App Center","Wine","Desktop Environments","Windows mangers","AppImages","Tools and Equipment","Essential Apps(depending on your workflow)","GameHub","Raspberry Pi Operating Systems","Winetricks","License","Cloud Infrastructure","Linux Hardware Vendors","Game Streaming","Protocols","Virtualization","Security Standards, Frameworks and Benchmarks","Operating System","Application Framework","Apple Silicon Resources","Runtime Platform","Data Structures","Flatpaks","Snaps","Steam","Lutris","Performance Benchmarks","Agile Methodologies \u0026 Disciplines","Linux Companies","Linux in the Cloud","Additional Ubuntu Tools/Resources for Enterprise \u0026 Small Businesses","ARM Resources","Resources and Equipment","Enable Firewall","Graphics Performance","Arch Linux User Repository (AUR)","Installing Pop Shell on Ubuntu"],"sub_categories":["Mesh networks","Home automation","Protocols","Operating systems (OS)","Middleware","Toolkits","Data visualization","Search","Hardware","In-memory data grids","Robotics"],"readme":"\u003cimg src=\"https://user-images.githubusercontent.com/45159366/103582927-a9bfa400-4e93-11eb-8594-aeb5756ed849.jpeg\"\u003e\n\n\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/102813619-fb3d3e80-437d-11eb-88a9-ef2b87a7ef70.png\"\u003e\n  \u003cbr /\u003e\n  Developer Handbook\n\u003c/h1\u003e\n\n \u003ca href=\"https://github.com/mikeroyal?tab=followers\"\u003e\n         \u003cimg alt=\"followers\" title=\"Follow me for Updates\" src=\"https://custom-icon-badges.demolab.com/github/followers/mikeroyal?color=236ad3\u0026labelColor=1155ba\u0026style=for-the-badge\u0026logo=person-add\u0026label=Follow\u0026logoColor=white\"/\u003e\u003c/a\u003e \t\n\n![Maintenance](https://img.shields.io/maintenance/yes/2024?style=for-the-badge)\n![Last-Commit](https://img.shields.io/github/last-commit/mikeroyal/developer-handbook?style=for-the-badge)\n\n#### A Developer Handbook covering a variuous of Computer Architectures, Programming languages, Security, Networking, Game Developement, Graphics programming, Agile Development, etc.. This handbook also includes the Applications, Frameworks, Libraries and Tools that will make you a better and more efficient developer within each of Development.\n\nHandBook Version 1.0, 2021\n\n[View License](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#license)\n\n[Contributing](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#contribute)\n\n**View/Download Handbook as a PDF: [Developer Handbook v1.0.pdf](https://github.com/mikeroyal/Developer-Handbook/files/5869749/Developer.Handbook.v1.0.pdf)**\n\n**Note 1**: This Developer handbook will be continuously updated and improved with new topics, diagrams, code samples, and other content throughout 2021 \u0026 beyond. This handook will also be available in other document formats such as PDF, [AsciiDoc](https://asciidoc.org) using [Asciidoctor](https://asciidoctor.org) and [MkDocs](https://www.mkdocs.org/), which is a fast and simple  static site generator that's geared towards building project documentation. \n\n**Note 2**: You can easily convert this markdown file to a PDF in [VSCode](https://code.visualstudio.com/) using this handy extension [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf).\n\n\n\n# Table of Contents\n\t\n| Section 1 | Section 2 | Section 3 |\n| --------------- | --------------- | --------------- |\n| 1. [DevOps](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#1-devops)|  21. [Swift](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#21-swift)| 41. [Objective-C](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#41-objective-c)|\n| 2. [IoT](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#2-iot)| 22. [Golang](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#22-golang)| 42. [Qt](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#42-qt)| \n| 3. [Open Source Security](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#3-open-source-security)| 23. [C++](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#23-c++)| 43. [LabVIEW](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#43-labview)| \n| 4. [Linux](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#4-linux)| 24. [Ruby](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#24-ruby)| 44. [Bootstrap](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#44-bootstrap)|\n| 5. [Networking](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#5-networking)|  25. [Java](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#25-java)| 45. [Elixir](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#45-elixir)| \n| 6. [Cloud-Native](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#6-cloud-native)| 26. [Scala](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#26-scala) | 46. [Erlang](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#46-erlang)|\n| 7. [Kubernetes](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#7-kubernetes) | 27. [Groovy](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#27-groovy)  | 47. [Lua](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#47-lua)|\n| 8. [ARM](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#8-arm) | 28. [Clojure](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#28-clojure)| 48. [Vala](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#48-vala)|\n| 9. [Assembly(x86)](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#9-assembly(x86))| 29. [WebAssembly](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#29-webassembly)|49. [Haskell](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#49-haskell)|\n| 10. [Machine Learning](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#10-machine-learning)|30. [CUDA](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#30-cuda)| 50. [PHP](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#50-php)\n| 11. [Python Guide](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#11-python)|31. [Julia](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#31-julia)|51. [Robotics](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#51-robotics)|\n| 12. [SQL](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#12-sql)| 32. [R](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#32-r)|52. [WSL](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#52-wsl) |\n| 13. [HMTL/CSS](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#13-hmtl-/-css)| 33. [MATLAB](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#33-matlab)|53. [3D Graphics \u0026 Design](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#53-3d-graphics--design)|\n| 14. [React](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#14-react)  |34. [Bash/Shell/PowerShell](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#34-bash-\\-shell-\\-poweshell) |54. [Game Development](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#54-game-gamedevelopment)| \n| 15. [Angular](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#15-angular) | 35. [C#](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#35-c#)|55. [Blockchain](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#55-blockchain)|\n| 16. [VueJS](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#16-vuejs) | 36. [F#](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#36-f#)|56. [Working Remote](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#56-working-remote)|\n| 17. [Node.js](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#17-node.js)| 37. [.NET/.NET Core](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#37-.net-/-.net-core)|57. [Audio \u0026 Video Editing](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#57-audio--video-editing)|\n| 18. [TypeScript](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#18-typescript)| 38. [Dart](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#38-dart)|58. [Podcasting](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#58-podcasting)|\n| 19. [Rust](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#19-rust)| 39. [Flutter](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#39-flutter)|59. [Agile Development](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#59-agile-development)|\n|20. [Kotlin](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#20-kotlin)|40. [Firebase](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#40-firebase)|60. [RISC-V](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#60-risc-v)\n|61. [Serverless](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#61-serverless)| 62.[XML](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#62-xml) | 63. [Verilog/SystemVerilog](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#63-verilog-\\-systemverilog)|\n|64. [Quantum Computing](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#64-quantum-computing)|65. [Data Structures \u0026 Algorithms](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#65-data-structures--algorithms)|66. [Differential Privacy](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#66-differential-privacy)|\n|67. [Raspberry Pi](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#67-raspberry-pi)|68. [Arduino](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#68-arduino)|69. [FPGA](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#69-fpga)|\n|70. [Wayland](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#70-wayland)|71. [Electron](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#71-electron)|72. [jQuery](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#72-jquery)|\n|73. [FinOps](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#73-finops)|74. [Telco 5G](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#74-telco-5g)|75. [Ubuntu](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#75-ubuntu)|\n|76. [Pop!_OS](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#76-pop_os)|77. [Fedora](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#77-fedora)|78. [Debian](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#78-debian)|\n|79. [SUSE/openSUSE](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#79-suseopensuse)|80. [Arch Linux](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#80-arch-linux)| 81. [Linux Mint](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#81-Linux-Mint)|\n|82. [elementary OS](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#82-elementary-OS)||\n\n\n\n# 1. DevOps \n\n[Back to the Top](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#table-of-contents)\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/96352525-abd64b80-1078-11eb-95c8-e29d4c592bec.png\"\u003e\n  \u003cbr /\u003e\n  DevOps Guide\n\u003c/h1\u003e\n\n#### A guide covering DevOps including the applications and tools that will make you a better and more efficient DevOps Engineer.\n\n## Resources\n\n[DevOps Engineering on AWS from AWS Training](https://aws.amazon.com/training/course-descriptions/devops-engineering/)\n\n[AWS Certified DevOps Engineer - Professional from A Cloud Guru](https://acloud.guru/learn/aws-certified-devops-engineer-professional)\n\n[Microsoft Certified: DevOps Engineer Expert Cert.](https://docs.microsoft.com/en-us/learn/certifications/devops-engineer)\n\n[Introduction to Azure DevOps from A Cloud Guru](https://acloud.guru/learn/introduction-to-azure-devops)\n\n[Architecting with Google Compute Engine](https://google.qwiklabs.com/courses/1421?utm_source=gcp_training\u0026utm_medium=website\u0026utm_campaign=cgc)\n\n[Architecting with Google Kubernetes Engine in Google Cloud](https://google.qwiklabs.com/courses/1232?utm_source=gcp_training\u0026utm_medium=website\u0026utm_campaign=cgc)\n\n[VMware Training and Certification Program](https://www.vmware.com/education-services/certification.html)\n\n[Cloudera Certification Program](https://www.cloudera.com/about/training/certification.html)\n\n[Salesforce Certification Program](https://trailhead.salesforce.com/credentials/administratoroverview)\n\n[Salesforce Superbadges](https://trailhead.salesforce.com/superbadges)\n\n[Red Hat Training and Certification Program](https://www.redhat.com/en/services/training-and-certification)\n\n[Linux Foundation Training and Certification Program](https://training.linuxfoundation.org/certification/)\n\n[Linux Professional Institute(LPI) Training and Certification](https://www.lpi.org)\n\n[Learn DevOps with Online Courses and Lessons from edX](https://www.edx.org/learn/devops)\n\n[Top DevOps Courses Online from Udemy](https://www.udemy.com/topic/devops/)\n\n[Devops Courses from Coursera](https://www.coursera.org/courses?languages=en\u0026query=devops)\n\n[Snowflake Hands-On Essentials Online Course](https://training.snowflake.com/courses)\n\n[Snowflake Education and Training](https://www.snowflake.com/education-and-training/)\n\n[Snowflake Certifications](https://www.snowflake.com/certifications/)\n\n[Data Cloud Academy from Snowflake](https://www.snowflake.com/data-cloud-academy/)\n\n[Snowflake Decoded: Fundamentals and hands on Training on Udemy](https://www.udemy.com/course/snowflake-essentials/)\n\n## Tools\n\n[GitHub](https://github.com/) provides hosting for software development version control using Git. It offers all of the distributed version control and source code management functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.\n\n[GitHub Codespaces](https://docs.github.com/en/free-pro-team@latest/github/developing-online-with-codespaces) is an integrated development environment(IDE) on GitHub. That allows developers to develop entirely in the cloud using Visual Studio and Visual Studio Code.\n  \n[GitHub Actions](https://docs.github.com/en/actions) will automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you'd like, including CI/CD, and combine actions in a completely customized workflow.[GitHub Actions for Azure](https://docs.microsoft.com/en-us/azure/developer/github/github-actions) you can create workflows that you can set up in your repository to build, test, package, release and deploy to Azure.Learn more about all other integrations with Azure.\n\n[GitLab](https://about.gitlab.com/) is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and CI/CD pipeline features, using an open-source license, developed by GitLab Inc.\n\n[Jenkins](https://jenkins.io/) is a free and open source automation server. Jenkins helps to automate the non-human part of the software development process, with continuous integration and facilitating technical aspects of continuous delivery.\n\n[Bitbucket](https://bitbucket.org/) is a web-based version control repository hosting service owned by Atlassian, for source code and development projects that use either Mercurial or Git revision control systems. Bitbucket offers both commercial plans and free accounts. It offers free accounts with an unlimited number of private repositories. Bitbucket integrates with other Atlassian software like Jira, HipChat, Confluence and Bamboo.\n\n[Bamboo](https://www.atlassian.com/software/bamboo) is a continuous integration (CI) server that can be used to automate the release management for a software application, creating a continuous delivery pipeline.\n\n[Codecov](https://codecov.io/) is the leading, dedicated code coverage solution. It provides highly integrated tools to group, merge, archive and compare coverage reports. Whether your team is comparing changes in a pull request or reviewing a single commit, Codecov will improve the code review workflow and quality.\n\n[Drone](https://drone.io/) is a Continuous Delivery system built on container technology. Drone uses a simple YAML configuration file, a superset of docker-compose, to define and execute Pipelines inside Docker containers.\n\n[Travis CI](https://travis-ci.org/) is a hosted continuous integration service used to build and test software projects hosted at GitHub.\n\n[Circle CI](https://circleci.com/) is a continuous integration and continuous delivery platform that helps software teams work smarter, faster.\n\n[Zuul-CI](https://zuul-ci.org/index.html) is a program that drives continuous integration, delivery, and deployment systems with a focus on project gating and interrelated projects. Using the same [Ansible playbooks](https://docs.ansible.com/ansible/latest/user_guide/playbooks.html) to deploy your system and run your tests.\n\n[Artifactory](https://jfrog.com/artifactory/) is a Universal Artifact Repository Manager developed by JFrog. It supports all major packages, enterprise ready security, clustered, HA, Docker registry, multi-site replication and scalable.\n\n[Azure DevOps](https://azure.microsoft.com/en-us/services/devops/?nav=min) is a set of services for teams to share code, track work, and ship software; CLIs Build, deploy, diagnose, and manage multi-platform, scalable apps and services; Azure Pipelines Continuously build, test, and deploy to any platform and cloud; Azure Lab Services Set up labs for classrooms, trials, development and testing, and other scenarios.\n\n[Team City](https://www.jetbrains.com/teamcity/) is a build management and continuous integration server from JetBrains.\n\n[Shippable](https://www.shippable.com/) simplifies DevOps and makes it systematic with an Assembly Line platform that is heterogeneous, flexible, and provides complete visibility across your DevOps workflows. \n\n[Spinnaker](https://www.spinnaker.io/) is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.\n\n[AWS CodeBuild](https://aws.amazon.com/codebuild/) is a fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don't need to provision, manage, and scale your own build servers.\n\n[Selenium](https://www.seleniumhq.org/) is a free (open source) automated testing suite for web applications across different browsers and platforms. \n\n[Cucumber](https://cucumber.io/) is a tool based on Behavior Driven Development (BDD) framework which is used to write acceptance tests for the web application. It allows automation of functional validation in easily readable and understandable format (like plain English) to Business Analysts, Developers, and Testers.\n\n[JUnit](https://junit.org/junit5/) is a unit testing framework for the Java programming language.\n\n[Mocha](https://mochajs.org/) is a JavaScript test framework for Node.js programs, featuring browser support, asynchronous testing, test coverage reports, and use of any assertion library.\n\n[Karma](https://karma-runner.github.io/latest/index.html) is a simple tool that allows you to execute JavaScript code in multiple real browsers.\n\n[Jasmine](https://jasmine.github.io/) is an open source testing framework for JavaScript. It aims to run on any JavaScript-enabled platform, to not intrude on the application nor the IDE, and to have easy-to-read syntax.\n\n[Maven](https://maven.apache.org/) is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by the Apache Software Foundation.\n\n[Gradle](https://gradle.org/) is an open-source build-automation system that builds upon the concepts of Apache Ant and Apache Maven and introduces a Groovy-based domain-specific language instead of the XML form used by Apache Maven for declaring the project configuration.\n\n[Chef](https://www.chef.io/) is an effortless Infrastructure Suite offers visibility into security and compliance status across all infrastructure and makes it easy to detect and correct issues long before they reach production.\n\n[Puppet](https://puppet.com/) is an open source tool that makes continuous integration and delivery of your software on traditional or containerized infrastructure easy by pulling together all your existing tools and giving you flexibility to deploy your way. \n\n[Ansible](https://www.ansible.com/) is an open-source software provisioning, configuration management, and application-deployment tool. It runs on many Unix-like systems, and can configure both Unix-like systems as well as Microsoft Windows.\n\n[KubeInit](https://github.com/kubeinit/kubeinit) provides Ansible playbooks and roles for the deployment and configuration of multiple Kubernetes distributions.\n\n[Salt](https://www.saltstack.com/) is Python-based, open-source software for event-driven IT automation, remote task execution, and configuration management. Supporting the \"Infrastructure as Code\" approach to data center system and network deployment and management, configuration automation, SecOps orchestration, vulnerability remediation, and hybrid cloud control. \n\n[Terraform](https://www.terraform.io/) is an open-source infrastructure as code software tool created by HashiCorp.It enables users to define and provision a datacenter infrastructure using a high-level configuration language known as Hashicorp Configuration Language (HCL), or optionally JSON.\n\n[Consul](https://www.consul.io) is a service networking solution to connect and secure services across any runtime platform and public or private cloud.\n\n[Packer](https://www.packer.io/) is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image.\n\n[Nomad](https://www.nomadproject.io/) is a highly available, distributed, data-center aware cluster and application scheduler designed to support the modern datacenter with support for long-running services, batch jobs, and much more.\n\n[Vagrant](https://www.vagrantup.com/) is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time and increases production parity.\n\n[Vault](https://www.hashicorp.com/products/vault/) is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log.\n\n[CFEngine](https://cfengine.com/) is an open-source configuration management system, written by Mark Burgess.Its primary function is to provide automated configuration and maintenance of large-scale computer systems, including the unified management of servers, desktops, consumer and industrial devices, embedded networked devices, mobile smartphones, and tablet computers.\n\n[Octpus Deploy](https://octopus.com/) is the deployment automation server for your entire team, designed to make it easy to orchestrate releases and deploy applications, whether on-premises or in the cloud.\n\n[AWS CodeDeploy](https://aws.amazon.com/codedeploy/) is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during application deployment, and handles the complexity of updating your applications.\n\n[Kubernetes](https://kubernetes.io/) is an open-source container-orchestration system for automating application deployment, scaling, and management. It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation.\n\n[Docker](https://www.docker.com/) is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels. All containers are run by a single operating-system kernel and are thus more lightweight than virtual machines.\n\n[PowerShell/PowerShell Core](https://docs.microsoft.com/en-us/powershell/) is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework that works well with your existing tools and is optimized for dealing with structured data (e.g. JSON, CSV, XML, etc.), REST APIs, and object models. It includes a command-line shell, an associated scripting language and a framework for processing cmdlets.\n\n[Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/) creates virtual machines on Windows 10. Hyper-V can be enabled in many ways including using the Windows 10 control panel, PowerShell or using the Deployment Imaging Servicing and Management tool (DISM).\n\n[Cloud Hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor) is an open source Virtual Machine Monitor (VMM) that runs on top of [KVM](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt). The project focuses on exclusively running modern, cloud workloads, on top of a limited set of hardware architectures and platforms. Cloud workloads refers to those that are usually run by customers inside a cloud provider. Cloud Hypervisor is implemented in [Rust](https://www.rust-lang.org/) and is based on the [rust-vmm](https://github.com/rust-vmm) crates.\n\n[Intel® Graphics Virtualization Technology (Intel® GVT)](https://github.com/intel/gvt-linux) is a full GPU virtualization solution with mediated pass-through, starting from 4th generation Intel Core (TM) processors with Intel processor graphics(Broadwell and newer). It can be used to virtualize the GPU for multiple guest virtual machines, effectively providing near-native graphics performance in the virtual machine and still letting your host use the virtualized GPU normally.\n\n[VMware vSphere Hypervisor](https://www.vmware.com/products/vsphere-hypervisor.html) is a bare-metal hypervisor that virtualizes servers; allowing you to consolidate your applications while saving time and money managing your IT infrastructure.\n\n[VMware vSphere](https://www.vmware.com/products/vsphere.html) is the industry-leading compute virtualization platform, and your first step to application modernization. It has been rearchitected with native Kubernetes to allow customers to modernize the 70 million+ workloads now running on vSphere.\n\n[VMware Tanzu](https://tanzu.vmware.com/tanzu) is a centralized management platform for consistently operating and securing your Kubernetes infrastructure and modern applications across multiple teams and private/public clouds.\n\n[Rancher](https://rancher.com/) is a complete software stack for teams adopting containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters, while providing DevOps teams with integrated tools for running containerized workloads.\n\n[K3s](https://github.com/rancher/k3s) is a highly available, certified Kubernetes distribution designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances. \n\n[Rook](https://rook.io/) is an open source cloud-native storage orchestrator for Kubernetes that turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks of a storage administrator: deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management.\n\n[Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine/) is a managed, production-ready environment for deploying containerized applications.\n\n[Anthos](https://cloud.google.com/anthos/docs/concepts/overview) is a modern application management platform that provides a consistent development and operations experience for cloud and on-premises environments.\n\n[AWS ECS](https://aws.amazon.com/ecs/) is a highly scalable, high-performance container orchestration service that supports Docker containers and allows you to easily run and scale containerized applications on AWS. Amazon ECS eliminates the need for you to install and operate your own container orchestration software, manage and scale a cluster of virtual machines, or schedule containers on those virtual machines.\n\n[Apache Mesos](http://mesos.apache.org/) is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks. It can run Hadoop, Jenkins, Spark, Aurora, and other frameworks on a dynamically shared pool of nodes.\n\n[Apache Spark](https://spark.apache.org/) is a unified analytics engine for big data processing, with built-in modules for streaming, SQL, machine learning and graph processing.\n\n[Apache Hadoop](http://hadoop.apache.org/) is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.\n\n[Microsoft Azure](https://azure.microsoft.com/en-us/) is a cloud computing service created by Microsoft for building, testing, deploying, and managing applications and services through Microsoft-managed data centers.\n\n[Azure Functions](https://azure.microsoft.com/en-us/services/functions/) is a solution for easily running small pieces of code, or \"functions,\" in the cloud. You can write just the code you need for the problem at hand, without worrying about a whole application or the infrastructure to run it. \n\n[Rkt](https://coreos.com/rkt/) is a pod-native container engine for Linux. It is composable, secure, and built on standards. \n\n[AWS Lambda](https://aws.amazon.com/lambda/) is an event-driven, serverless computing platform provided by Amazon as a part of the Amazon Web Services. It is a computing service that runs code in response to events and automatically manages the computing resources required by that code.\n\n[Helm](https://helm.sh/) is the Kubernetes Package Manager.\n\n[Kubespray](https://kubespray.io/) is a tool that combines Kubernetes and Ansible to easily install Kubernetes clusters that can be deployed on [AWS](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/aws.md), GCE, [Azure](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/azure.md), [OpenStack](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/openstack.md), [vSphere](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/vsphere.md), [Packet](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/packet.md) (bare metal), Oracle Cloud Infrastructure (Experimental), or Baremetal\n\n[Red Hat OpenShift](https://www.openshift.com/) is focused on security at every level of the container stack and throughout the application lifecycle. It includes long-term, enterprise support from one of the leading Kubernetes contributors and open source software companies.\n\n[OpenShift Hive](https://github.com/openshift/hive) is an operator which runs as a service on top of Kubernetes/OpenShift. The Hive service can be used to provision and perform initial configuration of OpenShift 4 clusters.\n\n[OKD](https://okd.io/) is a community distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OKD adds developer and operations-centric tools on top of Kubernetes to enable rapid application development, easy deployment and scaling, and long-term lifecycle maintenance for small and large teams.\n\n[Odo](https://odo.dev/) is a fast, iterative, and straightforward CLI tool for developers who write, build, and deploy applications on Kubernetes and OpenShift.\n\n[Kata Operator](https://github.com/openshift/kata-operator) is an operator to perform lifecycle management (install/upgrade/uninstall) of [Kata Runtime](https://katacontainers.io/) on Openshift as well as Kubernetes cluster.\n\n[Knative](https://knative.dev/) is a Kubernetes-based platform to build, deploy, and manage modern serverless workloads. Knative takes care of the operational overhead details of networking, autoscaling (even to zero), and revision tracking. \n\n[Etcd](https://etcd.io/) is a distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. Etcd is used as the backend for service discovery and stores cluster state and configuration for Kubernetes.\n\n[OpenStack](https://www.openstack.org/) is a free and open-source software platform for cloud computing, mostly deployed as infrastructure-as-a-service that controls large pools of compute, storage, and networking resources throughout a datacenter, managed through a dashboard or via the OpenStack API. OpenStack works with popular enterprise and open source technologies making it ideal for heterogeneous infrastructure.\n\n[Cloud Foundry](https://www.cloudfoundry.org/) is an open source, multi cloud application platform as a service that makes it faster and easier to build, test, deploy and scale applications, providing a choice of clouds, developer frameworks, and application services. It is an open source project and is available through a variety of private cloud distributions and public cloud instances. \n\n[Splunk](https://www.splunk.com/) software is used for searching, monitoring, and analyzing machine-generated big data, via a Web-style interface.\n\n[Prometheus](https://prometheus.io/) is a free software application used for event monitoring and alerting. It records real-time metrics in a time series database (allowing for high dimensionality) built using a HTTP pull model, with flexible queries and real-time alerting.\n\n[Loki](https://grafana.com/oss/loki/) is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate. It does not index the contents of the logs, but rather a set of labels for each log stream.\n\n[Thanos](https://thanos.io/) is a set of components that can be composed into a highly available metric system with unlimited storage capacity, which can be added seamlessly on top of existing Prometheus deployments.\n\n[Container Storage Interface (CSI)](https://www.architecting.it/blog/container-storage-interface/) is an API that lets container orchestration platforms like Kubernetes seamlessly communicate with stored data via a plug-in.\n\n[OpenEBS](https://openebs.io/) is a Kubernetes-based tool to create stateful applications using Container Attached Storage.\n\n[ElasticSearch](https://www.elastic.co/) is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java.\n\n[Logstash](https://www.elastic.co/products/logstash) is a tool for managing events and logs. When used generically, the term encompasses a larger system of log collection, processing, storage and searching activities.\n\n[Kibana](https://www.elastic.co/products/kibana) is an open source data visualization plugin for Elasticsearch. It provides visualization capabilities on top of the content indexed on an Elasticsearch cluster. Users can create bar, line and scatter plots, or pie charts and maps on top of large volumes of data.\n\n[New Relic](https://newrelic.com/) is a SaaS-based monitoring tool that fully supports the way DevOps teams work in the modern enterprise by streamlining your workflows with today's collaboration software and orchestration tools like Puppet, Chef, and Ansible.\n\n[Nagios](https://www.nagios.org/) is a free and open source computer-software application that monitors systems, networks and infrastructure. Nagios offers monitoring and alerting services for servers, switches, applications and services. It alerts users when things go wrong and alerts them a second time when the problem has been resolved.\n\n[SonarQube](https://www.sonarqube.org/) is an open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities on 20+ programming languages.\n\n[Genie](https://netflix.github.io/genie) is a federated job orchestration engine developed by Netflix. Genie provides REST APIs to run a variety of big data jobs like Hadoop, Pig, Hive, Spark, Presto, Sqoop and more. It also provides APIs for managing the metadata of many distributed processing clusters and the commands and applications which run on them.\n\n[Inviso](https://github.com/Netflix/inviso) is a lightweight tool that provides the ability to search for Hadoop jobs, visualize the performance, and view cluster utilization.\n\n[Fenzo](https://github.com/Netflix/Fenzo) is a scheduler Java library for Apache Mesos frameworks that supports plugins for scheduling optimizations and facilitates cluster autoscaling.\n\n[Dynomite](https://github.com/Netflix/dynomite) is a thin, distributed dynamo layer for different storage engines and protocols, which includes [Redis](http://redis.io/) and [Memcached](http://www.memcached.org/). Dynomite supports multi-datacenter replication and is designed for High Availability(HA).\n\n[Dyno](https://github.com/Netflix/dynomite) is a tool that is used to scale a Java client application utilizing [Dynomite](https://github.com/Netflix/dynomite).\n\n[Raigad](https://github.com/Netflix/Raigad) is a process/tool that runs alongside Elasticsearch to automate backup/recovery, Deployments and Centralized Configuration management.\n\n[Priam](https://github.com/Netflix/Priam) is a process/tool that runs alongside Apache Cassandra to automate backup/recovery, Deployments and Centralized Configuration management.\n\n[Chaos Monkey](https://github.com/Netflix/chaosmonkey) is a resiliency tool  used to randomly terminates virtual machine instances and containers that run inside of your production environment. Chaos Monkey should work with any backend that [Spinnaker](http://www.spinnaker.io/) supports (AWS, Google Compute Engine, Microsoft Azure, Kubernetes, and Cloud Foundry).\n\n[Falcor](https://netflix.github.io/falcor/) is a JavaScript library for efficient data fetching. Falcor lets you represent all your remote data sources as a single domain model via a virtual JSON graph, whether in memory on the client or over the network on the server.\n\n[Restify](https://github.com/restify/node-restify) is a framework, utilizing [connect](https://github.com/senchalabs/connect) style middleware for building REST APIs. \n\n[Traefik](https://traefik.io/traefik/) is an open source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them. What sets Traefik apart, besides its many features, is that it automatically discovers the right configuration for your services.\n\n[Jira](https://www.atlassian.com/software/jira) is a proprietary issue tracking product developed by Atlassian that allows bug tracking and agile project management.\n\n[Pivotal Tracker](https://www.pivotaltracker.com/) is the agile project management tool of choice for developers around the world for real-time collaboration around a shared, prioritized backlog.\n\n[Trello](https://trello.com/) is a web-based Kanban-style list-making application that gives you perspective over all your projects, at work and at home.\n\n[Microsoft Teams](https://teams.microsoft.com/start) is the hub for team collaboration in Office 365 that integrates the people, content, and tools your team needs to be more engaged and effective.\n\n[Slack](https://slack.com/) is a cloud-based proprietary instant messaging platform developed by Slack Technologies.\n\n[OpsGenie](https://www.opsgenie.com/) is a cloud-based service for dev \u0026 ops teams, providing reliable alerts, on-call schedule management and escalations. OpsGenie integrates with monitoring tools \u0026 services, ensures the right people are notified.\n\n[Pagerduty](https://www.pagerduty.com/) automates processes built on best practices, allowing you to focus on higher value parts of incident response. Granular and scalable permissions enable teams to administer and operate independently while controlling visibility.\n\n[Veracode](https://www.veracode.com/) is a leading provider of enterprise-class application security, seamlessly integrating agile security solutions for organizations around the globe. In addition to application security services and secure devops services, Veracode provides a full security assessment to ensure your website and applications are secure, and ensures full enterprise data protection.\n\n\n# 2. IoT \n\n[Back to the Top](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#table-of-contents)\n\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/80925254-1271e200-8d43-11ea-9561-8c9fdc40eabc.png\"\u003e\n  \u003cbr /\u003e\n IoT Guide\n\u003c/h1\u003e\n\n #### A guide for getting started with IoT devices including software and hardware that will make you a better and more efficient IoT developer.\n \n ## Resources\n \n[Microsoft Certified: Azure IoT Developer Specialty](https://docs.microsoft.com/en-us/learn/certifications/azure-iot-developer-specialty)\n\n[AWS Internet of Things Foundation Series Training](https://www.aws.training/Details/Curriculum?id=27289)\n\n[Google’s Internet of Things (IoT)](https://developers.google.com/iot/)\n\n[Internet Of Things Courses from Udemy](https://www.udemy.com/topic/internet-of-things/)\n\n[IoT (Internet of Things) Courses from edX](https://www.edx.org/learn/iot-internet-of-things)\n\n[IoT (Internet of Things) Courses from Coursera](https://www.coursera.org/courses?languages=en\u0026query=iot)\n\n ## Tools\n\n[Azure IoT Tools](https://developer.microsoft.com/en-us/windows/iot/) is a collection of Microsoft-managed cloud services that connect, monitor, and control billions of IoT assets. In simpler terms, an IoT solution is made up of one or more IoT devices that communicate with one or more back-end services hosted in the cloud.\n\n[AWS IoT Tools](https://aws.amazon.com/iot/) has broad and deep IoT services, from the edge to the cloud. Along with IoT analytics that enables you to apply machine learning to your IoT data with hosted Jupyter Notebooks. You can directly connect your IoT data to the notebook and build, train, and execute models right from the AWS IoT Analytics console without having to manage any of the underlying infrastructure.\n\n[Google Cloud IoT](https://cloud.google.com/solutions/iot/) is a complete set of tools to connect, process, store, and analyze data both at the edge and in the cloud.\n\n[DeviceHive](https://www.devicehive.com) is a free, highly scalable open-source IoT platform for data collection, processing and analysis, visualization, and device management with the broad range of integration options.\n\n[Distributed Services Architecture (DSA)](https://github.com/IOT-DSA) is an open source IoT platform that facilitates device inter-communication, logic and applications at every layer of the Internet of Things infrastructure. The objective is to unify the disparate devices, services and applications into a structured and adaptable real-time data model.\n\n[IoTivity](https://iotivity.org) is an open source software framework enabling seamless device-to-device connectivity to address the emerging needs of the Internet of Things. \n\n[InfluxDB](https://www.influxdata.com) is an open source time series database, purpose-built by InfluxData for monitoring metrics and events, provides real-time visibility into stacks, sensors, and systems. Use InfluxDB to capture, analyze, and store millions of points per second, meet demanding SLA's, and chart a path to automation.\n\n[Eclipse IoT Project](https://projects.eclipse.org/projects/iot) provides open source technology that will be used to build IoT solutions for industry and consumers.\n\n[M2MLabs MainSpring](http://www.m2mlabs.com/) is an application framework for building machine-to-machine applications like vehicle tracking or machine remote montoring. In such applications typically a remote device equipped with sensors (e.g. gps, temperature, pressure) and actors communicates with a server application that is running the device communication protocol, device configuration, storage of data sent by the devices as well as the application business logic and the presentation layer. \n\n[EdgeX Foundry](https://www.edgexfoundry.org) is a vendor-neutral project under the Linux Foundation. The initiative is aligned around a common goal: the simplification and standardization of the foundation for edge computing architectures in the Industrial IoT market, while still allowing the ecosystem to add significant value.\n\n[The Open Connectivity Foundation](https://openconnectivity.org) is dedicated to ensuring secure interoperability for consumers, businesses and industries by delivering a standard communications platform, a bridging specification, an open source implementation and a certification program allowing devices to communicate regardless of form factor, operating system, service provider, transport technology or ecosystem.\n\n[Eclipse Foundation](https://www.eclipse.org) provides our global community of individuals and organizations with a mature, scalable and commercially-friendly environment for open source software collaboration and innovation.\n\n[Open Source Hardware Association (OSHWA)](https://www.oshwa.org) is a non-profit organization that advocates for open-source hardware. It aims to act as a hub of open source hardware activity of all types while actively cooperating with other initiatives such as the TAPR Open Hardware License, open-source development groups at CERN, and the Open Source Initiative (OSI).\n\n### Protocols\n\n[DBus](https://www.freedesktop.org/wiki/Software/dbus/) is an open source software bus developed Red Hat for inter-process communication, and remote procedure call mechanism that allows communication between multiple processes running concurrently on the same machine.\n\n[SOAP](https://www.soapui.org) is a messaging protocol specification for exchanging structured information in the implementation of web services in computer networks. SOAP can extend HTTP for XML messaging. SOAP provides data transport for Web services. SOAP can exchange complete documents or call a remote procedure. SOAP can be used for broadcasting a message.\n\n[gRPC](https://grpc.io) is a modern, open source remote procedure call (RPC) framework developed by Google that can run anywhere. It enables client and server applications to communicate transparently, and makes it easier to build connected systems.It uses HTTP/2 for transport, Protocol Buffers as the interface description language, and provides features such as authentication, bidirectional streaming and flow control, blocking or nonblocking bindings, and cancellation and timeouts.\n\n[LWM2M](https://www.omaspecworks.org/what-is-oma-specworks/iot/lightweight-m2m-lwm2m/) is a protocol from the Open Mobile Alliance for M2M or IoT device management. Lightweight M2M enabler defines the application layer communication protocol between a LWM2M Server and a LWM2M Client, which is located in a LWM2M Device.\n\n [Advanced Message Queuing Protocol (AMQP)](https://www.amqp.org) is an open standard for passing business messages between applications or organizations. It connects systems, feeds business processes with the information they need and reliably transmits onward the instructions that achieve their goals. The defining features of AMQP are message orientation, queuing, routing, reliability and security.\n\n [Constrained Application Protocol (CoAP)](https://coap.technology) is a specialized web transfer protocol for use with constrained nodes and constrained networks in the Internet of Things. The protocol is designed for machine-to-machine (M2M) applications such as smart energy and building automation.\"\n\n [Extensible Messaging and Presence Protocol (XMPP)](https://xmpp.org) is a communication protocol for message-oriented middleware based on XML (Extensible Markup Language). It enables the near real-time exchange of structured yet extensible data between any two or more network entities.\n\n [OASIS Message Queuing Telemetry Transport (MQTT)](https://www.oasis-open.org) is an open OASIS and ISO standard (ISO/IEC 20922) lightweight, publish-subscribe network protocol that transports messages between devices. The protocol usually runs over TCP/IP; however, any network protocol that provides ordered, lossless, bi-directional connections can support MQTT. \n\n [Very Simple Control Protocol (VSCP)](https://vscp.org) is a free automation protocol suitable for all sorts of automation task where building- or home-automation is in the main focus. Its main advantage is that each VSCP-node can work completely autonomous, being part of distributed network of other nodes.\n\n### Operating systems (OS)\n\n [Arm Mbed TLS](https://os.mbed.com) provides a comprehensive SSL/TLS solution and makes it easy for developers to include cryptographic and SSL/TLS capabilities in their software and embedded products. As an SSL library, it provides an intuitive API, readable source code and a minimal and highly configurable code footprint.\n\n [Canonical Ubuntu Core](https://ubuntu.com/download/iot) is a lean, strictly confined and fully transactional operating system. We designed it from the ground up, to focus on security and simplified maintenance, for appliances and large device networks. Ubuntu Core is powered by snaps - the universal Linux packaging format.\n\n [Contiki-os](https://github.com/contiki-os) is an operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of Things devices.\n\n [Raspbian](https://www.raspbian.org) is a Debian-based computer operating system for Raspberry Pi.\n\n [RIOT](https://github.com/RIOT-OS/RIOT) is the friendly OS for IoT \n\n [RabbitMQ](https://www.rabbitmq.com) is the most widely deployed open source message broker. With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at small startups and large enterprises. RabbitMQ is lightweight and easy to deploy on premises and in the cloud.\n\n### Middleware\n\n [IoTSyS](https://iotsyst.com) is an integration middleware for the Internet of Things. It provides a communication stack for embedded devices based on IPv6, Web services, and OBIX to establish interoperable interfaces for smart objects.\n\n [OpenIoT](https://github.com/OpenIotOrg/openiot) is an open source middleware infrastructure will support flexible configuration and deployment of algorithms for collection, and filtering information streams stemming from the internet-connected objects, while at the same time generating and processing important business/applications events.\n\n [OpenRemote](https://github.com/openremote/openremote) is an open source middleware project, which integrates many different protocols and solutions available for smart building, and smart city automation, and offers visualization tools. \n\n [Kaa](https://www.kaaproject.org/platform/) is a Enterprise IoT Platform has been designed with heavy-duty, enterprise-grade IoT solutions in mind. It banishes a monolithic approach to architecture in favour of highly portable microservices, which allow for flexible rearrangement and customization even in the middle of the solution's lifecycle.\n\n### Node flow editors\n\n [Node-RED](https://nodered.org) is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.\n\n### Toolkits\n\n [KinomaJS](https://github.com/Kinoma/kinomajs) is a visual code editor designed to help developers build starter projects for Kinoma Create and Kinoma Element. The project is built on Angular 2(RC7) and runs in a web browser. The live version is hosted using Google App Engine, but you can modify and build it yourself by following the instructions in this document.\n\n [IoT Toolkit](https://www.segger.com/products/security-iot/iot-toolkit/) is a collection of libraries that enables communication with modern IoT based environments and devices. It is a high-performance collection of libraries optimized for minimum memory consumption in RAM, ROM, high speed, and versatility working on any device.\n\n### Data visualization\n\n [Freeboard](https://github.com/Freeboard/freeboard) is an open source real-time dashboard builder for IOT and other web mashups. A free open-source alternative to Geckoboard.\n\n [ThingSpeak](https://thingspeak.com) is an IoT analytics platform service that allows you to aggregate, visualize, and analyze live data streams in the cloud. You can send data to ThingSpeak from your devices, create instant visualization of live data, and send alerts.\n\n### Search\n\n [Thingful](https://www.thingful.net) is a Search Engine for the Internet of Things Find \u0026 use open IoT data from around the world.\n\n### Hardware\n\n [Arduino Ethernet Shield 2](https://www.arduino.cc/en/Guide/ArduinoEthernetShield) allows an Arduino board to connect to the internet using the Ethernet library and to read and write an SD card using the SD library.This shield is fully compatible with the former version, but relies on the newer W5500 chip.\n\n [Raspberry Pi](https://www.raspberrypi.org) is a series of small single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote teaching of basic computer science in schools and in developing countries. Price range from $10-45 depending on model.\n\n [BeagleBone](https://beagleboard.org/bone) is a low-power open-source single-board computer produced by Texas Instruments. It runs Android, Ubuntu and other Linux flavors.\n\n [openPicus FlyportPro](https://www.open-electronics.org/flyport-professional-iot-modules-by-openpicus/) is a system on a module dedicated to IoT and M2M application, especially for professional use. Following some details on the solution: Why FlyportPRO SoM? A system-on-module is the best solution for those customers looking for flexibility and for development time and risk reduction.\n\n [Pinoccio](https://www.open-electronics.org/pinoccio-wifi-mesh-networking-for-arduino-and-iot-available-now/) is a solution to add mesh networking capability and WiFi-Internet access to all yout IoT devices, and it is Arduino compatible. Each board can assume the role of Scout in a Troop and one of the Scouts is the Lead to connect internet: Field Scouts talk to each other using a mesh network (called a Troop), using an extremely low-power radio.\n\n### In-memory data grids\n\n [Ehcache](https://www.ehcache.org) is an open source, standards-based cache that boosts performance, offloads your database, and simplifies scalability. It's the most widely-used Java-based cache because it's robust, proven, full-featured, and integrates with other popular libraries and frameworks.\n\n [Hazelcast](https://hazelcast.com) is an open source in-memory data grid based on Java.\n\n### Home automation\n\n [Home Assistant](https://github.com/home-assistant/core) is open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.\n\n [openHAB](https://github.com/openhab) is a cross-platform software with the aim to integrate all kinds of Smart Home technologies, devices, etc. \n\n [Eclipse SmartHome](https://www.eclipse.org/smarthome/) is a framework, not a ready-to-use solution. It offers a large set of features to choose from and leaves enough possibilities to design a Smart Home solution specific to your expectations. Its modular design brings millions of combinations and proves to be easily extensible by custom parts.\n\n [The Thing System](https://github.com/TheThingSystem) is a set of software components and network protocols that aims to fix the Internet of Things. Our steward software is written in node.js making it both portable and easily extensible. It can run on your laptop, or fit onto a small single board computer like the Raspberry Pi.\n\n### Robotics\n\n [Open Source Robotics Foundation](https://www.openrobotics.org/) works with industry, academia, and government to create and support open software and hardware for use in robotics, from research and education to product development.\n\n [ROS/ROS2](https://www.ros.org) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project.\n\n### Mesh networks\n\n [Open Garden](https://opengarden.com) develops the FireChat mobile application, which enables peer-to-peer mobile Internet connection sharing with faster and more efficient data transmissions by automatically and actively choosing and switching to the best available network without requiring users to manually sift through available networks to find the best one available.\n\n [OpenWSN](https://github.com/openwsn-berkeley/) is a project created at the University of California Berkeley and extended at the INRIA and at the Open University of Catalonia which aims to build an open standard-based and open source implementation of a complete constrained network protocol stack for wireless sensor networks and Internet of Things.\n\n\n# 3. Open Source Security\n\n[Back to the Top](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#table-of-contents)\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/96352529-af69d280-1078-11eb-9e87-8a73f48af246.png\"\u003e\n  \u003cbr /\u003e\n  Open Source Security Guide\n\u003c/h1\u003e\n\n#### A guide covering Security including the applications, libraries and tools that will make you better and more efficient at securing your system operations and newtorks.\n\n## Resources\n\n[Open Source Security Foundation (OpenSSF)](https://openssf.org/) is a cross-industry collaboration that brings together leaders to improve the security of open source software by building a broader community, targeted initiatives, and best practices. The OpenSSF brings together open source security initiatives under one foundation to accelerate work through cross-industry support. Along with the Core Infrastructure Initiative and the Open Source Security Coalition, and will include new working groups that address vulnerability disclosures, security tooling and more.\n\n[Microsoft Open Source Software Security](https://www.microsoft.com/en-us/securityengineering/opensource)\n\n[Cloudflare Open Source Security](https://cloudflare.github.io)\n\n[The Seven Properties of Highly Secure Devices](https://www.microsoft.com/en-us/research/publication/seven-properties-highly-secure-devices/)\n\n[How Layer 7 of the Internet Works](https://www.cloudflare.com/learning/ddos/what-is-layer-7/)\n\n[The 7 Kinds of Security](https://www.veracode.com/sites/default/files/Resources/eBooks/7-kinds-of-security.pdf)\n\n[The Libgcrypt Reference Manual](https://www.gnupg.org/documentation/manuals/gcrypt/)\n\n[The Open Web Application Security Project(OWASP) Foundation Top 10](https://owasp.org/www-project-top-ten/)\n\n[Best Practices for Using Open Source Code from The Linux Foundation](https://www.linuxfoundation.org/blog/2017/11/best-practices-using-open-source-code/)\n\n[AWS Certified Security - Specialty Certification](https://aws.amazon.com/certification/certified-security-specialty/)\n\n[Microsoft Certified: Azure Security Engineer Associate](https://docs.microsoft.com/en-us/learn/certifications/azure-security-engineer)\n\n[Google Cloud Certified Professional Cloud Security Engineer](https://cloud.google.com/certification/cloud-security-engineer)\n\n[Cisco Security Certifications](https://www.cisco.com/c/en/us/training-events/training-certifications/certifications/security.html)\n\n[The Red Hat Certified Specialist in Security: Linux](https://www.redhat.com/en/services/training/ex415-red-hat-certified-specialist-security-linux-exam)\n\n[Linux Professional Institute LPIC-3 Enterprise Security Certification](https://www.lpi.org/our-certifications/lpic-3-303-overview)\n\n[Cybersecurity Training and Courses from IBM Skills](https://www.ibm.com/skills/topics/cybersecurity/)\n\n[Cybersecurity Courses and Certifications by Offensive Security](https://www.offensive-security.com/courses-and-certifications/)\n\n[RSA Certification Program](https://community.rsa.com/community/training/certification)\n\n[Check Point Certified Security Expert(CCSE) Certification](https://training-certifications.checkpoint.com/#/courses/Check%20Point%20Certified%20Expert%20(CCSE)%20R80.x)\n\n[Check Point Certified Security Administrator(CCSA) Certification](https://training-certifications.checkpoint.com/#/courses/Check%20Point%20Certified%20Admin%20(CCSA)%20R80.x)\n\n[Check Point Certified Security Master (CCSM) Certification](https://training-certifications.checkpoint.com/#/courses/Check%20Point%20Certified%20Master%20(CCSM)%20R80.x)\n\n[Certified Cloud Security Professional(CCSP) Certification](https://www.isc2.org/Certifications/CCSP)\n\n[Certified Information Systems Security Professional (CISSP) Certification](https://www.isc2.org/Certifications/CISSP)\n\n[CCNP Routing and Switching](https://learningnetwork.cisco.com/s/ccnp-enterprise)\n\n[Certified Information Security Manager(CISM)](https://www.isaca.org/credentialing/cism)\n\n[Wireshark Certified Network Analyst (WCNA)](https://www.wiresharktraining.com/certification.html)\n\n[Juniper Networks Certification Program Enterprise (JNCP)](https://www.juniper.net/us/en/training/certification/)\n\n[Security Training Certifications and Courses from Udemy](https://www.udemy.com/courses/search/?src=ukw\u0026q=secuirty)\n\n[Security Training Certifications and Courses from Coursera](https://www.coursera.org/search?query=security\u0026)\n\n[Security Certifications Training from Pluarlsight](https://www.pluralsight.com/browse/information-cyber-security/security-certifications)\n\n## Security Standards, Frameworks and Benchmarks\n\n[STIGs Benchmarks - Security Technical Implementation Guides](https://public.cyber.mil/stigs/)\n\n[CIS Benchmarks - CIS Center for Internet Security](https://www.cisecurity.org/cis-benchmarks/)\n\n[NIST - Current FIPS](https://www.nist.gov/itl/current-fips)\n\n[ISO Standards Catalogue](https://www.iso.org/standards.html)\n\n[Common Criteria for Information Technology Security Evaluation (CC)](https://www.commoncriteriaportal.org/cc/) is an international standard (ISO / IEC 15408) for computer security. It allows an objective evaluation to validate that a particular product satisfies a defined set of security requirements. \n\n[ISO 22301](https://www.iso.org/en/contents/data/standard/07/51/75106.html) is the international standard that provides a best-practice framework for implementing an optimised BCMS (business continuity management system).\n\n[ISO27001](https://www.iso.org/isoiec-27001-information-security.html) is the international standard that describes the requirements for an ISMS (information security management system). The framework is designed to help organizations manage their security practices in one place, consistently and cost-effectively.\n\n[ISO 27701](https://www.iso.org/en/contents/data/standard/07/16/71670.html) specifies the requirements for a PIMS (privacy information management system) based on the requirements of ISO 27001.\nIt is extended by a set of privacy-specific requirements, control objectives and controls. Companies that have implemented ISO 27001 will be able to use ISO 27701 to extend their security efforts to cover privacy management.\n\n[EU GDPR (General Data Protection Regulation)](https://gdpr.eu/) is a privacy and data protection law that supersedes existing national data protection laws across the EU, bringing uniformity by introducing just one main data protection law for companies/organizations to comply with.\n\n[CCPA (California Consumer Privacy Act)](https://www.oag.ca.gov/privacy/ccpa) is a data privacy law that took effect on January 1, 2020 in the State of California. It applies to businesses that collect California residents’ personal information, and its privacy requirements are similar to those of the EU’s GDPR (General Data Protection Regulation).\n\n[Payment Card Industry (PCI) Data Security Standards (DSS)](https://docs.microsoft.com/en-us/microsoft-365/compliance/offering-pci-dss) is a global information security standard designed to prevent fraud through increased control of credit card data.\n\n[SOC 2](https://www.aicpa.org/interestareas/frc/assuranceadvisoryservices/aicpasoc2report.html) is an auditing procedure that ensures your service providers securely manage your data to protect the interests of your comapny/organization and the privacy of their clients. \n\n[NIST CSF](https://www.nist.gov/national-security-standards) is a voluntary framework primarily intended for critical infrastructure organizations to manage and mitigate cybersecurity risk based on existing best practice.\n\n## Tools\n\n[AppArmor](https://www.apparmor.net/) is an effective and easy-to-use Linux application security system. AppArmor proactively protects the operating system and applications from external or internal threats, even zero-day attacks, by enforcing good behavior and preventing both known and unknown application flaws from being exploited. AppArmor supplements the traditional Unix discretionary access control (DAC) model by providing mandatory access control (MAC). It has been included in the mainline Linux kernel since version 2.6.36 and its development has been supported by Canonical since 2009.\n\n[SELinux](https://github.com/SELinuxProject/selinux) is a security enhancement to Linux which allows users and administrators more control over access control. Access can be constrained on such variables as which users and applications can access which resources. These resources may take the form of files. Standard Linux access controls, such as file modes (-rwxr-xr-x) are modifiable by the user and the applications which the user runs. Conversely, SELinux access controls are determined by a policy loaded on the system which may not be changed by careless users or misbehaving applications.\n\n[Control Groups(Cgroups)](https://www.redhat.com/sysadmin/cgroups-part-one) is a Linux kernel feature that allows you to allocate resources such as CPU time, system memory, network bandwidth, or any combination of these resources for user-defined groups of tasks (processes) running on a system.\n\n[EarlyOOM](https://github.com/rfjakob/earlyoom) is a daemon for Linux that enables users to more quickly recover and regain control over their system in low-memory situations with heavy swap usage. \n\n[Libgcrypt](https://www.gnupg.org/related_software/libgcrypt/) is a general purpose cryptographic library originally based on code from GnuPG.\n\n[Kali Linux](https://www.kali.org/)  is an open source project that is maintained and funded by Offensive Security, a provider of world-class information security training and penetration testing services.\n\n[Pi-hole](https://pi-hole.net/) is a [DNS sinkhole](https://en.wikipedia.org/wiki/DNS_Sinkhole) that protects your devices from unwanted content, without installing any client-side software, intended for use on a private network. It is designed for use on embedded devices with network capability, such as the Raspberry Pi, but it can be used on other machines running Linux and cloud implementations.\n\n[Aircrack-ng](https://www.aircrack-ng.org/) is a network software suite consisting of a detector, packet sniffer, WEP and WPA/WPA2-PSK cracker and analysis tool for 802.11 wireless LANs. It works with any wireless network interface controller whose driver supports raw monitoring mode and can sniff 802.11a, 802.11b and 802.11g traffic.\n\n[Burp Suite](https://portswigger.net/burp) is a leading range of cybersecurity tools.\n\n[KernelCI](https://foundation.kernelci.org/) is a community-based open source distributed test automation system focused on upstream kernel development. The primary goal of KernelCI is to use an open testing philosophy to ensure the quality, stability and long-term maintenance of the Linux kernel.\n\n[Continuous Kernel Integration project](https://github.com/cki-project) helps find bugs in kernel patches before they are commited to an upstram kernel tree. We are team of kernel developers, kernel testers, and automation engineers.\n\n[eBPF](https://ebpf.io) is a revolutionary technology that can run sandboxed programs in the Linux kernel without changing kernel source code or loading kernel modules. By making the Linux kernel programmable, infrastructure software can leverage existing layers, making them more intelligent and feature-rich without continuing to add additional layers of complexity to the system.\n\n[Cilium](https://cilium.io/) uses eBPF to accelerate getting data in and out of L7 proxies such as Envoy, enabling efficient visibility into API protocols like HTTP, gRPC, and Kafka. \n\n[Hubble](https://github.com/cilium/hubble) is a Network, Service \u0026 Security Observability for Kubernetes using eBPF.\n\n[Istio](https://istio.io/) is an open platform to connect, manage, and secure microservices. Istio's control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes and Mesos.\n\n[Certgen](https://github.com/cilium/certgen) is a convenience tool to generate and store certificates for Hubble Relay mTLS.\n\n[Scapy](https://scapy.net/) is a python-based interactive packet manipulation program \u0026 library.\n\n[syzkaller](https://github.com/google/syzkaller) is an unsupervised, coverage-guided kernel fuzzer.\n\n[SchedViz](https://github.com/google/schedviz) is a tool for gathering and visualizing kernel scheduling traces on Linux machines.\n\n[oss-fuzz](https://google.github.io/oss-fuzz/) aims to make common open source software more secure and stable by combining modern fuzzing techniques with scalable, distributed execution.\n\n[OSSEC](https://www.ossec.net/) is a free, open-source host-based intrusion detection system. It performs log analysis, integrity checking, Windows registry monitoring, rootkit detection, time-based alerting, and active response.\n\n[Metasploit Project](https://www.metasploit.com/) is a computer security project that provides information about security vulnerabilities and aids in penetration testing and IDS signature development.\n\n[Wfuzz](https://github.com/xmendez/wfuzz) was created to facilitate the task in web applications assessments and it is based on a simple concept: it replaces any reference to the FUZZ keyword by the value of a given payload.\n\n[Nmap](https://nmap.org/) is a security scanner used to discover hosts and services on a computer network, thus building a \"map\" of the network. \n\n[Patchwork](https://github.com/getpatchwork/patchwork) is a web-based patch tracking system designed to facilitate the contribution and management of contributions to an open-source project. \n\n[pfSense](https://www.pfsense.org/) is a free and open source firewall and router that also features unified threat management, load balancing, multi WAN, and more.\n\n[Snowpatch](https://github.com/ruscur/snowpatch) is a continuous integration tool for projects using a patch-based, mailing-list-centric git workflow. This workflow is used by a number of well-known open source projects such as the Linux kernel.\n\n[Snort](https://www.snort.org/) is an open-source, free and lightweight network intrusion detection system (NIDS) software for Linux and Windows to detect emerging threats.\n\n[Wireshark](https://www.wireshark.org/) is a free and open-source packet analyzer. It is used for network troubleshooting, analysis, software and communications protocol development, and education. \n\n[OpenSCAP](https://www.open-scap.org/) is U.S. standard maintained by [National Institute of Standards and Technology (NIST)](https://www.nist.gov/). It provides multiple tools to assist administrators and auditors with assessment, measurement, and enforcement of security baselines. OpenSCAP maintains great flexibility and interoperability by reducing the costs of performing security audits. Whether you want to evaluate DISA STIGs, NIST‘s USGCB, or Red Hat’s Security Response Team’s content, all are supported by OpenSCAP.\n\n[Tink](https://github.com/google/tink) is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and harder to misuse. \n\n[OWASP](https://www.owasp.org/index.php/Main_Page) is an online community, produces freely-available articles, methodologies, documentation, tools, and technologies in the field of web application security.\n\n[Open Vulnerability and Assessment Language](https://oval.mitre.org/) is a community effort to standardize how to assess and report upon the machine state of computer systems. OVAL includes a language to encode system details, and community repositories of content. Tools and services that use OVAL provide enterprises with accurate, consistent, and actionable information to improve their security.\n\n[ClamAV](https://www.clamav.net/) is an open source antivirus engine for detecting trojans, viruses, malware \u0026 other malicious threats.\n\n# 4. Linux \n\n[Back to the Top](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#table-of-contents)\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/93251390-f6e30300-f748-11ea-9778-4d52b45e443d.png\"\u003e\n  \u003cbr /\u003e\n Linux Guide\n\u003c/h1\u003e\n\n#### A guide covering Linux including it's multiple Desktop enviroments, Window managers, Tools, and Applications that will make you a better and more efficient Linux user.\n \n## Resources\n\n[A Brief History of Linux](https://www.digitalocean.com/community/tutorials/brief-history-of-linux)\n\n[Contribute to FOSS](https://github.com/KillYourFM/contribute-foss) by Jason Evangelho, is an entensive Wiki page on how to contribute to the Linux and FOSS community.\n\n[The Open Source Computer Science Degree by Forrest Knight](https://github.com/ForrestKnight/open-source-cs)\n\n[My Windows Subsystem for Linux(WSl) Guide](https://github.com/mikeroyal/WSL-Guide)\n\n[A Cloud Guru Linux Training Certifictions](https://acloudguru.com/linux-training)\n\n[Red Hat Training and Certification Program](https://www.redhat.com/en/services/training-and-certification)\n\n[Linux Foundation Training and Certification Program](https://training.linuxfoundation.org/certification/)\n\n[Linux Professional Institute(LPI)](https://www.lpi.org) is a non profit organization. Linux Professional Institute (LPI) is the global certification standard and career support organization for open source professionals. With more than 175,000 certification holders, it's the world's first and largest vendor-neutral Linux and open source certification body.\n\n[Linux Foundation](https://www.linuxfoundation.org/) is home to Linux, Node.js and other mission critical projects that form the backbone of modern internet services, including Pinterest. Joining The Linux Foundation is a great way for established companies like ours to support those communities. \n\n[Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) hosts critical components of the global technology infrastructure. CNCF brings together the world's top developers, end users, and vendors and runs the largest open source developer conferences. CNCF is part of the nonprofit Linux Foundation.\n\n[RISC-V Foundation](https://riscv.org/) is a non-profit corporation controlled by its members to drive forward the adoption and implementation of the free and open RISC-V instruction set architecture (ISA).\n\n[Open Source Security Foundation (OpenSSF)](https://openssf.org/) is a cross-industry collaboration that brings together leaders to improve the security of open source software by building a broader community, targeted initiatives, and best practices. The OpenSSF brings together open source security initiatives under one foundation to accelerate work through cross-industry support. Along with the Core Infrastructure Initiative and the Open Source Security Coalition, and will include new working groups that address vulnerability disclosures, security tooling and more.\n\n[Free Software Foundation (FSF)](https://www.fsf.org/) is a nonprofit with a worldwide mission to promote computer user freedom.\n\n## Desktop Environments\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/93250993-745a4380-f748-11ea-9b59-ec45e1817fc7.png\"\u003e\n  \u003cbr /\u003e\n  KDE Plasma Desktop\n\u003c/h1\u003e\n\n[KDE Plasma Desktop](https://kde.org), is a beautiful Windows-like desktop that you use to surf the web, keep in touch with colleagues, friends and family, manage your files, enjoy music and videos; and get creative and productive at work. The KDE community develops and maintains more than 200 applications which run on any Linux desktop, and often other platforms too.\n\n![image](https://user-images.githubusercontent.com/45159366/93250998-758b7080-f748-11ea-814e-40e04ac3df4b.jpeg?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/53324409-96a21d00-3895-11e9-9cc8-d6a3695f5ce3.png\"\u003e\n  \u003cbr /\u003e\n  GNOME Desktop\n\u003c/h1\u003e\n\n[GNOME Desktop](https://www.gnome.org/), An easy and elegant way to use your computer, GNOME 3 is designed to put you in control and get things done.\n\n![image](https://user-images.githubusercontent.com/45159366/53324406-91dd6900-3895-11e9-870d-2d3635cba408.jpeg?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/52540606-4af15e80-2d40-11e9-8704-3308568fd105.png\"\u003e\n  \u003cbr /\u003e\n  MATE Desktop\n\u003c/h1\u003e\n\n[MATE Desktop](https://mate-desktop.org/), is the continuation of GNOME 2 desktop environment.  \n\n![image](https://user-images.githubusercontent.com/45159366/54108470-4c429500-4399-11e9-8b8a-3ad0e831214b.png?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/52040486-66609c00-24ec-11e9-9f2d-468a387a9ce1.png\"\u003e\n  \u003cbr /\u003e\n  Budgie Desktop\n\u003c/h1\u003e\n\n[Budgie Desktop](https://getsol.us/solus/experiences/), a feature-rich, modern desktop designed to keep out the way of the user. \n\n![budgie-desktop](https://user-images.githubusercontent.com/45159366/60866577-899b2000-a1dd-11e9-8d8f-48716ac14fba.png?raw=true \"budgie-desktop\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/52910555-f3765580-324d-11e9-8597-99e6f3241701.png\"\u003e\n  \u003cbr /\u003e\n  XFCE Desktop\n\u003c/h1\u003e\n\n[XFCE Desktop](https://xfce.org/), a lightweight desktop environment for UNIX-like operating systems. \n\n\n![image](https://user-images.githubusercontent.com/45159366/52910530-9a0e2680-324d-11e9-8e55-a7450c7fc316.png?raw=true \"image\")\n\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/52699255-31136f80-2f2a-11e9-865c-75d7ee219cef.png\"\u003e\n  \u003cbr /\u003e\n  Cinnamon Desktop\n\u003c/h1\u003e\n\n[Cinnamon Desktop](https://cinnamon-spices.linuxmint.com/), a Linux desktop which provides advanced innovative features and a traditional user experience.\n\n![image](https://user-images.githubusercontent.com/45159366/54108466-4a78d180-4399-11e9-90aa-9340ca45ab1a.png?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/51798500-3782b700-21c8-11e9-83d6-9822ca172425.png\"\u003e\n  \u003cbr /\u003e\n  LXQt Desktop\n\u003c/h1\u003e\n\n[LXQt Desktop](https://lxqt.org/),the Lightweight Qt Desktop Environment.\n\n![image](https://user-images.githubusercontent.com/45159366/60866574-8869f300-a1dd-11e9-8c56-da585fe2d581.png?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/53791160-97623100-3edd-11e9-9015-9319a857e1b0.png\"\u003e\n  \u003cbr /\u003e\n  Pantheon Desktop\n\u003c/h1\u003e\n\n[Pantheon Desktop](https://elementary.io/), a GTK desktop based on the GNOME software base maintained by the elementary OS developers.\n\n![image](https://user-images.githubusercontent.com/45159366/53000646-ba6ceb00-33dd-11e9-93dd-fbd262cf1ce8.jpeg?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/63739716-1d36b780-c843-11e9-94f1-2085af4005a3.png\"\u003e\n  \u003cbr /\u003e\n  Deepin Desktop\n\u003c/h1\u003e\n\n[Deepin Desktop](https://www.deepin.org/en/dde/), an elegant, easy to use and reliable domestic desktop environment.\n\n![image](https://user-images.githubusercontent.com/45159366/57979064-21923f80-79cd-11e9-842a-55ab9ec73d41.jpeg?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/62761602-e8052980-ba3b-11e9-986d-4a2d801a83b1.png\"\u003e\n  \u003cbr /\u003e\n  Unity Desktop\n\u003c/h1\u003e\n\n[Unity Desktop](https://unity8.io/), a graphical shell for the GNOME desktop environment originally developed by Canonical Ltd.\n\n![unity-desktop](https://user-images.githubusercontent.com/45159366/62761607-e9ceed00-ba3b-11e9-900a-591c53152e1f.png?raw=true \"unity-desktop\")\n\n## Windows mangers\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/58378567-d804a000-7f4a-11e9-9b60-db6a0136261f.png\"\u003e\n  \u003cbr /\u003e\n  i3 wm\n\u003c/h1\u003e\n\n[i3-wm](https://i3wm.org/), a tiling window manager for X11.\n\n\n![i3-wm](https://user-images.githubusercontent.com/45159366/58378568-d935cd00-7f4a-11e9-8dd1-3c2a92986a68.png?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/58737339-f7218880-83b5-11e9-8315-69f1405b1719.png\"\u003e\n  \u003cbr /\u003e\n awesome wm\n\u003c/h1\u003e\n\n[Awesome](https://awesomewm.org/), a highly configurable, next generation framework window manager for X. \n\n![awesome-wm](https://user-images.githubusercontent.com/45159366/58737340-f7ba1f00-83b5-11e9-98f2-d801ed881396.png?raw=true \"image\")\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/45159366/60765336-04cdcc00-a04e-11e9-999a-3dd7547f9bb0.png\"\u003e\n  \u003cbr /\u003e\n  Bspwm\n\u003c/h1\u003e\n\n[Bspwm](https://github.com/baskerville/bspwm), a tiling window manager based on binary space partitioning with a focus on resource efficiency.\n\n![bspwm](https://user-images.githubusercontent.com/45159366/60765269-d7cce980-a04c-11e9-9a69-3ee236c07a8f.png?raw=true \"image\")\n\n## Linux Companies\n\n[Red Hat](https://www.redhat.com/en) makers of Red Hat Enterprise Linux and sponsors the [Fedora Project](https://getfedora.org/). Red Hat also develops [CentOS Stream](https://www.centos.org/centos-stream/), which is a continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development, positioned as a midstream between Fedora Linux and RHEL.\n\n[Canonical](https://canonical.com) makers of Ubuntu Desktop and Server.\n\n[SUSE](https://www.suse.com) makers of SUSE Enterprise Linux.\n\n[Manjaro](https://manjaro.org) makers of Manjaro Linux.\n\n[System76](https://system76.com) makers of [Pop!_OS](https://pop.system76.com/)\n\n## Linux Hardware Vendors\n\n[Dell](https://www.dell.com/en-us/work/shop/overview/cp/linuxsystems) \n\n[Lenovo](https://www.lenovo.com/us/en/laptops/thinkpad/thinkpad-x1/X1-Carbon-Gen-8-/p/22TP2X1X1C8?clickid=2BI2bvSDaxyOUYgwUx0Mo36AUkiXENxNRV4X240\u0026irgwc=1\u0026PID=2347489\u0026acid=ww%3Aaffiliate%3Abv0as6)\n\n[HP](https://www8.hp.com/us/en/campaigns/ubuntu/index.html)\n\n[System76](https://system76.com)\n\n[Tuexdo Computers](https://www.tuxedocomputers.com/en)\n\n[Entroware](https://www.entroware.com/store/)\n\n[Pine64](https://www.pine64.org/)\n\n[Purism](https://puri.sm/)\n\n## Linux in the Cloud\n\n[Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) a next generation of Amazon Linux, a Linux server operating system from Amazon Web Services (AWS). It provides a secure, stable, and high performance execution environment to develop and run cloud and enterprise applications. With Amazon Linux 2, you get an application environment that offers long term support with access to the latest innovations in the Linux ecosystem.\n\n[Bottlerocket](https://aws.amazon.com/bottlerocket/) is a Linux-based open-source operating system that is purpose-built by Amazon Web Services for running containers on virtual machines or bare metal hosts. Most customers today run containerized applications on general-purpose operating systems that are updated package-by-package, which makes OS updates difficult to automate.\n\n[Getting Started with Bottlerocket and Certified AWS Partners](https://aws.amazon.com/blogs/apn/getting-started-with-bottlerocket-and-certified-aws-partners/)\n\n[Using Bottlerocket with Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-bottlerocket.html)\n\n[Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/) is a supported and maintained Linux image provided by Amazon Web Services for use on Amazon Elastic Compute Cloud (Amazon EC2). It is designed to provide a stable, secure, and high performance execution environment for applications running on Amazon EC2.\n\n[Ubuntu on AWS](https://ubuntu.com/aws)\n\n[Ubuntu on Azure](https://ubuntu.com/azure)\n\n[Ubuntu Pro for Azure](https://ubuntu.com/azure/pro)\n\n[Linux on Azure](https://azure.microsoft.com/en-us/overview/linux-on-azure/)\n\n[Creating a Linux VM in the Azure portal](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/quick-create-portal)\n\n[Azure Sphere](https://www.microsoft.com/en-us/azure-sphere/) is a secured, high-level application platform with built-in communication and security features for internet-connected devices. The platform consists of the integration of hardware built around a secured silicon chip; the Azure Sphere OS, a custom high-level Linux-based operating system; and the Azure Sphere Security Service, a cloud-based security service that provides continuous security.\n\n[Creating a virtual Linux workstation in Google Cloud](https://cloud.google.com/solutions/creating-a-virtual-linux-workstation).\n\n[Preparing Linux VMs migrating to Google Cloud with Migrate for Compute Engine](https://cloud.google.com/migrate/compute-engine/docs/4.5/how-to/prepare-vms-servers/preparing-linux-vms)\n\n[Understanding OpenStack on Red Hat](https://www.redhat.com/en/topics/openstack)\n\n[Understanding OpenStack on Ubuntu](https://ubuntu.com/openstack/what-is-openstack)\n\n[Initial Server Setup with Ubuntu 20.04 on DigitalOcean](https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04)\n\n[Tutorials for Setting up Linux workspaces on DigitalOcean](https://www.digitalocean.com/community/tutorials?q=linux)\n\n[DigitalOcean Marketplace](https://marketplace.digitalocean.com/)\n\n[Linode](https://www.linode.com/)\n\n# 5. Networking \n\n[Back to the Top](https://github.com/mikeroyal/Developer-Handbook/blob/main/README.md#table-of-contents)\n\n\u003ch1 align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/45159366/82833053-d1687b80-9e71-11ea-8c6d-074100f2f54b.png\"\u003e\n  \u003cbr /\u003e\n Networking Guide\n\u003c/h1\u003e\n\n  #### A Networking Guide for getting started with basic/core network components such as wired and wireless network design, configuration, hardware, protocols, security, backup, recovery, and virtualization.\n  \n  ## Resources\n  \n[AWS Certified Security - Specialty Certification](https://aws.amazon.com/certification/certified-security-specialty/)\n\n[Microsoft Certified: Azure Security Engineer Associate](https://docs.microsoft.com/en-us/learn/certifications/azure-security-engineer)\n\n[Google Cloud Certified Professional Cloud Security Engineer](https://cloud.google.com/certification/cloud-security-engineer)\n\n[Cisco Security Certifications](https://www.cisco.com/c/en/us/training-events/training-certifications/certifications/security.html)\n\n[The Red Hat Certified Specialist in Security: Linux](https://www.redhat.com/en/services/training/ex415-red-hat-certified-specialist-security-linux-exam)\n\n[Linux Professional Institute LPIC-3 Enterprise Security Certification](https://www.lpi.org/our-certifications/lpic-3-303-overview)\n\n[Cybersecurity Training and Courses from IBM Skills](https://www.ibm.com/skills/topics/cybersecurity/)\n\n[Cybersecurity Courses and Certifications by Offensive Security](https://www.offensive-security.com/courses-and-certifications/)  \n  \n[Citrix Certified Associate – Networking(CCA-N)](http://training.citrix.com/cms/index.php/certification/networking/)\n\n[Citrix Certified Professional – Virtualization(CCP-V)](https://www.globalknowledge.com/us-en/training/certification-prep/brands/citrix/section/virtualization/citrix-certified-professional-virtualization-ccp-v/)\n\n[CCNP Routing and Switching](https://learningnetwork.cisco.com/s/ccnp-enterprise)\n\n[Certified Information Security Manager(CISM)](https://www.isaca.org/credentialing/cism)\n\n[Wireshark Certified Network Analyst (WCNA)](https://www.wiresharktraining.com/certification.html)\n\n[Juniper Networks Certification Program Enterprise (JNCP)](https://www.juniper.net/us/en/training/certification/)\n\n[Networking courses and specializations from Coursera](https://www.coursera.org/browse/information-technology/networking)\n\n[Network \u0026 Security Courses from Udemy](https://www.udemy.com/courses/it-and-software/network-and-security/)\n\n[Network \u0026 Security Courses from edX](https://www.edx.org/learn/cybersecurity)\n  \n  ## Tools \u0026 Networking Concepts\n  \n    • Connection: In networking, a connection refers to pieces of related information that are transferred through a network. This generally infers that a connection is built before the data transfer (by following the procedures laid out in a protocol) and then is deconstructed at the at the end of the data transfer.\n    \n    • Packet: A packet is, generally speaking, the most basic unit that is transferred over a network. When communicating over a network, packets are the envelopes that carry your data (in pieces) from one end point to the other.\n    \nPackets have a header portion that contains information about the packet including the source and destination, timestamps, network hops. The main portion of a packet contains the actual data being transferred. It is sometimes called the body or the payload.\n\n    • Network Interface: A network interface can refer to any kind of software interface to networking hardware. For instance, if you have two network cards in your computer, you can control and configure each network interface associated with them individually.\n    \nA network interface may be associated with a physical device, or it may be a representation of a virtual interface. The \"loop-back\" device, which is a virtual interface to the local machine, is an example of this.\n\n    • LAN: LAN stands for \"local area network\". It refers to a network or a portion of a network that is not publicly accessible to the greater internet. A home or office network is an example of a LAN.\n    \n    • WAN: WAN stands for \"wide area network\". It means a network that is much more extensive than a LAN. While WAN is the relevant term to use to describe large, dispersed networks in general, it is usually meant to mean the internet, as a whole.\nIf an interface is connected to the WAN, it is generally assumed that it is reachable through the internet.\n\n    • Protocol: A protocol is a set of rules and standards that basically define a language that devices can use to communicate. There are a great number of protocols in use extensively in networking, and they are often implemented in different layers. \n    \nSome low level protocols are TCP, UDP, IP, and ICMP. Some familiar examples of application layer protocols, built on these lower protocols, are HTTP (for accessing web content), SSH, TLS/SSL, and FTP.\n\n    • Port: A port is an address on a single machine that can be tied to a specific piece of software. It is not a physical interface or location, but it allows your server to be able to communicate using more than one application.\n    \n    • Firewall: A firewall is a program that decides whether traffic coming into a server or going out should be allowed. A firewall usually works by creating rules for which type of traffic is acceptable on which ports. Generally, firewalls block ports that are not used by a specific application on a server.\n    \n    • NAT: Network address translation is a way to translate requests that are incoming into a routing server to the relevant devices or servers that it knows about in the LAN. This is usually implemented in physical LANs as a way to route requests through one IP address to the necessary backend servers.\n    \n    • VPN: Virtual private network is a means of connecting separate LANs through the internet, while maintaining privacy. This is used as a means of connecting remote systems as if they were on a local network, often for security reasons.\n    \n## Network Layers\n\n\tWhile networking is often discussed in terms of topology in a horizontal way, between hosts, its implementation is layered in a vertical fashion throughout a computer or network. This means is that there are multiple technologies and protocols that are built on top of each other in order for communication to function more easily. Each successive, higher layer abstracts the raw data a little bit more, and makes it simpler to use for applications and users. It also allows you to leverage lower layers in new ways without having to invest the time and energy to develop the protocols and applications that handle those types of traffic.\n \n\tAs data is sent out of one machine, it begins at the top of the stack and filters downwards. At the lowest level, actual transmission to another machine takes place. At this point, the data travels back up through the layers of the other computer. Each layer has the ability to add its own \"wrapper\" around the data that it receives from the adjacent layer, which will help the layers that come after decide what to do with the data when it is passed off.\n \n\tOne method of talking about the different layers of network communication is the OSI model. OSI stands for Open Systems Interconnect.This model defines seven separate layers. The layers in this model are:\n\n    • Application: The application layer is the layer that the users and user-applications most often interact with. Network communication is discussed in terms of availability of resources, partners to communicate with, and data synchronization.\n    \n    • Presentation: The presentation layer is responsible for mapping resources and creating context. It is used to translate lower level networking data into data that applications expect to see.\n    \n    • Session: The session layer is a connection handler. It creates, maintains, and destroys connections between nodes in a persistent way.\n    \n    • Transport: The transport layer is responsible for handing the layers above it a reliable connection. In this context, reliable refers to the ability to verify that a piece of data was received intact at the other end of the connection. This layer can resend information that has been dropped or corrupted and can acknowledge the receipt of data to remote computers.\n\n    • Network: The network layer is used to route data between different nodes on the network. It uses addresses to be able to tell which computer to send information to. This layer can also break apart larger messages into smaller chunks to be reassembled on the opposite end.\n    \n    • Data Link: This layer is implemented as a method of establishing and maintaining reliable links between different nodes or devices on a network using existing physical connections.\n    \n    • Physical: The physical layer is responsible for handling the actual physical devices that are used to make a connection. This layer involves the bare software that manages physical connections as well as the hardware itself (like Ethernet).\n    \nThe TCP/IP model, more commonly known as the Internet protocol suite, is another layering model that is simpler and has been widely adopted.It defines the four separate layers, some of which overlap with the OSI model:\n\n    • Application: In this model, the application layer is responsible for creating and transmitting user data between applications. The applications can be on remote systems, and should appear to operate as if locally to the end user. \nThe communication takes place between peers network.\n\n    • Transport: The transport layer is responsible for communication between processes. This level of networking utilizes ports to address different services. It can build up unreliable or reliable connections depending on the type of protocol used.\n    \n    • Internet: The internet layer is used to transport data from node to node in a network. This layer is aware of the endpoints of the connections, but does not worry about the actual connection needed to get from one place to another. IP addresses are defined in this layer as a way of reaching remote systems in an addressable manner.\n    \n    • Link: The link layer implements the actual topology of the local network that allows the internet layer to present an addressable interface. It establishes connections between neighboring nodes to send data.\n    \n## Interfaces\nInterfaces are networking communication points for your computer. Each interface is associated with a physical or virtual networking device. Typically, your server will have one configurable network interface for each Ethernet or wireless internet card you have. In addition, it will define a virtual network interface called the \"loopback\" or localhost interface. This is used as an interface to connect applications and processes on a single computer to other applications and processes. You can see this referenced as the \"lo\" interface in many tools.\n\n## Protocols\nNetworking works by piggybacks on a number of different protocols on top of each other. In this way, one piece of data can be transmitted using multiple protocols encapsulated within one another.\n\nMedia access control is a communications protocol that is used to distinguish specific devices. Each device is supposed to get a unique MAC address during the manufacturing process that differentiates it from every other device on the internet. Addressing hardware by the MAC address allows you to reference a device by a unique value even when the software on top may change the name for that specific device during operation. Media access control is one of the only protocols from the link layer that you are likely to interact with on a regular basis.\n\nThe IP protocol is one of the fundamental protocols that allow the internet to work. IP addresses are unique on each network and they allow machines to address each other across a network. It is implemented on the internet layer in the IP/TCP model. Networks can be linked together, but traffic must be routed when crossing network boundaries. This protocol assumes an unreliable network and multiple paths to the same destination that it can dynamically change between. There are a number of different implementations of the protocol. The most common implementation today is IPv4, although IPv6 is growing in popularity as an alternative due to the scarcity of IPv4 addresses available and improvements in the protocols capabilities.\n\nICMP: internet control message protocol is used to send messages between devices to indicate the availability or error conditions. These packets are used in a variety of network diagnostic tools, such as ping and traceroute. Usually ICMP packets are transmitted when a packet of a different kind meets some kind of a problem. Basically, they are used as a feedback mechanism for network communications.\n\nTCP: Transmission control protocol","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/mikeroyal%2Fdeveloper-handbook/projects"}