├── .gitignore ├── devops └── docker-intro-workshop │ ├── helloladies │ ├── Dockerfile │ ├── app │ │ ├── __init__.py │ │ ├── static │ │ │ ├── logo.png │ │ │ ├── plg.png │ │ │ ├── plh.png │ │ │ └── index.css │ │ ├── app.py │ │ └── templates │ │ │ └── index.html │ ├── requirements.txt │ └── Makefile │ ├── cheatsheet.jpg │ ├── workshop-slides.pdf │ ├── templateDockerfile │ ├── workshop-outro.md │ ├── workshop-follow-along.md │ ├── README.md │ └── .gitignore ├── ethics └── data-ethics-intro-talk │ ├── DATA_ETHICS_AND_ME__WHAT_IS_IT_AND_WHY_SHOULD_I_CARE_AS_A_TECHNOLOGIST_AND_TECHNOLOGY_USER___1_.pdf │ └── README.md ├── .github └── CODEOWNERS ├── education └── python_beginner │ └── recommended_readings.md ├── raspberry-pi └── introduction-to-the-raspberry-pi │ ├── hello_world_blink.py │ └── README.md ├── README.md └── LICENSE.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/Dockerfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/requirements.txt: -------------------------------------------------------------------------------- 1 | flask==1.0.2 2 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/cheatsheet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/devops/docker-intro-workshop/cheatsheet.jpg -------------------------------------------------------------------------------- /devops/docker-intro-workshop/workshop-slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/devops/docker-intro-workshop/workshop-slides.pdf -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/devops/docker-intro-workshop/helloladies/app/static/logo.png -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/static/plg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/devops/docker-intro-workshop/helloladies/app/static/plg.png -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/static/plh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/devops/docker-intro-workshop/helloladies/app/static/plh.png -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: run 2 | run: 3 | rm -rf env 4 | python3 -m venv env 5 | env/bin/pip install -r requirements.txt 6 | env/bin/python app/app.py 7 | 8 | .PHONY: docker-run 9 | docker-run: 10 | docker build -t myapp . && docker run -p 5000:5000 myapp 11 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/templateDockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7 2 | 3 | MAINTAINER Pyladies Workshop 4 | 5 | WORKDIR /myapp 6 | 7 | COPY app/ /myapp/app 8 | COPY requirements.txt /myapp 9 | 10 | RUN pip install -r requirements.txt 11 | 12 | EXPOSE 5000 13 | 14 | CMD ["python", "app/app.py"] 15 | 16 | -------------------------------------------------------------------------------- /ethics/data-ethics-intro-talk/DATA_ETHICS_AND_ME__WHAT_IS_IT_AND_WHY_SHOULD_I_CARE_AS_A_TECHNOLOGIST_AND_TECHNOLOGY_USER___1_.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pyladies/pyladies-chapter-resources/HEAD/ethics/data-ethics-intro-talk/DATA_ETHICS_AND_ME__WHAT_IS_IT_AND_WHY_SHOULD_I_CARE_AS_A_TECHNOLOGIST_AND_TECHNOLOGY_USER___1_.pdf -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template 2 | 3 | app = Flask(__name__) 4 | 5 | 6 | @app.route("/") 7 | def hello_world(): 8 | return "Hello world!" 9 | 10 | 11 | @app.route("/") 12 | def homepage(name): 13 | return render_template("index.html", username=name) 14 | 15 | 16 | if __name__ == "__main__": 17 | 18 | app.run(host="0.0.0.0") 19 | 20 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This is a comment. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in 5 | # the repo. Unless a later match takes precedence, 6 | # @pyladies/tech-and-infra-admins and @pyladies/pyladies-global-admin will be requested for 7 | # review when someone opens a pull request. 8 | * @pyladies/tech-and-infra-admins @pyladies/pyladies-global-admin 9 | -------------------------------------------------------------------------------- /education/python_beginner/recommended_readings.md: -------------------------------------------------------------------------------- 1 | # PyLadies Python Beginner Recommended Readings 2 | 3 | Looking for beginner Python readings? The below have been recommended by our community! If you have a recommendation tag it below 👇🏽: 4 | 5 | | Title | Author | Link | Language | Topics | Price | 6 | | -- | -- | -- | -- | -- | -- | 7 | | Think Python | Allen Downey | https://greenteapress.com/wp/think-python-2e/ | English & Spanish | Python 101 | Free | 8 | | Hitchhikers Guide to Python | Kenneth Reitz | https://docs.python-guide.org/ | English | Python 101, web development, devops | Free | 9 | | The Quick Python Book | Naomi Ceder | https://www.manning.com/books/the-quick-python-book-third-edition | English | Python 101 | $ 32 USD | 10 | | Python Basics | Real Python | https://static.realpython.com/python-basics-sample-chapters.pdf | English | Python 101 | Free | 11 | | Quiero Aprender Python | Argentina Python | https://argentinaenpython.com/quiero-aprender-python/ | Spanish | Python 101 | Free (Lista de recursos gratuitos) | 12 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/workshop-outro.md: -------------------------------------------------------------------------------- 1 | --- 2 | marp: true 3 | theme: uncover 4 | _class: invert 5 | --- 6 | 7 | # **One step closer to DevOps** 8 | 9 | ## workshop outro 10 | 11 | Welcome everyone! 🐍 🌈 12 | 13 | --- 14 | 15 | # -> Where to start? 16 | 17 | - Dockerfile = Recipe 18 | 19 | - Image = snapshot 20 | 21 | - Container = executing snapshot 22 | 23 | --- 24 | 25 | # -> How? 26 | 27 | - make sure the Dockerfile exists and is empty 28 | - base: `FROM python:3.7` 29 | - meta: `MAINTAINER Me+) ` 30 | - set the start folder: `WORKDIR myapp/` 31 | - file system needs files: `COPY app /myapp/app` 32 | - don't forget other files: `COPY requirements.txt myapp/` 33 | 34 | --- 35 | 36 | # -> How? (contd.) 37 | 38 | - install dependencies (as you normally would): `RUN pip install -r requirements.txt` 39 | - communicate with the outside world: `EXPOSE 5000` 40 | - Make the app work: `CMD ["python", "app/app.py"]` 41 | 42 | --- 43 | 44 | ### -> CheatSheet 45 | 46 | ![w:1000](cheatsheet.jpg) 47 | 48 | --- 49 | 50 | # -> What for? 51 | 52 | - Simplicity 53 | - Reproducibility 54 | - Scalability 55 | - Collaboration+) 56 | - Better sand boxing during development 57 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Pyladies Workshop 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 |
20 | Hello, {{username}}! 🎉 21 |
22 | {% if username != "World" %} 23 |
24 | Congratulations! You have solved our docker puzzle! 25 |
26 | {% else %} 27 |
28 | Uh oh - your name couldn't be found. Did you try to type: localhost:5000/{NAME}? 29 |
30 | {% endif %} 31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /raspberry-pi/introduction-to-the-raspberry-pi/hello_world_blink.py: -------------------------------------------------------------------------------- 1 | # The Rpi.GPIO library makes it easy for your programs to read from and write to 2 | # the Raspberry Pi's GPIO (General Purpose Input/Output) pins 3 | import RPi.GPIO as GPIO 4 | import time 5 | 6 | # GPIO.BCM mode selects the pin numbering system of GPIO pin channels 7 | # as opposed to GPIO.BOARD mode which uses P1 connector pin numbers 8 | GPIO.setmode(GPIO.BCM) 9 | # Any Raspberry Pi pin you use needs to be set as either an input or an output 10 | # Here we are setting pin GPIO 20 as an output to control the LED 11 | GPIO.setup(20, GPIO.OUT) 12 | 13 | # Blink the LED 20 times 14 | for i in range(20): 15 | # Output high (3.3 volts) on pin 20, to turn the LED on 16 | GPIO.output(20, 1) 17 | # Leave the LED on for one second 18 | time.sleep(1) 19 | # Output low (0 volts) on pin 20, to turn the LED off 20 | GPIO.output(20, 0) 21 | # Leave the LED off for one second 22 | time.sleep(1) 23 | 24 | # This resets any ports used in your program 25 | GPIO.cleanup() 26 | 27 | # Why not? :-) 28 | print("Hello World!") 29 | # This will print some general info about your Raspberry Pi 30 | print("Raspberry Pi stats: {}".format(GPIO.RPI_INFO)) 31 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/helloladies/app/static/index.css: -------------------------------------------------------------------------------- 1 | html, body, div, span, applet, object, iframe, 2 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 3 | a, abbr, acronym, address, big, cite, code, 4 | del, dfn, em, img, ins, kbd, q, s, samp, 5 | small, strike, strong, sub, sup, tt, var, 6 | b, u, i, center, 7 | dl, dt, dd, ol, ul, li, 8 | fieldset, form, label, legend, 9 | table, caption, tbody, tfoot, thead, tr, th, td, 10 | article, aside, canvas, details, embed, 11 | figure, figcaption, footer, header, hgroup, 12 | menu, nav, output, ruby, section, summary, 13 | time, mark, audio, video { 14 | margin: 0; 15 | padding: 0; 16 | border: 0; 17 | font-size: 100%; 18 | font: inherit; 19 | vertical-align: baseline; 20 | } 21 | article, aside, details, figcaption, figure, 22 | footer, header, hgroup, menu, nav, section { 23 | display: block; 24 | } 25 | body { 26 | line-height: 1; 27 | font-family: 'IBM Plex Sans', sans-serif; 28 | background-color: #4ab3f5; 29 | text-align: center; 30 | padding: 1em; 31 | font-size: 32px; 32 | color: white; 33 | } 34 | 35 | #container { 36 | width: 1000px; 37 | margin-left: auto; 38 | margin-right: auto; 39 | } 40 | 41 | #logo { 42 | width: 300px; 43 | } 44 | 45 | #hello { 46 | margin-top: 0.5em; 47 | margin-bottom: 0.5em; 48 | font-size: 4em; 49 | } 50 | 51 | #no-env-var { 52 | background: #ff4242; 53 | color: #fff; 54 | padding: 0.5em; 55 | } 56 | 57 | code { 58 | font-family: 'Inconsolata', monospace; 59 | } 60 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/workshop-follow-along.md: -------------------------------------------------------------------------------- 1 | --- 2 | marp: true 3 | --- 4 | 5 | # **One step closer to DevOps** 6 | 7 | ## workshop walkthrough 8 | 9 | Welcome everyone! 🐍 🌈 10 | 11 | --- 12 | 13 | # -> Where to start? 14 | 15 | - the application is located within the `/helloladies` directory 16 | - Let's write the dockerfile 17 | 18 | --- 19 | 20 | # -> Dockerfile 21 | 22 | ``` 23 | FROM python:3.7 24 | 25 | MAINTAINER Pyladies Workshop 26 | 27 | WORKDIR /myapp 28 | 29 | COPY app/ /myapp/app 30 | COPY requirements.txt /myapp 31 | 32 | RUN pip install -r requirements.txt 33 | 34 | EXPOSE 5000 35 | 36 | CMD ["python", "app/app.py"] 37 | ``` 38 | 39 | --- 40 | 41 | # -> Run your container 42 | 43 | ``` 44 | docker build . -t # build container with a tag 45 | docker images #show built images 46 | docker run --publish 5000:5000 --env NAME= # run container 47 | ``` 48 | 49 | `-env` defines an environment variable that will be present in your container's environment 50 | 51 | go to [https://localhost:5000] 52 | 53 | --- 54 | 55 | ### -> Things to do 56 | 57 | ``` 58 | docker ps # to list the running docker processes, and take note of your container's ID 59 | docker logs #to view logs of the container 60 | docker exec -it sh #connect to container: 61 | echo $NAME #see you env variable from container 62 | docker stop #stop container: 63 | ``` 64 | 65 | --- 66 | 67 | # -> Exercises 68 | 69 | - change the background color of the app 70 | - rerun steps from run your container 71 | - change text in app 72 | - rerun steps from run your container 73 | - show and tell 74 | -------------------------------------------------------------------------------- /ethics/data-ethics-intro-talk/README.md: -------------------------------------------------------------------------------- 1 | # Data Ethics and Me: What is it and why should I care? 2 | 3 | This is a slide stack from a GitHub Constellation / PyLadies Chicago 2018 talk introducing the concept of Data Ethics to a technical audience. 4 | 5 | Learning objectives: 6 | 7 | * Definition for what data ethics is 8 | * Provide a framework to explore ethical concerns 9 | * Explore recent case studies with ethical challenges 10 | * Review open source tools working on data ethics 11 | * Introduce the data ethics pledge 12 | 13 | ### How to use 14 | 15 | You are welcome to use concepts provided in the talk as you see fit! The entire Google slide stack can be found [here](https://goo.gl/urR14S 16 | ) (also on [Speaker Deck](https://speakerdeck.com/loooorenanicole/data-ethics-and-me-what-is-it-and-why-should-i-care-as-a-technologist-and-technology-user)). Alternatively, the PDF of the slides have been uploaded here. This talk is derived from a longer talked I have created titled, "Now is better than Never: What the Zen of Python can teach us about Data Ethics", available for review on my [Speaker Deck](https://speakerdeck.com/loooorenanicole/now-is-better-than-never-what-the-zen-of-python-can-teach-us-about-data-ethics). 17 | 18 | The talk is approximately 25 minutes in length. 19 | 20 | Suggestions for how to use: 21 | 22 | - Have a data ethics panels using the three pronged approach (slide #8) - ethics of data, ethics of algorithms, ethics of practices - to generate questions 23 | - Using the three pronged approach (slide #8) - ethics of data, ethics of algorithms, ethics of practices - invite your group to find ethical challenges in the current moment and highlight what are the ethical challenges presented 24 | - Invite a speaker to give a talk that is in this flavor! Need ideas whom to invite? Reach out via email (see below)! 25 | 26 | ### Author Information 27 | 28 | 29 | Author Name | Email | Can you contact? | Preferred contact | 30 | | -- | --| --| --| 31 | | Lorena Mesa | me@lorenamesa.com | [X] | Email | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pyladies-chapter-resources 2 | A repository for PyLadies chapter resources including presentation materials and education plans for talks, tutorials, and other resources used for running meetups. 3 | 4 | ### How to use 5 | 6 | PyLadies members are free to use resources from this repository as they see fit, provided they follow the usage terms outlined in the [Creative Commons License 4.0](https://creativecommons.org/licenses/by-sa/4.0/) included in this repository. 7 | 8 | TL;DR you are free to: 9 | 10 | * Share — copy and redistribute the material in any medium or format 11 | * Adapt — remix, transform, and build upon the material for any purpose, even commercially. 12 | 13 | Under the following terms: 14 | 15 | * Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. 16 | * ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. 17 | 18 | No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. 19 | 20 | Therefore, if you were using a resource from this repository for a PyLadies event, such as a workshop, you need to include in the slide stack a link back to this repository including any author information uploaded with the resource. 21 | 22 | ### Adding resources 23 | 24 | To add a resource to the repository: 25 | 26 | 1. Locate the matching topic directory (e.g. machine learning). Is there one? Great! If there isn't a topic directory, make one! 27 | 2. Create a directory that will house your resources in the topic directory. Your resource directory should include: 28 | - Slides 29 | - Any articulating resources (e.g. white papers if needed) 30 | - If your resource is a class or workshop, include the classroom plan. 31 | - Create a README that includes the date you uploaded the resources, your PyLadies chapter information, and author information. Author information should be used by all PyLadies who go on to use this resource in their programming, as outlined in the Creative Commons License usage (see above on "How to use"). If you are open to people contacting you with questions, please specify in the author information. 32 | 3. Make a PR with all the information above titling the PR "Adding to " 33 | 4. The PyLadies global team will review and merge in! 34 | 35 | ### Questions? 36 | 37 | If you have any questions, reach out to PyLadies on the [PyLadies Slack](https://slackin.pyladies.com/)! Alternatively, you can email info@pyladies.com or open an issue with 'HELP' in the title. -------------------------------------------------------------------------------- /devops/docker-intro-workshop/README.md: -------------------------------------------------------------------------------- 1 | This is the slide stack and hands-on material from a PyLadies Berlin & Hamburg 2020 workshops on introduction to Docker. 2 | 3 | Learning objectives: 4 | 5 | - Basic understanding of what devops means 6 | - Understanding of why docker? 7 | - Simple tutorial for first docker image 8 | - Basic interactions with the docker image 9 | 10 | Pre-workshop requirements: 11 | 12 | - Local installation of Docker 13 | - Git account 14 | 15 | Docker (You will need admin permission on your machine )(https://www.tutorialspoint.com/docker/installing_docker_on_linux.htm) 16 | 17 | - Linux https://phoenixnap.com/kb/how-to-install-docker-on-ubuntu-18-04 18 | - Mac https://docs.docker.com/docker-for-mac/install/ 19 | - Windows https://docs.docker.com/docker-for-windows/install/ 20 | 21 | Git (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) 22 | 23 | Caveat: 24 | 25 | Docker cannot be installed on older Windows home editions. And for following the tutorial one needs access to a terminal that knows about the docker installation. 26 | 27 | --- 28 | 29 | ## How to use 30 | 31 | You are welcome to use concepts provided in the slides and workshop material as you see fit! 32 | 33 | - [Pdf Slides](workshop-slides.pdf) 34 | - [Workshop fallow along](workshop-follow-along.md) 35 | - [Workshop outro](workshop-outro.md) 36 | 37 | - [Slides and material from original workshop](https://github.com/emilywoods/pyladies-docker-workshop) 38 | - [Branch with completed workshop](https://github.com/emilywoods/pyladies-docker-workshop/tree/completed-dockerfile) 39 | 40 | The talk is approximately 30 mins in length and then workshop with Q&A can be around one hour. 41 | The slides cover more material, feel free to use what you think makes sense for your setup. 42 | 43 | The recording of the Hamburg workshop iteration is on the Pyladies Youtube. 44 | 45 | # General links and resources 46 | 47 | - [Docker image docs](https://docs.docker.com/engine/reference/commandline/image/) 48 | - [Docker container docs](https://docs.docker.com/engine/reference/commandline/container/) 49 | - [Docker intro](https://docs.docker.com/get-started/) 50 | - [Accelerate book spoiler](https://blog.sonatype.com/principle-based-devops-frameworks-accelerate) 51 | - [Some truth about DevOps](https://blog.newrelic.com/engineering/devops-for-beginners/) 52 | 53 | ### Author Information 54 | 55 | | Author Name | Email/Twitter | Can you contact? | Preferred contact | 56 | | --------------- | --------------- | ---------------- | ----------------- | 57 | | Emily Woods | @sometimes_milo | [X] | Twitter | 58 | | Mika Naylor | @autophagian | [X] | Twitter | 59 | | Alisa Dammer | @FatDataUnicorn | [X] | Twitter | 60 | | Gesa Stupperich | @neinkeinkaffe | [X] | Twitter | 61 | -------------------------------------------------------------------------------- /devops/docker-intro-workshop/.gitignore: -------------------------------------------------------------------------------- 1 | *.so 2 | target/ 3 | heaps/ 4 | # Byte-compiled / optimized / DLL files 5 | __pycache__/ 6 | *.py[cod] 7 | *$py.class 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Distribution / packaging 13 | .Python 14 | build/ 15 | develop-eggs/ 16 | dist/ 17 | downloads/ 18 | eggs/ 19 | .eggs/ 20 | lib/ 21 | lib64/ 22 | parts/ 23 | sdist/ 24 | var/ 25 | wheels/ 26 | share/python-wheels/ 27 | *.egg-info/ 28 | .installed.cfg 29 | *.egg 30 | MANIFEST 31 | 32 | # PyInstaller 33 | # Usually these files are written by a python script from a template 34 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 35 | *.manifest 36 | *.spec 37 | 38 | # Installer logs 39 | pip-log.txt 40 | pip-delete-this-directory.txt 41 | 42 | # Unit test / coverage reports 43 | htmlcov/ 44 | .tox/ 45 | .nox/ 46 | .coverage 47 | .coverage.* 48 | .cache 49 | nosetests.xml 50 | coverage.xml 51 | *.cover 52 | *.py,cover 53 | .hypothesis/ 54 | .pytest_cache/ 55 | cover/ 56 | 57 | # Translations 58 | *.mo 59 | *.pot 60 | 61 | # Django stuff: 62 | *.log 63 | local_settings.py 64 | db.sqlite3 65 | db.sqlite3-journal 66 | 67 | # Flask stuff: 68 | instance/ 69 | .webassets-cache 70 | 71 | # Scrapy stuff: 72 | .scrapy 73 | 74 | # Sphinx documentation 75 | docs/_build/ 76 | 77 | # PyBuilder 78 | .pybuilder/ 79 | target/ 80 | 81 | # Jupyter Notebook 82 | .ipynb_checkpoints 83 | 84 | # IPython 85 | profile_default/ 86 | ipython_config.py 87 | 88 | # pyenv 89 | # For a library or package, you might want to ignore these files since the code is 90 | # intended to run in multiple environments; otherwise, check them in: 91 | # .python-version 92 | 93 | # pipenv 94 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 95 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 96 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 97 | # install all needed dependencies. 98 | #Pipfile.lock 99 | 100 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 101 | __pypackages__/ 102 | 103 | # Celery stuff 104 | celerybeat-schedule 105 | celerybeat.pid 106 | 107 | # SageMath parsed files 108 | *.sage.py 109 | 110 | # Environments 111 | .env 112 | .venv 113 | env/ 114 | venv/ 115 | ENV/ 116 | env.bak/ 117 | venv.bak/ 118 | 119 | # Spyder project settings 120 | .spyderproject 121 | .spyproject 122 | 123 | # Rope project settings 124 | .ropeproject 125 | 126 | # mkdocs documentation 127 | /site 128 | 129 | # mypy 130 | .mypy_cache/ 131 | .dmypy.json 132 | dmypy.json 133 | 134 | # Pyre type checker 135 | .pyre/ 136 | 137 | # pytype static type analyzer 138 | .pytype/ 139 | 140 | # Cython debug symbols 141 | cython_debug/ 142 | -------------------------------------------------------------------------------- /raspberry-pi/introduction-to-the-raspberry-pi/README.md: -------------------------------------------------------------------------------- 1 | # A short introductory Raspberry Pi Presentation 2 | 3 | *I had mentioned a Raspberry Pi project at a [Santa Cruz PyLadies](https://www.meetup.com/PyLadiesSC/) meetup, 4 | and some people who weren't familiar with the Raspberry Pi asked me about it. I volunteered to demonstrate some 5 | Raspberry Pi stuff at the [June 4, 2018 Speaker Night](https://www.meetup.com/PyLadiesSC/events/250555271/), 6 | and the following is the script I wrote for my presentation, with links and code.* 7 | 8 | ## Introduction to the Raspberry Pi 9 | 10 | *(I hand someone my Raspberry Pi, so they can examine it and pass it around the room.)* 11 | 12 | The [Raspberry Pi](https://www.raspberrypi.org/) is a single-board Linux computer which was first released in 13 | 2012, and over 19 million of them have been sold. The most common models are the size of a credit card, and cost 14 | around $35, but there are also smaller Raspberry Pi Zero models that only cost $5 and $10. You *can* use them as 15 | general purpose computers -- [Idea Fab Labs](http://santacruz.ideafablabs.com/) has some as dedicated print 16 | servers for 3D printers -- but at those prices, as you can imagine they're pretty low-end and slow compared to 17 | mass-market laptop and desktop computers. What makes them particularly special and popular (in addition to the 18 | price) is that they have a lot of input/output pins that your programs can use to talk to and control hardware, 19 | making them well-suited for use in robotics, home automation, art installations, etc. 20 | 21 | Being Linux computers, you can write and run programs on them using any language you like, but the Raspberry Pi 22 | community mostly revolves around Python. Raspberry Pis come with Python 2 and 3 installed, including the Python 23 | [Rpi.GPIO](https://pypi.org/project/RPi.GPIO/) library that makes it easy for your programs to control the 24 | Raspberry Pi's GPIO (General Purpose Input/Output) pins. They also come with the 25 | [IDLE](https://docs.python.org/3/library/idle.html) Python IDE, but you can use other IDEs (or text editors) 26 | too, such as 27 | [PyCharm](https://www.jetbrains.com/pycharm/) free Community Edition, which I use. 28 | 29 | ## Hello World, plus HATs 30 | 31 | Remember the last meetup, where we were doing "Hello World!" with different languages and web frameworks? Well, 32 | when you're getting started with a Raspberry Pi (or Arduino, or Android Things), the "Hello World" equivalent is 33 | to connect and blink an LED. A [breadboard](https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard) is a 34 | tool that lets you easily make circuits and connections by poking wires and components into it -- everything is 35 | reusable, and you don't need to do any soldering. Adafruit has a product called the 36 | [Cobbler](https://www.adafruit.com/product/914) which I have here, and which connects to the Raspberry Pi with a 37 | cable, and then plugs into a breadboard, to make all Raspberry Pi pins labeled and easily accessible from the 38 | breadboard, but you can also just use jumper wires to connect individual Raspberry Pi pins one at a time to a 39 | breadboard. 40 | 41 | *(I retrieve my Raspberry Pi from the audience, plug the Cobbler into it, plug in a keyboard, mouse, and cable 42 | to a giant display on the wall, and power it up.)* 43 | 44 | For the hardware part of this example we're going to use a jumper wire to connect one of the Raspberry Pi's 45 | Ground pins to one end of this 330-ohm resistor, then we're connecting the other end of the 330-ohm resistor to 46 | the negative pin of this LED, and then using another jumper wire to connect the Raspberry Pi's GPIO20 pin to the 47 | positive pin of the LED. (I didn't choose GPIO pin 20 for any particular reason - you can use whichever GPIO pin 48 | or pins you like so long as you use the same pins in your software.) 49 | 50 | For the software part of this example we have 51 | [hello_world_blink.py](./hello_world_blink.py). 52 | 53 | *(I do a walk-through of [the code](./hello_world_blink.py) and run it.)* 54 | 55 | In addition to building your own circuits or prototypes, you can also buy pre-built add-on boards called "HAT"s 56 | ("**H**ardware **A**ttached on **T**op") that plug onto the Raspberry Pi's pins and extend your Raspberry Pi's 57 | functionality with components like sensors, buttons, displays, etc., and may come with their own Python libraries 58 | to make them really easy to use in your programs. 59 | 60 | ## [Raspberry Pi Instagram Slide and Video Show](https://github.com/tachyonlabs/raspberry_pi_slide_and_video_show) 61 | 62 | I'm a volunteer at the [Idea Fab Labs](https://santacruz.ideafablabs.com/) maker/hacker/artspace here in Santa 63 | Cruz, and I was asked to set up a Raspberry Pi for our weekly open house and for IFL booths at events, so that 64 | all you had to do was plug it into a large monitor and it would start running a slideshow of 65 | [Idea Fab Labs' Instagram feed](https://www.instagram.com/ideafablabs/) of photos of projects, facilities, and 66 | events. 67 | 68 | I had written my original 69 | [Raspberry Pi Instagram Slideshow](https://github.com/tachyonlabs/raspberry_pi_instagram_slideshow) version in 70 | Python using the [Tkinter](https://wiki.python.org/moin/TkInter) GUI, but when I was asked to update it to 71 | include Instagram videos as well as photos, I 72 | [rewrote it](https://github.com/tachyonlabs/raspberry_pi_slide_and_video_show) (still in Python) using the 73 | cross-platform (you can run your same Python application on Windows, OS X, Android, and iOS, in addition to 74 | Raspberry Pi/Linux) [Kivy](https://kivy.org/) Framework. 75 | 76 | *(I demonstrate my Raspberry Pi Instagram Slide and Video Show application.)* 77 | 78 | ## Free Giant Amazing Raspberry Pi Project Books! 79 | 80 | There are three official Raspberry Pi project books that are free online, each one 200 lavishly-illustrated 81 | pages of projects and articles (including beginner's guides). You'll see projects for gaming, music, robotics, 82 | Lego, telescope control, high-altitude photography, terrarium lighting control, etc. etc. etc. 83 | 84 | * [The Official Raspberry Pi Projects Book](https://www.raspberrypi.org/magpi-issues/Projects_Book_v1.pdf) 85 | * [The Official Raspberry Pi Projects Book Volume 2](https://www.raspberrypi.org/magpi-issues/Projects_Book_v2.pdf) 86 | * [The Official Raspberry Pi Projects Book Volume 3](https://www.raspberrypi.org/magpi-issues/Projects_Book_v3.pdf) 87 | 88 | *(I load [The Official Raspberry Pi Projects Book](https://www.raspberrypi.org/magpi-issues/Projects_Book_v1.pdf) 89 | into a browser window on the Raspberry Pi.)* 90 | 91 | ## Have fun! 92 | 93 | So get a Raspberry Pi, and have fun! A lot of people are hesitant to try hardware projects with their computers 94 | because they have no idea where to start, and are afraid they might fry their computers. But the Raspberry Pi 95 | is not only built for hardware projects and very beginner-friendly and Python-friendly, but also very cheap, in 96 | case of those rare occasions where worst really does come to worst. 97 | 98 | ## A Cautionary Tale 99 | 100 | "Have fun!" would normally be the end of the story, but in this case I also have a postscript: 101 | 102 | If you remember the "HAT"s, well, when I was writing my script for this presentation, and concluded it with the 103 | part about not worrying about frying your computer, I thought, oh, I have an "Android Things" 104 | "[Rainbow HAT](https://www.adafruit.com/product/3354)" board which is supposedly also compatible with the 105 | Raspberry Pi, I should demo that in my presentation as well. And I plugged it into my Raspberry Pi, and powered 106 | up, and it didn't boot. And I powered down, unplugged the Rainbow HAT, powered up again, and still nothing. 107 | 108 | A Raspberry Pi stores the OS and all your files on a micro SD card, which helps keep it very cheap, but in my 109 | experience they can be kind of sensitive, and in this case it had gotten fried not just to the point where I 110 | would need to use my laptop to reformat it and recopy a system image to it, but to the point where it would just 111 | not even format. And because I didn't have a spare one (which is like a $5 part) and hadn't backed up my 112 | existing one before this happened, it was a mad dash to get a new one and download/install/compile lots of 113 | packages that I use in time to be able to do this presentation this evening. 114 | 115 | So yes, have fun! But it's also good to play it safe by having one or more spare SD cards, and backing up a 116 | system image of your SD card to your laptop or desktop *after* you've installed everything in sight on it. 117 | 118 | ## Author Information 119 | | Author Name | Email | OK to contact? | 120 | | ----------- | ----- | -------------- | 121 | | Tané Tachyon | tachyon@tachyonlabs.com | Yes | 122 | 123 | This presentation is also available at 124 | [https://github.com/tachyonlabs/raspberry_pi_pyladies_presentation](https://github.com/tachyonlabs/raspberry_pi_pyladies_presentation). 125 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Attribution-NonCommercial-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International 58 | Public License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-NonCommercial-ShareAlike 4.0 International Public License 63 | ("Public License"). To the extent this Public License may be 64 | interpreted as a contract, You are granted the Licensed Rights in 65 | consideration of Your acceptance of these terms and conditions, and the 66 | Licensor grants You such rights in consideration of benefits the 67 | Licensor receives from making the Licensed Material available under 68 | these terms and conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-NC-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution, NonCommercial, and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. NonCommercial means not primarily intended for or directed towards 126 | commercial advantage or monetary compensation. For purposes of 127 | this Public License, the exchange of the Licensed Material for 128 | other material subject to Copyright and Similar Rights by digital 129 | file-sharing or similar means is NonCommercial provided there is 130 | no payment of monetary compensation in connection with the 131 | exchange. 132 | 133 | l. Share means to provide material to the public by any means or 134 | process that requires permission under the Licensed Rights, such 135 | as reproduction, public display, public performance, distribution, 136 | dissemination, communication, or importation, and to make material 137 | available to the public including in ways that members of the 138 | public may access the material from a place and at a time 139 | individually chosen by them. 140 | 141 | m. Sui Generis Database Rights means rights other than copyright 142 | resulting from Directive 96/9/EC of the European Parliament and of 143 | the Council of 11 March 1996 on the legal protection of databases, 144 | as amended and/or succeeded, as well as other essentially 145 | equivalent rights anywhere in the world. 146 | 147 | n. You means the individual or entity exercising the Licensed Rights 148 | under this Public License. Your has a corresponding meaning. 149 | 150 | 151 | Section 2 -- Scope. 152 | 153 | a. License grant. 154 | 155 | 1. Subject to the terms and conditions of this Public License, 156 | the Licensor hereby grants You a worldwide, royalty-free, 157 | non-sublicensable, non-exclusive, irrevocable license to 158 | exercise the Licensed Rights in the Licensed Material to: 159 | 160 | a. reproduce and Share the Licensed Material, in whole or 161 | in part, for NonCommercial purposes only; and 162 | 163 | b. produce, reproduce, and Share Adapted Material for 164 | NonCommercial purposes only. 165 | 166 | 2. Exceptions and Limitations. For the avoidance of doubt, where 167 | Exceptions and Limitations apply to Your use, this Public 168 | License does not apply, and You do not need to comply with 169 | its terms and conditions. 170 | 171 | 3. Term. The term of this Public License is specified in Section 172 | 6(a). 173 | 174 | 4. Media and formats; technical modifications allowed. The 175 | Licensor authorizes You to exercise the Licensed Rights in 176 | all media and formats whether now known or hereafter created, 177 | and to make technical modifications necessary to do so. The 178 | Licensor waives and/or agrees not to assert any right or 179 | authority to forbid You from making technical modifications 180 | necessary to exercise the Licensed Rights, including 181 | technical modifications necessary to circumvent Effective 182 | Technological Measures. For purposes of this Public License, 183 | simply making modifications authorized by this Section 2(a) 184 | (4) never produces Adapted Material. 185 | 186 | 5. Downstream recipients. 187 | 188 | a. Offer from the Licensor -- Licensed Material. Every 189 | recipient of the Licensed Material automatically 190 | receives an offer from the Licensor to exercise the 191 | Licensed Rights under the terms and conditions of this 192 | Public License. 193 | 194 | b. Additional offer from the Licensor -- Adapted Material. 195 | Every recipient of Adapted Material from You 196 | automatically receives an offer from the Licensor to 197 | exercise the Licensed Rights in the Adapted Material 198 | under the conditions of the Adapter's License You apply. 199 | 200 | c. No downstream restrictions. You may not offer or impose 201 | any additional or different terms or conditions on, or 202 | apply any Effective Technological Measures to, the 203 | Licensed Material if doing so restricts exercise of the 204 | Licensed Rights by any recipient of the Licensed 205 | Material. 206 | 207 | 6. No endorsement. Nothing in this Public License constitutes or 208 | may be construed as permission to assert or imply that You 209 | are, or that Your use of the Licensed Material is, connected 210 | with, or sponsored, endorsed, or granted official status by, 211 | the Licensor or others designated to receive attribution as 212 | provided in Section 3(a)(1)(A)(i). 213 | 214 | b. Other rights. 215 | 216 | 1. Moral rights, such as the right of integrity, are not 217 | licensed under this Public License, nor are publicity, 218 | privacy, and/or other similar personality rights; however, to 219 | the extent possible, the Licensor waives and/or agrees not to 220 | assert any such rights held by the Licensor to the limited 221 | extent necessary to allow You to exercise the Licensed 222 | Rights, but not otherwise. 223 | 224 | 2. Patent and trademark rights are not licensed under this 225 | Public License. 226 | 227 | 3. To the extent possible, the Licensor waives any right to 228 | collect royalties from You for the exercise of the Licensed 229 | Rights, whether directly or through a collecting society 230 | under any voluntary or waivable statutory or compulsory 231 | licensing scheme. In all other cases the Licensor expressly 232 | reserves any right to collect such royalties, including when 233 | the Licensed Material is used other than for NonCommercial 234 | purposes. 235 | 236 | 237 | Section 3 -- License Conditions. 238 | 239 | Your exercise of the Licensed Rights is expressly made subject to the 240 | following conditions. 241 | 242 | a. Attribution. 243 | 244 | 1. If You Share the Licensed Material (including in modified 245 | form), You must: 246 | 247 | a. retain the following if it is supplied by the Licensor 248 | with the Licensed Material: 249 | 250 | i. identification of the creator(s) of the Licensed 251 | Material and any others designated to receive 252 | attribution, in any reasonable manner requested by 253 | the Licensor (including by pseudonym if 254 | designated); 255 | 256 | ii. a copyright notice; 257 | 258 | iii. a notice that refers to this Public License; 259 | 260 | iv. a notice that refers to the disclaimer of 261 | warranties; 262 | 263 | v. a URI or hyperlink to the Licensed Material to the 264 | extent reasonably practicable; 265 | 266 | b. indicate if You modified the Licensed Material and 267 | retain an indication of any previous modifications; and 268 | 269 | c. indicate the Licensed Material is licensed under this 270 | Public License, and include the text of, or the URI or 271 | hyperlink to, this Public License. 272 | 273 | 2. You may satisfy the conditions in Section 3(a)(1) in any 274 | reasonable manner based on the medium, means, and context in 275 | which You Share the Licensed Material. For example, it may be 276 | reasonable to satisfy the conditions by providing a URI or 277 | hyperlink to a resource that includes the required 278 | information. 279 | 3. If requested by the Licensor, You must remove any of the 280 | information required by Section 3(a)(1)(A) to the extent 281 | reasonably practicable. 282 | 283 | b. ShareAlike. 284 | 285 | In addition to the conditions in Section 3(a), if You Share 286 | Adapted Material You produce, the following conditions also apply. 287 | 288 | 1. The Adapter's License You apply must be a Creative Commons 289 | license with the same License Elements, this version or 290 | later, or a BY-NC-SA Compatible License. 291 | 292 | 2. You must include the text of, or the URI or hyperlink to, the 293 | Adapter's License You apply. You may satisfy this condition 294 | in any reasonable manner based on the medium, means, and 295 | context in which You Share Adapted Material. 296 | 297 | 3. You may not offer or impose any additional or different terms 298 | or conditions on, or apply any Effective Technological 299 | Measures to, Adapted Material that restrict exercise of the 300 | rights granted under the Adapter's License You apply. 301 | 302 | 303 | Section 4 -- Sui Generis Database Rights. 304 | 305 | Where the Licensed Rights include Sui Generis Database Rights that 306 | apply to Your use of the Licensed Material: 307 | 308 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 309 | to extract, reuse, reproduce, and Share all or a substantial 310 | portion of the contents of the database for NonCommercial purposes 311 | only; 312 | 313 | b. if You include all or a substantial portion of the database 314 | contents in a database in which You have Sui Generis Database 315 | Rights, then the database in which You have Sui Generis Database 316 | Rights (but not its individual contents) is Adapted Material, 317 | including for purposes of Section 3(b); and 318 | 319 | c. You must comply with the conditions in Section 3(a) if You Share 320 | all or a substantial portion of the contents of the database. 321 | 322 | For the avoidance of doubt, this Section 4 supplements and does not 323 | replace Your obligations under this Public License where the Licensed 324 | Rights include other Copyright and Similar Rights. 325 | 326 | 327 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 328 | 329 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 330 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 331 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 332 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 333 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 334 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 335 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 336 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 337 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 338 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 339 | 340 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 341 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 342 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 343 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 344 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 345 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 346 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 347 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 348 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 349 | 350 | c. The disclaimer of warranties and limitation of liability provided 351 | above shall be interpreted in a manner that, to the extent 352 | possible, most closely approximates an absolute disclaimer and 353 | waiver of all liability. 354 | 355 | 356 | Section 6 -- Term and Termination. 357 | 358 | a. This Public License applies for the term of the Copyright and 359 | Similar Rights licensed here. However, if You fail to comply with 360 | this Public License, then Your rights under this Public License 361 | terminate automatically. 362 | 363 | b. Where Your right to use the Licensed Material has terminated under 364 | Section 6(a), it reinstates: 365 | 366 | 1. automatically as of the date the violation is cured, provided 367 | it is cured within 30 days of Your discovery of the 368 | violation; or 369 | 370 | 2. upon express reinstatement by the Licensor. 371 | 372 | For the avoidance of doubt, this Section 6(b) does not affect any 373 | right the Licensor may have to seek remedies for Your violations 374 | of this Public License. 375 | 376 | c. For the avoidance of doubt, the Licensor may also offer the 377 | Licensed Material under separate terms or conditions or stop 378 | distributing the Licensed Material at any time; however, doing so 379 | will not terminate this Public License. 380 | 381 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 382 | License. 383 | 384 | 385 | Section 7 -- Other Terms and Conditions. 386 | 387 | a. The Licensor shall not be bound by any additional or different 388 | terms or conditions communicated by You unless expressly agreed. 389 | 390 | b. Any arrangements, understandings, or agreements regarding the 391 | Licensed Material not stated herein are separate from and 392 | independent of the terms and conditions of this Public License. 393 | 394 | 395 | Section 8 -- Interpretation. 396 | 397 | a. For the avoidance of doubt, this Public License does not, and 398 | shall not be interpreted to, reduce, limit, restrict, or impose 399 | conditions on any use of the Licensed Material that could lawfully 400 | be made without permission under this Public License. 401 | 402 | b. To the extent possible, if any provision of this Public License is 403 | deemed unenforceable, it shall be automatically reformed to the 404 | minimum extent necessary to make it enforceable. If the provision 405 | cannot be reformed, it shall be severed from this Public License 406 | without affecting the enforceability of the remaining terms and 407 | conditions. 408 | 409 | c. No term or condition of this Public License will be waived and no 410 | failure to comply consented to unless expressly agreed to by the 411 | Licensor. 412 | 413 | d. Nothing in this Public License constitutes or may be interpreted 414 | as a limitation upon, or waiver of, any privileges and immunities 415 | that apply to the Licensor or You, including from the legal 416 | processes of any jurisdiction or authority. 417 | 418 | ======================================================================= 419 | 420 | Creative Commons is not a party to its public licenses. 421 | Notwithstanding, Creative Commons may elect to apply one of its public 422 | licenses to material it publishes and in those instances will be 423 | considered the "Licensor." Except for the limited purpose of indicating 424 | that material is shared under a Creative Commons public license or as 425 | otherwise permitted by the Creative Commons policies published at 426 | creativecommons.org/policies, Creative Commons does not authorize the 427 | use of the trademark "Creative Commons" or any other trademark or logo 428 | of Creative Commons without its prior written consent including, 429 | without limitation, in connection with any unauthorized modifications 430 | to any of its public licenses or any other arrangements, 431 | understandings, or agreements concerning use of licensed material. For 432 | the avoidance of doubt, this paragraph does not form part of the public 433 | licenses. 434 | 435 | Creative Commons may be contacted at creativecommons.org. 436 | ✕ 437 | --------------------------------------------------------------------------------