# DD-SWNG-20251020-V
This README takes the place of the usual spots on the public.dillerdigital.com server.

- [Class Recordings on OneDrive](https://dillerdigital-my.sharepoint.com/:f:/g/personal/tim_dillerdigital_onmicrosoft_com/Eh74L3f0Z1hFvIul8oCvmb0BnRL9-b59aM-6J5jd1tuQ_A?e=wjcFeW)  (Access expires 7 Nov 2025)

# Fancy Math Project
- Install for editing from top level of this repo:
```
$ pip install -e .
```

# Day 1 Resources
- [Our class repository on the Diller Digital git server](https://git.dillerdigital.com/DillerDigitalStudents/DD-SWNG-20251020-V)
- [Help for SSH errors](https://docs.gitea.com/help/faq?_highlight=ssh#ssh-common-errors)
- Command to list all the files in git repository under version control:  `git ls-files`

# Day 2 Resources
- Daniel Kahneman's [Thinking, Fast and Slow](https://archive.org/details/DanielKahnemanThinkingFastAndSlow?)
- The Python [PEP8 Guide](https://peps.python.org/pep-0008/)
- The [Black](https://pypi.org/project/black/#description) Python code style checker / enforcer.
- The Mathworks' [MATLAB Style Guide](https://www.mathworks.com/matlabcentral/fileexchange/46056-matlab-style-guidelines-2-0)
- A community-maintained [Style Guide for MATLAB](https://sites.google.com/site/matlabstyleguidelines/home)
## For the C Language
  - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
  - [`cpplint`](https://github.com/cpplint/cpplint) is a style _linter_ for C that checks against the Google C++ Style Guide.
  - [LLVM Code Style Guide](https://llvm.org/docs/CodingStandards.html)
  - [`clang-tidy`](https://clang.llvm.org/extra/clang-tidy/) Can be configured to a variety of code styles.

# Day 3 Resources
- *Python Typing is for Humans*: [Unital.dev blog](https://www.unital.dev/blog/python-typing-is-for-humans/) or [LinkedIn](https://www.linkedin.com/pulse/python-typing-humans-corran-webster-u66ee)
- [*Domain Driven Design*](https://www.oreilly.com/library/view/domain-driven-design-tackling/0321125215/) (O'Reilly)
- [PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/en/stable/)
- [Sphinx AutoAPI](https://sphinx-autoapi.readthedocs.io/en/latest/)
- Find the refactoring Give It A Try in `files/convert_mass.py`

# Day 4 Resourecs
- The [Day 4 Notebook](files/Day4.ipynb) is in `files/Day4.ipynb`.
- [Arrays and Lists](https://blog.dillerdigital.com/arrays-and-lists/) from the Diller Digital Blog
- [Cython](https://cython.org/) - tool for building C extensions in Python.  Particularly good for seamlessly handing off Numpy `ndarray`s to C-array code.  Tim and Corran's former coworker Kurt Smith literally [wrote the book](https://www.oreilly.com/library/view/cython/9781491901731/) on Cython.
- [`ctypes`](https://docs.python.org/3/library/ctypes.html) - a lower level tool for extending Python with C.
- [Tim's favorite logging setup](https://github.com/timdiller/favorite_logging_setup) on Github.
- [`line_profiler`](https://kernprof.readthedocs.io/en/latest/#line-profiler-basic-usage) written by Tim and Corran's former coworker Robert Kern (hence the name `kernprof` for the command line tool).  Summary of usage:
  ```
  > pip install line_profiler
  # add `from line_profiler import profile` to module to be profiled
  # decorate functions to be profiled with `@profile`
  > kernprof -l module_to_profile.py
  Wrote profile results to 'module_to_profile.py.lprof'
  Inspect results with:
  python -m line_profiler -rmt module_to_profile.py.lprof
  > python -m line_profiler -rmt module_to_profile.py.lprof
  ```
