# 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 ``` # Day 5 Resources - [5 Worlds](https://www.joelonsoftware.com/2002/05/06/five-worlds/) from Joel Spolsky's blog.