<!---

This work is marked CC0 1.0 Universal.  To view a copy of this mark,
visit https://creativecommons.org/publicdomain/zero/1.0/.

--->

# Training Materials

{attribution="Aristotle, _Nicomachean Ethics_"}
> Neither by nature, then, nor contrary to nature do the virtues arise
> in us; rather we are adapted by nature to receive them, and are made
> perfect by habit.

This is a curated list of related reading materials, free training,
workshops, and similar resources, with an emphasis on cloud
infrastructure in clinical research settings.

## Foundations

- [The Missing Semester of Your CS Education](https://missing.csail.mit.edu/)
- [Linux Journey](https://labex.io/linuxjourney)
- [Git Immersion](https://gitimmersion.com/)
- [DevOps with Docker](https://devopswithdocker.com/)
- [DevOps with Kubernetes](https://devopswithkubernetes.com/)
- [Test-Driven Development](https://tdd.mooc.fi/)
- [Deep Dive into Modern Web Development](https://fullstackopen.com/)
- [Georgia Tech Online Master of Science in Computer Science (OMSCS) Open Courseware](https://sites.gatech.edu/omscsopencourseware/)

## Project Management

- [PMI Agile Certified Practitioner (ACP) Exam Content Outline](https://www.pmi.org/-/media/pmi/documents/public/pdf/certifications/agile-certified-exam-outline.pdf)
- [Running Agile projects in GitHub Projects](https://blog.lpains.net/posts/2022-09-05-github-sprint-projects/)
- [Scrum vs Kanban: Key Differences in Project Management Methodologies](https://community.atlassian.com/forums/Agile/Scrum-vs-Kanban-Key-Differences-in-Project-Management/ba-p/2331061)
- [Running a Kanban Standup Meeting](https://developer.cyberark.com/blog/running-a-kanban-standup-meeting/)
- [Use Cases vs. User Stories: How They Differ and When to Use Them](https://www.easyagile.com/blog/use-cases-vs-user-stories/)

## Version Control

- [_Pro Git_ (2nd. ed.)](https://git-scm.com/book/en/v2)
- [Git cheat sheet, extended edition](https://jan-krueger.net/git-cheat-sheet-extended-edition)
- [Confusing git terminology](https://jvns.ca/blog/2023/11/01/confusing-git-terminology/)
- [Git Happens](https://www.youtube.com/watch?v=SjlxILg69ek)
- [Oh My Git!](https://ohmygit.org/)
- [A Plumber's Guide to Git](https://alexwlchan.net/a-plumbers-guide-to-git/)
- [Git Feature Branch Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow),
  also known as
  [trunk-based development](https://trunkbaseddevelopment.com/) or
  [topic branches](https://alvinalexander.com/git/git-topic-branch-workflow-pattern-pro-git/)

## Cloud Computing

- [Get Good with GitOps](https://github.com/ResearchDataCom/get-good-with-gitops)
- [Workflows for GitOps deployments](https://developers.redhat.com/articles/2022/07/20/git-workflows-best-practices-gitops-deployments)
- [Deploy to multiple environments from a single GitHub Actions workflow](https://www.maxivanov.io/github-actions-deploy-to-multiple-environments-from-single-workflow/)
- [One-click deploys to multiple environments using GitHub Actions](https://alastaircrabtree.com/posts/one-click-deploys-to-multiple-environments-using-github-actions/)
- [The Illustrated Children's Guide to Kubernetes](https://www.cncf.io/phippy/)
- [Recommended architectures for PostgreSQL in Kubernetes](https://www.cncf.io/blog/2023/09/29/recommended-architectures-for-postgresql-in-kubernetes/)
- [AWS Lambda - CI/CD with AWS SAM, CodePipeline & CloudFormation](https://web.archive.org/web/20220626102001/https://marcoml.dev/en/post/aws-lambda-ci-cd-with-aws-sam-code-pipeline-and-cloud-formation/)
- [Learn Linux TV: Getting started with Ansible](https://www.youtube.com/playlist?list=PLT98CRl2KxKEUHie1m24-wkyHpEsa4Y70)
- [Learn Linux TV: Proxmox Full Course](https://www.youtube.com/playlist?list=PLT98CRl2KxKHnlbYhtABg6cF50bYa8Ulo)
- [Disaster Recovery on AWS](https://disaster-recovery.workshop.aws/)

## Information Security

- [OpenSecurityTraining2](https://ost2.fyi/)
- [OWASP HTTP Headers Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html)
- [_Computer Security_ (CS 161 textbook)](https://textbook.cs161.org/)
- [Living off the land](https://www.crowdstrike.com/blog/going-beyond-malware-the-rise-of-living-off-the-land-attacks/)
- [What is OpenID Connect](https://openid.net/developers/how-connect-works/)
- [An Illustrated Guide to OAuth and OpenID Connect (OIDC)](https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc)
- [Mapping Microsoft technology and guidance to the Adaptive Access capability in the Zero Trust Reference Model](https://www.linkedin.com/posts/marksimos_i-mapped-microsoft-technology-and-guidance-activity-7262050350977675264-EIN-)
- [The SOC2 Starting Seven](https://www.latacora.com/blog/2020/03/12/the-soc-starting/)
- [SOC2: The Screenshots Will Continue Until Security Improves](https://fly.io/blog/soc2-the-screenshots-will-continue-until-security-improves/),
  plus these Hacker News comments:
  [[1]](https://news.ycombinator.com/item?id=44362436),
  [[2]](https://news.ycombinator.com/item?id=44362665),
  [[3]](https://news.ycombinator.com/item?id=44362720)

## Programming

- [_Think Python_ (3rd. Ed.)](https://greenteapress.com/wp/think-python-3rd-edition/)
- [Learn TLA+ (Temporal Logic of Actions)](https://www.learntla.com/),
  [related Hacker News thread on formal methods](https://news.ycombinator.com/item?id=42656433)
- [How we teach front-end development using vanilla JS](https://blog.borrego.dev/entries/how-we-teach-frontend-with-vanilla-js.html)
- [What Are Capabilities?](http://habitatchronicles.com/2017/05/what-are-capabilities/)
- [Secure Software Development Framework v1.1](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-218.pdf)

## Test-driven Development

- [Selenium WebDriver with Python](https://testautomationu.applitools.com/selenium-webdriver-python-tutorial/)
- [Automated UI Testing with Selenium & PyTest](https://www.tim-corley.dev/blog/automated-ui-testing-with-selenium-pytest),
  [supporting materials](https://github.com/tim-corley/selenium-pytest)
- [Unit Testing AWS Lambda with Python and Mock AWS Services Using Moto](https://web.archive.org/web/2/https://medium.com/@seifeddinerajhi/unit-testing-aws-lambda-with-python-and-mock-aws-services-using-moto-80e1855c16e1),
  [supplementary materials](https://github.com/seifrajhi/Python-AWS-Lambda-Testing)
- [Same Pytest fixtures with different scopes](https://pawamoy.github.io/posts/same-pytest-fixtures-with-different-scopes/)

## Miscellaneous

- [Designing Conference Posters](https://colinpurrington.com/tips/poster-design/)
- [A well laid out vi cheat sheet](https://www.stationx.net/vi-cheat-sheet/)
- [Everything you wanted to know about DNS](https://www.nslookup.io/learning/)
- [HPC Ecosystems OpenHPC 2.x Training Guide](https://hpc-ecosystems.gitlab.io/training/openhpc-2.x-guide/)
