STEM (Science, Technology, Engineering, and Mathematics) is a broad field of R&D fields.
STEM combines fields for holism
STEM combines fields for allocation efficiency
STEAM includes Art & Design
Project Code and Artifact Repositories
DOI-granting repositories (“getting a citable identifier which resolves to a URL” (~like a shorturl)):
Data Hosting (see: Web Distribution):
GitHub Pages serves webpages from Git branches.
GitHub Pages serves from the
gh-pagesbranch of project repositories
GitHub Pages serves from the
masterbranch of user and organization repos
GitHub Pages is backed by a CDN
GitHub Pages get URLs like: https://wrdrd.github.io/
GitHub Pages can have URLs like: https://wrdrd.com/
ReadTheDocs can rebuild HTML, PDF, and ePub from Sphinx ReStructuredText every time a commit is made to a e.g. GitHub or BitBucket repository: https://read-the-docs.readthedocs.io/en/latest/webhooks.html
ReadTheDocs can build and serve localized versions for one or more languages: https://read-the-docs.readthedocs.io/en/latest/localization.html
ReadTheDocs can build and serve multiple versions or Version Control Systems revisions. By default, ReadTheDocs will try appending
/en/latest/, so these links all redirect to the first link
Self Directed Learning¶
[X] Goals: overbroad scope
[X] Generate: 1 ream of paper; 1 pack of pens
[o] Generate, Reduce, Clarify: Bookmarks, Zotero
[X] Reduce, Clarify: match, cluster, re-sequence sheets (2D)
[X] Products: transcribe handwritten sheets of paper as slides
[o] Products: glossary
[ ] Products: essay form
Class Central aggregates lists of Online Courses.
Coursera is a platform for Online Courses.
Jupyter and Learning¶
Jupyter Project is great for learning and education.
Jupyter Notebook supports over 42 languages other than Python.
Jupyter notebooks can be published as HTML, PDF, ePub, MOBI.
Jupyter notebooks can be published as reveal.js HTML slide presentations.
Jupyter notebooks can be published to and served directly from GitHub repos.
Jupyter notebooks can be structured into per-user, per-class, per-project Docker containers (and folders)
Jupyter notebooks can be saved to and read from Google Drive:
Jupyter notebooks are great for taking notes:
Jupyter notebooks should specify package dependencies (see: Jupyter and Reproducibility)
Jupyter and Reproducibility¶
Rule 3: Archive the Exact Versions of All External Programs Used
[ ] List required Packages and extensions
watermark: datetime stamp, package versions
version_information: Python interpreter, and Python Package versions
[ ] List instaleld Packages and extensions
[ ] List reference and other maybe supported OS
[ ] List reference and other maybe supported platforms
CPU: i386, i686, x86-64, ARMv
[ ] Generate complete machine image (Backup, Restore, Virtualization)
Machine image process:
[ ] Backup: Take snapshot
[ ] Post-process: compress, add metadata, test decompression
[ ] Archive: share/store/backup/upload/verify
Machine Imaging Tools:
clonezilla (backup and restore partitions from CD/DVD, LAN, HTTP, SSH, PXE)
bup (Git-like backups for very many and very large files)
rsync, rsnapshot, rdiff
Virtualization Machine Imaging Tools
Jupyter and TDD¶
The input/output feedback cycle of IPython and Jupyter notebooks captures the essence of Test Driven Development
Jupyter notebooks can be tested and graded with nbgrader
Jupyter notebooks can be submitted and centrally graded with nbgrader.
Sharing resources affords many challenges and opportunities
Timeshare resource exhaustion (CPU, RAM, Storage)
Principle of least privilege (“privilege separation”, Confidentiality)
JupyterHub servers authenticate users from a number of sources (local, OAuth, GitHub)