Coding
Python
Most of my coding projects are done in Python, so most of the following resources are geared towards Python code.
Before skimming through the list entries, read the Zen of Python, it’s dangerous to go alone! Furthermore, following the language coding conventions is always strongly recommended.
OOP
- Abstract Base Classes: how to handle abstract base classes (along with a nice tutorial on inheritance and composition)
String formatting
- Python’s String format() Cheat Sheet: a quick reference guide to string formatting
Code documentation
- numpydoc docstring specification: useful when writing properly formatted docstrings
- PEP257: official Python docstring specification
- pdoc documentation
- Basic sphinx and rst tutorial
- shields.io: all of the shields you can wish for
- Packaging Python Projects: Python’s own packaging guide
matplotlib
- SciencePlots: preset science plot styles for matplotlib (useful as inspiration!)
- Cheatsheets: official matplotlib cheatsheets for everybody!
Various
- numexpr: a fast numerical expression evaluator for NumPy (particularly useful to evaluate expressions involving arrays)
- dpath: one of the easiest ways to handle nested dictionaries, which is an essential skill e.g. to work on JSON files with Python (also check this)
Profiling
line_profiler
andkernprof
: a ready-made module to quickly profile your Python code
Bash
- Advanced bash scripting: Ruprecht-Karls-Universität Heidelberg’s 2017 bash course
- Life in a shell: a series of talks held at Warwick University on introduction to working with bash for scientific computing
LaTeX
- Kaobook template: a textbook like template, ideal for a meaty thesis
Markdown
- Markdown guide: the go-to quick reference guide for Markdown
VIM
Almost everything which gets typed up on my machine has a very high likelihood of ending up in VIM, whether it is code, text, or this resource list. Here is a small collection of tools, guides and plugins. Even after starting to use Emacs, Vim still has its place in my workflow to quickly visualize and edit files.
- Learn Vim the Smart Way: get started with VIM, its plugins and Vimscript
- Take notes in using LaTeX and Vim: a very fascinating workflow for notetaking (or LaTeX docs in general) using VIM and LaTeX
- snipMate & UltiSnip Snippets: a large collection of snippet files for various programming languages
- Vim + LaTeX snippets setup: extra snippets for LaTeX on VIM
Emacs
Emacs found its way into my toolbox, and it is quickly becoming the most used tool for… whatever requires file editing, workflow management, and so on. Most of the guides listed here are redundant, since Emacs is self-documenting!
Some of the packages I currently use are magit
, pyvenv
.
- Emacs documentation: a comprehensive, in-depth guide to Emacs
- Mastering Emacs - reading guide: a selection of articles (from a really informative website) for every Emacs user
- System Crafters’ Emacs guides: some written and video guides to Emacs basics
- Python in Emacs: Vanilla is a Powerful flavor: before cluttering your
init.el
file with all sorts of shortcuts and packages, try to master the vanilla way ofpython-mode
- Org-mode: quick start: a quick start to the org syntax and its extremely powerful features
git, gitlab and all that
- Write good commit messages: an introduction to readable, informative commit messages
- Semantic versioning: a sensible way of performing code versioning
- Keep a changelog: why and how you should keep a changelog
- auto-changelog: the quickest way to draft a changelog automatically from a git project
Miscellaneous
If it doesn’t fit in any of the previous sections, this is the place you’ll find it in.
Various
- Visualize it: a collection of physical and mathematical models, visualized in your browser
- ImageMagick’s
convert
: a powerful tool to… convert between different image formats (like nbconvert)
Tools
- nbconvert documentation: official documentation for a very useful format conversion tool for notebooks and text
Design patterns
- Design patterns: the (mostly free) handbook to design patterns in every programming language you can think of
- Python design patterns: a guide to design patterns in the Python programming language
Hugo
- Basic Hugo on Gitlab tutorial: how to publish a basic Hugo site using the PaperMod theme and Gitlab pages