This page is a compilation of links I found interesting while learning programming and while solving everyday problems in project management and maintenance, and of course scientific computing. As I keep on learning this list evolves continuously :-)
How to Learn to Code - 8 Hard Truths
Software engineering
- Cognitive Biases In Software Development
- Lies We Programmers Love to Believe
- Binary thinking
- Anecdotical overconfidence
- Absolutist stances
- Recency bias
- Vanity metrics
- What scientists must know about hardware to write fast code A simplified view - but not over-simplified - on how hardware affects performance. Written with Julia in mind rather than Python, but the principles remain valid.
- Clean architecture
- The Grand Unified Theory of Software Architecture
- Software Engineering's Greatest Hits Very interesting.
- SOLID principles for software design
- Software engineering practices
- A high-velocity style of software development
Problem solving
- The mental game of Python - Raymond Hettinger - pybay 2019
- You should be reading academic computer science papers
- 7 Functional Programming Techniques Every Developer Should Know
- recursion
- structural pattern matching
- immutability
- pure functions
- higher order functions
- function composition
- lazy evaluation
Python
Python for Beginners
- Real Python: awesome tutorials on many Python subjects (not everything is free)
- Python morsels: awesome tutorials on many Python subjects (not everything is free)
- Harvard CS50’s Introduction to Programming with Python
- Learn Python: 7 of my favorite resources
- De Programmeursleerling - Pieter Spronck (in Dutch)
- Slither into Python
- Learn Python by building 5 games
- How do I start learning Python?
- Learn Python Programming
- Python cheat sheet
- Getting started with Python
- The full Python tutorial
- Python & PyGame Tutorial – Code a Duck Hunt Game
Python as a language
- What makes Python a great language?
- Python is known for being a language that’s easy to read, quick to develop in, and applicable to a wide range of scenarios
- Writing your first Python program
- How long did it take you to learn Python Wait, don’t answer that. It doesn’t matter. Ned Batchelder
- PyVideo is a great resource for finding conference talks on specific topics.
Python idioms, readability and internals
Decorators
- Practical decorators
- Useful Python decorators for Data Scientists
- Decorators, unwrapped How do they work - PyCon 2017
- Decorators and descriptors decoded - PyCon 2017
- Gang of 4 inspired decorators
- pycon 2021 TUTORIAL / Geir Arne Hjelle / Introduction to Decorators: Power UP Your Python Code
Regular expressions
- How on Earth does ^.? produce primes? interesting, entertaining, and explaining regexes
- Regular Expressions: Regexes in Python (Part 1)
- Regular Expressions: Regexes in Python (Part 2)
- Yes, It's Time to Learn Regular Expressions - PyCon 2017
- Readable Regular Expressions - PyCon 2017
- pycon 2021 TUTORIAL / Trey Hunner / Hands-On Regular Expressions in Python
Dictionaries
- The Dictionary Even Mightier - PyCon 2017
- Modern Python Dictionaries: A confluence of a dozen great ideas - PyCon 2017
- Getting the most out of Python collections
- Understanding Attributes, Dicts and Slots in Python
Exceptions
- Better Python tracebacks with Rich
- Write Unbreakable Python
- pretty-errors: Prettifies Python exception output to make it legible
- Python KeyError Exceptions and How to Handle Them
- Passing Exceptions 101 Paradigms in Error Handling - PyCon 2017
- Exceptions
- pycon 2021 TALK / Reuven M. Lerner / When is an exception not an exception? Using warnings in Python
Logging
Type annotation
- Master Python typing (type hints) with interactive online exercises!
- Type-checked Python in the real world - PyCon 2018 mypy
- Applying mypy to real world projects
- Types at the Edges in Python
- Type hints for busy programmers
- Exhaustiveness (enum) Checking with Mypy
- Type annotations
- pycon 2021 TALK / Alexander Hultnér / Intro to Pydantic, run-time type checking for your dataclasses
- pycon 2021 TALK / Luciano Ramalho / Protocol: the keystone of type hints
- pycon 2021 TALK / Maggie Moss / Gradual Typing in Practice
Iteration
- Looping Like a Pro in Python - PyCon 2017
- Tour of Python Itertools
- A tour of Python's itertools library
- Python Dictionary Iteration: Advanced Tips & Tricks
- Generators, Iterables, Iterators in Python: When and Where
- Modify Iterables While Iterating in Python
Strings
- 73 Examples to Help You Master Python's f-strings
- Python f-strings Are More Powerful Than You Might Think
- The unreasonable effectiveness of f-strings and re.VERBOSE how to construct readable and documented regular expressions.
- Pragmatic Unicode - Ned Batchelder - PyCon 2012
Context manager
Code execution
- How to run a python script
- The many ways to pass code to Python from the terminal
- pycon 2021 TALK / Graham Bleaney, the_storm/ Unexpected Execution: Wild Ways Code Execution can Occur in Python
- Python's many command-line utilities by Trey Hunner
Internals
- Boolean short-circuiting
- Cpython source code guide
- Know thy self - Methods and method binding - PyCon 2017
- Namespaces and Scope in Python
- Unpacking in Python: Beyond Parallel Assignment
- Constant folding in Python (constant expressions)
- Python behind the scenes
- Python behind the scenes #7: how Python attributes work
- Unravelling the import statement
- Episode 40: How Python Manages Memory and Creating Arrays With np.linspace
- Syntactic sugar
- Unravelling Python classes
- Python range
- Python Lambda functions
- Strict Python function parameters
- Python bytecode explained
- This Is Why Python Data Classes Are Awesome
- understanding class and instance variables
- Blog on Python internals with many interesting topics
- Python List sort(): An In-Depth Guide to Sorting Lists
- pycon 2021 TALK / Sebastiaan Zeeff / The magic of "self": How Python inserts "self" into methods
Miscellaneous
- Python Pitfalls - Expecting The Unexpected
- Weird Python "Features" That Might Catch You By Surprise
- Python quirks
- How to write Python code people actually want to use
- The Elements of Python Style
- Elegant Solutions For Everyday Python Problems - PyCon 2018
- Readability Counts - PyCon 2017 Trey Hunner
- Transforming Code into Beautiful, Idiomatic Python Raymond Hettinger
- Elegant Solutions For Everyday Python Problems Nina Zakharenko
- Craft Your Python Like Poetry Trey Hunner on line length and wrapping lines
- Python module of the week
- Python Tips and Tricks, You Haven't Already Seen - part 1
- Python Tips and Tricks, You Haven't Already Seen - part 2
- 30 Python Best Practices, Tips, And Tricks
- pythonic things
- 71 Python Code Snippets for Everyday Problems
- Clean Code Concepts Adapted for Python
- The place of the 'is' syntax in Python
- 5 Things You're Doing Wrong When Programming in Python
- 10 Python Tips and Tricks For Writing Better Code
- Unpacking in Python: Beyond Parallel Assignment
- When Python Practices Go Wrong About the use of exec() and eval(). A presentation, so, the logic isn`t always obvious, but definitely an interesting topic. Here's the corresponding video When Python Practices Go Wrong - Brandon Rhodes - code::dive 2019
- Demystifying Python’s Descriptor Protocol
- Why You Should Use More Enums In Python
- Novice to Advanced RegEx in Less-than 30 Minutes + Python
- 10 Awesome Pythonic One-Liners Explained
- Stop writing classes
- New Features in Python 3.9 You Should Know About
- Python 101 – Working with Strings
- A Guide to Python Lambda Functions
- Pythonic code review
- Python args and kwargs: Demystified
- Python Code style and pythonic idioms
- Learn something new about Python every day in less than 1 minute
- The pass Statement: How to Do Nothing in Python
- The Correct Way to Overload Functions in Python
- Singleton is a bad idea
- Organize Python code like a PRO
- Coding 102: Writing code other people can read
- sockets for dummies
Useful packages
Installing packages
- A quick-and-dirty guide on how to install packages for Python
- uv - pip killer or yet another package manager?: uv is the "pip but blazingly fast™️ because it's written in rust" and is developed by the same folks that built ruff. It is designed as a drop-in replacement for pip and pip-tools for package management. uv supports everything you'd expect from a modern Python packaging tool: editable installs, Git dependencies, URL dependencies, local dependencies, constraint files, source distributions, custom indexes, and more, all designed around drop-in compatibility with your existing tools. uv's virtual environments are standards-compliant and work interchangeably with other tools — there's no lock-in or customization required. It supports Linux, Windows, and macOS, and has been tested at-scale against the public PyPI index.
Single package/purpose links
- CPython API for asynchronous functions
- The Right Way to Run Shell Commands From Python: If you find yourself orchestrating lots of other processes in Python, then you should at least take a look at
shlibrary. (plus a lot of very useful comments on standard library ways to run OS tasks) - Whenever: Typed and DST-safe datetimes for Python, written in Rust
- tqdm: Show progress in your Python apps
- Pathlib
- safer: a safer file writer
- Python 101 – Creating Multiple Processes
- sproc: subprocesses for subhumans
- Python and PDF: A Review of Existing Tools
- Pickle’s nine flaws
- pycon 2023 Talks - Glyph: How To Keep A Secret API keys, passwords, auth tokens, cryptographic secrets… in the era of cloud-based development, we've all got a bunch of them. But where do you put them? How do you keep them safe? And how can you access them conveniently from your Python code, both in development and production, without putting them at risk?
- A cross-platform Python module for copy and paste clipboard functions
- rich: rich text and beautiful formatting in the terminal
- Awesome pattern matching (apm) for Python
- Scheduling All Kinds of Recurring Jobs with Python
- The Python pickle Module: How to Persist Objects in Python
- bidict
- Python asyncio
- stringzilla
- module itertools overview
- PDF-Extract-Kit
- ghostty embed a terminal emulator in your package, First impressions with ghostty
Package overview links
- A curated list of awesome Python frameworks, libraries, software and resources
- Python's Missing Batteries: Essential Libraries You're Missing Out On
- The 22 Most-Used Python Packages in the World
- Five Amazing Python Libraries you should be using!
- The most underrated python packages
- Python Packages: Five Real Python Favorites
Interactive Python
Notebooks
- Satyrn: A modern Jupyter client for Mac
- Jupyter Notebooks in the IDE
- Jupyter everywhere
- 8 surprising ways how to use Jupyter Notebook
- IPython and Jupyter in Depth: High productivity, interactive Python Matthias Bussonier
Python for HPC
Concepts and ideas
- Performance Python: Seven Strategies for Optimizing Your Numerical Code
- Speeding up your code
- Does it ever make sense to use more concurrent processes than processor cores? You can have as many threads as you want as long as they're doing nothing.
- Putting the “You” in CPU Curious exactly what happens when you run a program on your computer? Read this article to learn how multiprocessing works, what system calls really are, how computers manage memory with hardware interrupts, and how Linux loads executables.
- PyO3: From Python to Rust and Back Again: improving Python's performance by integrating Rust code. The conversation explores the challenges and ongoing developments in making Python and Rust work seamlessly together, highlighting the complexities involved in bridging these two languages for enhanced performance.
- When NumPy is too slow
Numpy arrays
- pycon 2023 Talks - Jodie Burchell: Vectorize using linear algebra and NumPy to make your Python code fast
- An overview of the Sparse Array Ecosystem for Python
JAX
- JAX, a high-performance numerical computation library with support for automatic differentiation.
- The PyTorch developer's guide to JAX fundamentals
Numba
- Numba
- Pycon 2023 Tutorial - Cheuk Ting Ho: Power up your work with compiling and profiling
- Understanding CPUs can help speed up Numba and NumPy code
- Bridging the CUDA C++ Ecosystem and Python Developers with Numbast
Python extensions in other languages
- High performance Python 1
- High performance Python 2
- High performance Python 3
- Python Bindings: Calling C or C++ From Python
- PyCon 22 Talk - Henry Fredrick Schreiner III: Building a binary extension
- Wrapping C++ with Cython: intro
- Implementing C++ Virtual Functions in Cython
- How vectorization speeds up your Python code Quite a few interesting ideas: - self-instrumenting a python program for performance measurements - using pypy
- Cython, Rust, and more: choosing a language for Python extensions
- Calling Rust from Python
- Introduction to Coding In Rust for Pythonistas ArjanCodes
- nanobind, a fastder pybind11
Parallelization approaches mimicking or wrapping OpenMP and MPI:
- Pymp – OpenMP-like Python Programming A really interesting concept, not as efficient as OpenMP itself (which incurs quite a bit of overhead itself), and, of course, limited to a single node. As the number of cores per node keeps increasing, pymp may be a good solution for problems that can do with a single node.
- High performance Python 4 Mpi4py, doing mpi from Python.
Other parallel processing approaches:
- Why your multiprocessing Pool is stuck: solving deadlocking issues
- Sequential Execution, Multiprocessing, and Multithreading IO-Bound Tasks in Python
- Common Issues Using Celery (And Other Task Queues)
- The Parallelism Blues: when faster code is slower
- Dask
- pycon 2021 TUTORIAL / James Bourbeau, Julia Signell / Hacking Dask: Diving Into Dask's Internals
- Visualize multi-threaded Python programs with an open source tool
The GIL
- pycon 2023 Talks - Alireza Farhidzadeh: Getting Around the GIL: Parallelizing Python for Better Performance
- Tracing the Python GIL
- Python behind the scenes #13: the GIL and its effects on Python multithreading
- Instrumenting Python GIL with eBPF
GPU computing in Python
- Accelerating Python on GPUs with nvc++ and Cython
- What Every Developer Should Know About GPU Computing
- How GPU computing works
Profiling and performance analysis
- Profiling python
- Python profiling with blackfire
- Python 3.9 StatsProfile
- Profiling Python Code
- Disassemble Your Python Code
- Counting FLOPS and other CPU counters in Python
- A Comprehensive Guide to Profiling Python Programs
- Yet Another Python Profiler, but this time thread&coroutine&greenlet aware
- 0x.Tools: X-Ray vision for Linux systems: a set of open-source utilities for analyzing application performance on Linux.
POP - Performance Optimisation and Productivity CoE
- POP-COE Learning Material / Documentation
- POP-COE Open-source toolsets (developed by POP partners and collaborators)
Timing
Memory profiling
- Memory profiler for Python
- pycon 2021 TALK / Emery Berger / Scalene: A high-performance, high-precision CPU+GPU+memory profiler for Python
- Optimizing Memory Usage in Python Applications
- Pycon 2023 Talk - Pablo Galindo Salgado: How memory profilers work
Resource monitoring
LUMI (and AMD systems in general)
-
Introduction to ROCm Profiler -AMD Profiling workshop - Day 1- Pt1
- Introduction to OmniTrace - AMD Profiling workshop - Day 1 - Pt2
- Introduction to Omniperf - AMD Profiling workshop - Day 2- Pt1
- Introduction to Roofline 1 - AMD Profiling workshop - Day 2 - Pt2
(The Pawsey Supercomputing Research Centre is located in Perth, Western Australia)
Design patterns
- Design Patterns in Python for the Untrained Eye - PyCon 2019
- Python patters
- Refactoring and Design patterns
- Pyton anti-patterns
- Coding problems
Testing
PyTest
- Getting Started Testing: pytest edition
- Pytest Fixtures: A Complete Guide to Pytest Fixtures
- A Gentle Introduction to Testing with PyTest
- Visual Testing with PyCharm and pytest - PyCon 2018
- 8 great pytest plugins
- Pytest Features, That You Need in Your (Testing) Life
- Effective Python Testing With Pytest
- Testing Python Applications with Pytest
- pycon 2021 TUTORIAL / Moshe Z / Python Unit Testing with Pytest and Mock
PyTest plugins
- A pytest plugin designed for analyzing resource usage
- 15 amazing pytest plugins and more (an episode on an interesting blog).
Other packages
- unittest’s new context methods in Python 3.11
- tox nox and invoke Break the Cycle: Three excellent Python tools to automate repetitive tasks
- Hypothesis
- Escape from auto-manual testing with Hypothesis!
- Python Testing 201 with pytest
- ward - A modern Python test framework
- How to write doctests in Python
Mocking
Property-based testing
- Property-Based Testing with hypothesis, and associated use cases
- pycon 2021 TUTORIAL / Zac Hatfield-Dodds / Introduction to Property-Based Testing
- Property-based tests for the Python standard library (and builtins)
General ideas
- Beyond Unit Tests: Taking Your Testing to the Next Level - PyCon 2018
- "WHAT IS THIS MESS?" - Writing tests for pre-existing code bases - PyCon 2018
- An Introduction To Test Driven Development
- How To Write Tests For Python
- How I’m testing in 2020
- Building Good Tests
- The Clean Architecture in Python - How to write testable and flexible code
- Document your tests
- Why you should document your tests
- ARRANGE-ACT-ASSERT: A PATTERN FOR WRITING GOOD TESTS
- There's no one right way to test your code
- Learning Python Test Automation These days, there’s a wealth of great content on Python testing. Here’s a brief reference to help you get started.
- Pycon 2023 Talk - Shai Geva: 10 Ways To Shoot Yourself In The Foot With Tests
- "It's A Bug Hunt" - Armor Plate Your Unit Tests in Cpp - Dave Steffen - CppCon 2022
Debugging
GDB
- Learn to debug code with the GNU Debugger
- GDBGUI - A browser-based frontend to gdb
- GDB Tutorial - a walkthrough with examples
- Add custom windows to GDB: Programming the TUI in Python
- All about gdb, TUI and python inside gdb:
- CppCon 2015: Greg Law "Give me 15 minutes & I'll change your view of GDB
- CppCon 2016: Greg Law “GDB - A Lot More Than You Knew
- Getting the Most Out of GDB - Mark Williamson & Greg Law - C++ on Sea 2022
- CppCon 2018: Greg Law “Debugging Linux C++”
- Cool New Stuff in Gdb 9 and Gdb 10 - Greg Law - CppCon 2021
- Cool New Stuff in GDB 9, 10 and 11 - Greg Law - ACCU 2022 -
PDB
Debugging Python binary extensions
- Debugging Python and C(++) extensions with gdb and pdb
- When C extensions crash: easier debugging for your Python application
- Debugging Python C extensions with GDB
- Debugging a Mixed Python and C Language Stack
Better interfaces
DIY debugging
- tutorial on sys.settrace
- Liran Haimovitch - Understanding Python’s Debugging Internals - PyCon 2019
- bdb - debugger framework python base debugger (standard library)
- Python Traceback (Error Message) Printing Variables
- Introspection in Python
PyStack
Logging
- Python logging tutorial
- Writing custom profilers for Python
- Do not log
- Understanding Python's logging library
- Logging like a pro
CLIs and scripting
General ideas
Click and typer
- Click
- Build AWESOME CLIs With Click in Python (ArjanCodes)
- Things I’ve learned about building CLI tools in Pythonx
- QUICK: A real quick GUI generator for click
- typer: Python library for building CLI applications Built on top of click
bash
- When laziness is efficient: Make the most of your command line
- Messing with the python shell
- Converting shell scripts to python scripts
- a Python shell environment that combines the expressiveness of shell pipelines with the power of python iterators
- iterm2 plugins written in python
Other tools
- Building a CLI for Firmware Projects using Invoke
- Questionary is a Python library for effortlessly building pretty command line interfaces
GUI
Qt
- Use PyQt's QThread to Prevent Freezing GUIs
- Learn Python GUI Development for Desktop – PySide6 and Qt Tutorial
Tkinter
- CustomTkinter UI-Library
- Create a modern user interface with the Tkinter Python library
- Python Tkinter GUI Design Using ttkbootstrap
Scientific Python
- Array Oriented Programming with Python NumPy
- Numeric and Scientific Python Packages built on Numpy
- Symbolic Maths in Python
- How to use HDF5 files in Python
- A Gentle Introduction to Serialization for Python (pickle, hdf5)
- A free course on Numpy
- Generating Stl Models with Python (CAD)
- SciPy Tutorial (2022): For Physicists, Engineers, and Mathematicians
- NumPy Tutorial (2022): For Physicists, Engineers, and Mathematicians
- SymPy Tutorial (2022): For Physicists, Engineers, and Mathematicians
Visualization
Matplotlib
- The animation tools of 3blue1brown
- Manim: A community maintained Python library for creating mathematical animations (based on the animation tools from 3blue1brown)
- matplotlib
- Effectively using matplotlib
- Matplotlib Tutorial (2022): For Physicists, Engineers, and Mathematicians
- Scientific Visualization using Python and Matplotlib
- "Cyberpunk style" for matplotlib plots
- widgets in matplotlib
Other packages
- Pycon 2023 Talk - Tadeh Hakopian: The Lost Art of Diagrams: Making Complex Ideas Easy to See with Python
- ModernGL : a python wrapper over OpenGL 3.3+
- Magnum: Lightweight and modular C++11/C++14 graphics middleware for games and data visualization
- Grammar of graphics for Pyhon (using plotnine and pandas)
- Annotated area charts with plotnine
- plotly Express
- How to build beautiful plots with Python and Seaborn
- HiPlot is a lightweight interactive visualization tool to help discover correlations and patterns in high-dimensional data
- Taichi: a programming language designed for high-performance computer graphics
- Plotnine: Grammar of Graphics for Python
- pycon 2021 TUTORIAL / Husni Almoubayyed / Effective Data Visualization (with Seaborn)
Artificial intelligence, machine learning
- How to get from high school math to cutting-edge ML/AI: a detailed 4-stage roadmap with links to the best learning resources that I’m aware of
- Deep Learning Course for Beginners
- Scikit-learn, wrapping your head around machine learning - PyCon 2019
- Applied Deep Learning for NLP Using PyTorch
- Thinking like a Panda: Everything you need to know to use pandas the right way
- Top 10 Python Packages for Machine Learning
- A series how to turn machine learning models into production-ready software solutions
- Neural Networks Explained from Scratch using Python
- Machine learning made easy withe Python
- NN template
- Object localization using PyTorch : part 1
- Object localization using PyTorch : part 2
- µTransfer: A technique for hyperparameter tuning of enormous neural networks
- Practical Quantization in PyTorch
- Natural language processing demistified
- Neural Networks: Zero to Hero
- This guide is designated to anybody with basic programming knowledge or a computer science background interested in becoming a Research Scientist with 🎯 on Deep Learning and NLP
- Harvard CS50’s Artificial Intelligence with Python – Full University Course
Data science
- pyGWalker: A Python Library for Exploratory Data Analysis with Visualization
- streamz: Build Pipelines to Manage Continuous Streams of Data
- nfstream - A flexible network data analysis framework
- Data Science Best Practices with pandas - PyCon 2019
- Xorbits: scalable Python data science, familiar & fast
- The great Python dataframe showdown, part 1: Demystifying Apache Arrow
- Python for Data Analysis, 3d Edition
- Pydantic: Pydantic provides the essential structure and validation for seamless data management.
Pandas
- From Pandas to Polars Upgrading Your Data Workflow — Matt Harrison (PyBay 2024)
- awesome polars
- pandas 2.0 and the Arrow revolution (part I)
- Speeding up your pandas code
- A free course on Python Pandas
- Tutorial: Indexing DataFrames in Pandas
- Efficient pandas Dataframes
- Speed up your slow pandas python code by 2500x...
- How to iterate over DataFrame rows (and should you?)
- Effective Pandas (Matt Harrison)
Python packaging
- packaging with setuptools (nov 2021)
- Inside the Cheeseshop: How Python Packaging Works - PyCon 2018 historical overview with thorough explanation
- Share Your Code! Python Packaging Without Complication - PyCon 2017
- A Python alternative to Docker
- The Python Packaging Ecosystem
- Python Packaging Is Good Now
- Conda: Myths and Misconceptions
- The private PyPI server powered by flexible backends
- Packaging without setup.py
- PDM - Python Development Master
- Python Packaging Made Better: An Intro to Python Wheels
- Options for packaging your Python code: Wheels, Conda, Docker, and more
- What the heck is pyproject.toml?
- 4 Things Tutorials Don't Tell You About PyPI
- How to improve Python packaging, or why fourteen tools are at least twelve too many
- Trusted Publishing; how to publish to PyPI with Github Actions
Tools
- Compile shell scripts to machine code.
- Beyond Hypermodern: Python is easy now
- pycon 2023 Talks - Al Sweigart: An Overview of the Python Code Tool Landscape 2023
- Software Development Checklist for Python Applications
- Faster Python Programs - Measure, don't Guess - PyCon 2019
- Python Tooling Makes a Project Tick
- Life Is Better Painted Black, or: How to Stop Worrying and Embrace Auto-Formatting
- Using GitHub, Travis CI, and Python to Introduce Collaborative Software Development - PyCon 2018
- What's in your pip toolbox - PyCon 2017
- How can I get tox and poetry to work together to support testing multiple versions of a Python dependency?
- Understanding Best Practice Python Tooling by Comparing Popular Project Templates
- My unpopular meaning about Black code formatter
- Python static analysis tools
- Leverage Sublime project folders to eashttps://martinheinz.dev/blog/34e your work
- Deep dive into how pyenv actually works by leveraging the shim design pattern
- Explore binaries using this full-featured Linux tool
- How to write a configuration file in python
- How to automatically set up a development machine with Ansible
- direnv -- unclutter your .profile <https://github.com/direnv/direnv?utm_source=tldrnewsletter. direnv is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
- A list of new(ish) command line tools
- A web-based math entry system (MathLex)
- Deep CMake for library authors CppCon 2019, Interesting CMake stuff by craig scott, the author of
- Professional CMake - a practical guide
- Developer essentials: How to search code using grep
Version control
git
- Git Productivity Toolkit
- Writing commit messages
- lazygit: A simple terminal UI for git commands
- Introduction to Git In 16 Minutes
- 9 useful tricks of git branch
- gitutor
- Git Commands to Live By - The cheat sheet that goes beyond Git basics
- Things You Want to Do in Git and How to Do Them
- Helpful git commands for beginners
- understanding git: commits are snapshots not diffs
- Getting The Most Out Of Git
- Git is my buddy: Effective Git as a solo developer
- A practical guide to using the git stash command
- gitlab
- git flight rules
- HUBFS · File System for GitHub
- Git for professionals: Tools & Concepts for Mastering Version Control with Git
- Create changelog from git history
- 10 Git tips we can't live without
- idiot proof git
- how to use git squash, git rebase, and git cherry-pick
- Rewriting your git history, removing files permanently - cheatsheet & guide
Other version control systems
- Pijul, a sound and fast distributed version control system based on a mathematical theory of asynchronous work.
- jj init - What if we actually could replace Git? Jujutsu might give us a real shot.
Development environment/workflow
- How to set up a perfect Python project
- How to Set Up a Python Project For Automation and Collaboration
- Hypermodern Python
-
create-python-package a wiptools 'light'
- Improving Python Dependency Management With pipx and Poetry
- Managing Python Environments
(I)DE
- The AI code editor Built to make you extraordinarily productive, Cursor is the best way to code with AI.
- I tried 10 code editors
- VS Code
- Visual Studio Code Extensions for Backend Development
- PyCharm
- Using Sublime Text for python
- C++ Coding with Neovim - Prateek Raman - CppCon 2022
- waveterm
- Zasper
CI/CD
- GitHub Actions: the full course
- Blazing fast CI with GitHub Actions, Poetry, Black and Pytest
- A beginner’s guide to CI/CD and automation on GitHub
- GitHub Features Every C++ Developer Should Know - Michael Price - CppCon 2022
Documentation
General ideas
- Rules for Writing Software Tutorials
- Write the Docs is a global community of people who care about documentation
- How documentation works, and how to make it work for your project - PyCon 2017
- How to document Python code with Sphinx interesting section about tox
- Scott Meyers' advise on writing
- Write documentation as code
- pycon 2021 TALK / Meredydd Luff / Writing Good Documentation for Developers
- pycon 2021 TALK / Paul Everitt / Static Sites with Sphinx and Markdown
- Schrijfwijzer UAntwerpen
- best practices for writing code comments
Figures
- Penrose: create beautiful diagrams just by typing notation in plain text
Mkdocs and Markdown
This tutorial by Real Python really got me going in an afternoon... The extension with autorefs is also very useful. Note that the command mkdocs gh-deploy makes publication on readthedocs superfluous!
Installation
We need the following packages to build documentation:
> python -m pip install mkdocs
> python -m pip install "mkdocstrings[python]"
> python -m pip install mkdocs-material
> python -m pip install mkdocs-autorefs
Markdown FAQ
- For ~~all~~ most of your formatting questions: The Markdown guide
- How to do comments
- Tune Your Configuration: Explore advanced configuration for MkDocs, such as adding support for search and multiple languages. Or install and include additional plugins. A good option is autorefs, which allows you to add relative links in your docstrings that work in your rendered documentation.
- LateX in markdown
- Converting reStucturedText to Markdown
Other Markdown applications
- Presentations
- a Markdown viewer/browser for your terminal: https://github.com/Textualize/frogmouth
- Markdown Code Runner: https://github.com/basnijholt/markdown-code-runner
latex
Sphinx and ReST
(imho less practical than mkdocs)
- Writing Documentation with Sphinx and reStructuredText
- Practical Sphinx - PyCon 2018
- A “How to” Guide for Sphinx + ReadTheDocs
- sphinx-autodoc-typehints
Containers
Low-level programming languages
Fortran
C++
- http://www.cplusplus.com
- http://cppreference.com
- two factions of C++
- A friendly guide to the syntax of C++ method pointers
- How Many Strings Does C++ Have?
-
Johnny's software lab very thorough site on C++ performance issues.
- SIMD Libraries in C++ - Jeff Garland - CppNow 2023
- Fast C++ by using SIMD Types with Generic Lambdas and Filters - Andrew Drakeford - CppCon 2022
- The Au C++ Units Library: Handling Physical Units Safely, Quickly, & Broadly - Chip Hogg - CppCon 2023
- Taking Static Type-Safety to the Next Level - Physical Units for Matrices - Daniel Withopf CppCon 22
- Exploration of Strongly-typed Units in C++: A Case Study from Digital Audio - Roth Michaels - CppCon 2023
- std::linalg: Linear Algebra Coming to Standard C++ - Mark Hoemmen - CppCon 2023
- HPX - A C++ Library for Parallelism and Concurrency - Hartmut Kaiser - CppCon 2022
- An Introduction to Multithreading in C++20 - Anthony Williams - CppCon 2022
- C++ Algorithmic Complexity, Data Locality, Parallelism, and Compiler Optimizations, seasoned with Some Concurrency - a deep dive into Performance: on the importance of cache-friendly code.
- C++ Performance Portability - A Decade of Lessons Learned - Christian Trott - CppCon 2022 (from the developers of kokkos)
-
Scale Transforming CUDA code for AMD gpus, an alternative to HIP.
-
C++23: An Overview of Almost All New and Updated Features - Marc Gregoire - CppCon 2023
- What’s New in C++23 - Sy Brand - CppCon 2022
-
Using Modern C++ to Eliminate Virtual Functions - Jonathan Gopel - CppCon 2022
- Lightning Talk: MP: Template Meta-Programming in C++ - Kris Jusiak - CppCon 2022
- Back to Basics: The C++ Core Guidelines - Rainer Grimm - CppCon 2022
- Lightning Talk: Best Practices Every C++ Programmer Needs to Follow - Oz Syed - CppCon 2022
- import CMake, CMake and C++20 Modules - Bill Hoffman - CppCon 2022
- C++ Lambda Idioms - Timur Doumler - CppCon 2022
- Back to Basics: Templates in C++ - Nicolai Josuttis - CppCon 2022
- Principia Mathematica - The Foundations of Arithmetic in C++ - Lisa Lippincott - CppCon 2022
- A Faster Serialization Library Based on Compile-time Reflection and C++ 20 - Yu Qi - CppCon 2022
- Exceptionally Bad: The Misuse of Exceptions in C++ & How to Do Better - Peter Muldoon - CppCon 2023
- Fast, High-Quality Pseudo-Random Numbers for Non-Cryptographers in C++ - Roth Michaels - CppCon 2022
Compilers
- CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”
- A Complete Guide to LLVM for Programming Language Creators
- Common Misconceptions about Compilers
Code modernization
- Improving performance with SIMD intrinsics in three use cases
- LLVM Optimization Remarks - Ofek Shilon - CppCon 2022
- The Most Important Optimizations to Apply in Your C++ Programs - Jan Bielak - CppCon 2022`
- CppCon 2016: Jason Turner “Practical Performance Practices"
- CppCon 2018: Jonathan Boccara “105 STL Algorithms in Less Than an Hour”
- Introduction to OpenMP - Tim Mattson (Intel) Youtube channel
Other performance-oriented programming languages
-
Julia can be considered between low-level and high-level, as it combines the performance of low-level languages with the scripting capabilities of Python.
-
mojo: The expressiveness of Python, with the performance of C
- Python vs Mojo ArjanCodes
OS stuff
Windows
- Using WSL to Build a Python Development Environment on Windows This is promising: maybe we finally have a an environment on Windows with a minimal difference from Linux an MacOSX.
Linux, Macos
- 2020: The Year of the Linux Desktop - Moving from Macbook to Linux
- How to Set Environment Variables in Linux and Mac: The Missing Manual
- a file browser for your terminal
Physics simulation
- Simulate Elastic Objects in Any Representation with NVIDIA Kaolin Library
-
Genesis is a physics platform designed for general purpose Robotics/Embodied AI/Physical AI applications. It is simultaneously multiple things:
-
A universal physics engine re-built from the ground up, capable of simulating a wide range of materials and physical phenomena.
- A lightweight, ultra-fast, pythonic, and user-friendly robotics simulation platform.
- A powerful and fast photo-realistic rendering system.
- A generative data engine that transforms user-prompted natural language description into various modalities of data.