the full playlist is on youtube
- introducing anthony explains!
- python cli tested with pytest - (beginner to intermediate)
- python @decorators - (intermediate)
- my favorite python str method! (beginner - intermediate)
- how to make a simple github PR (beginner)
- the python @property decorator (beginner - intermediate)
- python type(x).__name__ vs x.__class__.__name__ (intermediate)
- python return annotations: NoReturn vs None (intermediate)
- what's wrong with python's blank except:? (beginner - intermediate)
- how I use selenium + html/css to make thumbnails (intermediate)
- python: raising Error without parens (intermediate)
- python's tricky
for ...: else:
statement (beginner - intermediate) - python's
pass
statement (beginner - intermediate) - shell bling strings! (beginner - intermediate)
- setting up an ubuntu focal virtual machine (beginner - intermediate)
- python executable zipapps (intermediate)
- pretty python profiling (intermediate)
- python implicit string joining (beginner - intermediate)
- postmortem debugging in python (beginner - intermediate)
- configuration management (devops) (intermediate)
- how to pronounce PyPI (beginner)
- all python argument / parameter types (beginner - intermediate)
- what is a tty? (beginner - intermediate)
- introduction to markdown (beginner)
- how do I get started in open source? (beginner)
- a flake8 plugin from scratch (intermediate)
- finding regressions with git bisect (intermediate)
- pytest's parametrize (beginner - intermediate)
- python curses "hello world" (beginner - intermediate)
- git: empty initial commit (beginner - intermediate)
- dockerfile RUN : \ && syntax (beginner)
- python variable unpackings (beginner - intermediate)
- docker: ADD «url» considered harmful? (intermediate)
- what is a shebang (#!)? (beginner - intermediate)
- what is test driven development? (beginner - intermediate)
- python single vs double quote strings! (beginner)
- git: ignoring noisy whitespace changes (beginner - intermediate)
- git: useful trick for pushing branches (beginner - intermediate)
- python github actions w/ tox and pre-commit (intermediate)
- releasing a python package to pypi (beginner - intermediate)
- virtualenv vs. venv (beginner - intermediate)
- implementing --version with importlib.metadata (intermediate)
- string formatting in python (beginner - intermediate)
- introduction to tox (beginner - intermediate)
- python argparse tutorial (beginner - intermediate)
- typing __getitem__ (python / mypy) (intermediate)
- fixing a git mistake with reflog (intermediate)
- introduction to python typing + mypy (beginner - intermediate)
- python packaging: src layout (intermediate)
- three ways to edit git commits (intermediate)
- stdin / stdout / stderr (beginner - intermediate)
- hacker mode tmux debugging (intermediate)
- regular expressions crash course (beginner - intermediate)
- web security: what is a csrf exploit? (intermediate)
- python: functools.lru_cache (beginner - intermediate)
- python __future__ "module" (beginner - intermediate)
- undoing an accidental git commit (intermediate)
- python packaging: basic setup.py and declarative metadata (intermediate)
- what is deadsnakes? (beginner - intermediate)
- getting started with programming (beginner)
- git show (+ some tips!) (beginner)
- python star imports (beginner - intermediate)
- intro to apt (debian / ubuntu) (beginner + intermediate)
- correct conditional arguments in bash (beginner - intermediate)
- using the python __import__ builtin correctly (intermediate)
- special paths: ~, ~user, ., .. (beginner)
- protip: exiting really fast! (beginner)
- python: Ellipsis (...) and typing (beginner - intermediate)
- git cherry-pick (intermediate)
- customizing the python repl (intermediate)
- what is PATH? (beginner - intermediate)
- python packaging: data files (intermediate)
- a virtualenv from nothing! (beginner - intermediate)
- tox --devenv (beginner - intermediate)
- python packaging: optional dependencies (intermediate)
- regexes: capture groups (beginner - intermediate)
- python typing: why not self? (intermediate)
- generator basics (+typing) (beginner - intermediate)
- stop using
git add .
(beginner - intermediate) - why not global pip / virtualenv? (intermediate)
- bash hash cache! (beginner - intermediate)
- git: a checked-in directory (intermediate)
- typing: exception types (intermediate)
- why you should end a file in a newline (beginner)
- git workflow: branch name collisions (intermediate)
- sort your imports! (beginner - intermediate)
- what is the underscore (_) for? (beginner)
- python curses: color (intermediate)
- semantic versioning (beginner - intermediate)
- file modes and chmod (beginner - intermediate)
- making a regex not match itself! (intermediate)
- I run 'rm -rf /' and see what happens (beginner - intermediate)
- git fetch (--prune) (beginner - intermediate)
- top 10 new things in python3.9 (beginner - intermediate)
- testing functools.lru_cache with pytest! (beginner - intermediate)
- git: commit message pro tip (beginner - intermediate)
- typing: what is Type[X]? (intermediate)
- python debugger crash course: pdb / breakpoint (beginner - intermediate)
- why pytest.mark.usefixtures? (intermediate)
- git apply and manual stashing (intermediate)
- intro to python namedtuples! (beginner - intermediate)
- namedtuple to json and other pitfalls (intermediate)
- how namedtuple works (advanced)
- why python -m pip? (beginner - intermediate)
- fixing NameError / TypeError in python type annotations (intermediate)
- why backslash in triple-quoted-strings """\ (intermediate)
- what's (wrong with) hacktoberfest? (beginner)
- pure python windows .exe (no compiler!) (intermediate)
- python dist-packages vs. site-packages (intermediate)
- testing optional python dependencies (intermediate)
- typing: why main() -˃ int (beginner - intermediate)
- debugging with dir() (+__dir__) (beginner - intermediate)
- python: pretty headers with str.center (beginner)
- don't put passwords in commands! (beginner - intermediate)
- python: comma, = assignment! (beginner - intermediate)
- python typing: re.match and Optional (intermediate)
- python: .sort() vs sorted(...) (beginner - intermediate)
- python typing: @property (beginner - intermediate)
- python: 4 ways to set namedtuple defaults (intermediate)
- what is the /opt directory? (beginner - intermediate)
- git: visualizing main line commits (intermediate)
- bash: passing string as stdin (beginner - intermediate)
- python: what is __slots__ and __dict__ (intermediate)
- why __slots__ = () (namedtuples) (intermediate)
- how do editable pip installs work? (intermediate)
- what is argv (and argc)? (beginner - intermediate)
- is python with types faster? (intermediate)
- bash: multiple lines to stdin with heredocs (beginner - intermediate)
- a python plugin system via entrypoints (intermediate)
- git diff A...B (3 dots) (beginner - intermediate)
- faster than git clone! (beginner - intermediate)
- python: len(x) vs x.__len__() (beginner - intermediate)
- python typing: Final / @final (intermediate)
- python: raw (NOT REGEX) r'strings' (beginner - intermediate)
- a "hello world" python C extension (intermediate - advanced)
- making python releases less painful with abi3 (intermediate - advanced)
- useful interview datastructures: defaultdict (beginner - intermediate)
- reset a clone with git clean! (beginner - intermediate)
- with + context managers (part1: the hard way) (intermediate - advanced)
- with + context managers (part2: the easy way) (intermediate)
- how @contextmanager works (with/contexts part 3) (advanced)
- is python's round() broken? (beginner)
- useful interview datastructures: Counter (beginner - intermediate)
- easy fake objects with python's SimpleNamespace (beginner - intermediate)
- what is a git tag? (beginner - intermediate)
- python: typing *args / **kwargs (intermediate)
- python typing: Optional is not optional! (intermediate)
- mypy's "implicit optional" (and why I disable it) (intermediate)
- customize ANY website (beginner - intermediate)
- python: more advanced breakpoint() usage (intermediate)
- what is docker and how does it work? (intermediate)
- docker run: always use --rm! (beginner - intermediate)
- what is sass vs scss? (beginner)
- repeatedly checking command output (beginner - intermediate)
- why do asset urls have hex segments? (beginner - intermediate)
- python cffi tutorial (intermediate - advanced)
- python regex: \d gotcha! (beginner - intermediate)
- customizing "command not found" (intermediate)
- why
docker build --pull
? (intermediate) - useful commands:
pstree
(beginner - intermediate) - don't use os.system! (beginner - intermediate)
- python: all about comprehensions! (beginner - intermediate)
- python: os.exec* vs subprocess (intermediate)
- python typing: @overload (intermediate)
- structural subtyping in python with Protocol! (intermediate)
- what is virtualenvwrapper + quick start (beginner - intermediate)
- github tweak: custom tab width (beginner)
- what is advent of code? (beginner)
- what is atomicity (intermediate)
- python: what is
nonlocal
(intermediate) - python typing: Literal (intermediate)
- counting in binary / 2s complement (beginner - intermediate)
- oops I typed
git git ...
again (beginner - intermediate) - python: binary search the easy way (interview tips) (intermediate)
- pytest: parametrize permutation (intermediate)
- more powerful than control-C (beginner - intermediate)
- pytest: testing exceptions (beginner - intermediate)
- what is a pager / less ? (beginner - intermediate)
- python: naming and underscores (beginner - intermediate)
- what is the bang (!) in git aliases (beginner - intermediate)
- python typing: aliases (beginner - intermediate)
- argparse: making a command wrapper (parse_known_args) (intermediate)
- bash protip: fc "fix command" (beginner - intermediate)
- python integer literal underscores! (beginner)
- what is
git -C ...
(intermediate) - bash: pushd / popd (beginner - intermediate)
- what is
cd -
/git checkout -
(beginner) - typing: Protocol + @runtime_checkable (intermediate)
- what is a singleton? (and python patterns) (intermediate - advanced)
- python: conditional context and ExitStack (intermediate)
- python deque (useful interview datastructures) (intermediate)
- images in the terminal? what is a sixel (beginner - intermediate)
- useful tools: uq (beginner - intermediate)
- git: cleaning up merged branches (beginner - intermediate)
- python: decorating a class (intermediate)
- python: class-based @decorators (intermediate - advanced)
- intro to git lfs (intermediate)
- python scoping (beginner - intermediate)
- docker: deleting files makes your image bigger! (intermediate)
- getting started with packer (intermediate)
- all about xargs ! (beginner - intermediate)
- bash "strict mode": -euo pipefail (beginner - intermediate)
- 3 ways to clear / fix the terminal (beginner)
- python is compiled? (+ disassembler) (intermediate)
- what is a boolean trap? (programming antipattern) (beginner - intermediate)
- python: str.translate (intermediate)
- python easter eggs: __future__ braces (beginner)
- the
wc
command (beginner) - debugging python segfaults with gdb (intermediate - advanced)
- interview question: 4 / 7 swap (beginner - intermediate)
- github actions vulnerability or "why bug bounties are a scam" (intermediate)
- python easter eggs: antigravity (beginner)
- python insertion-ordered dicts (beginner - intermediate)
- python @decorator stacking (intermediate)
- typing: dealing with import cycles (beginner - intermediate)
- python easter eggs: easiest hello world! (beginner)
- what is dynamic programming? (beginner - intermediate)
- unix commands: fold (beginner)
- listing only directories with
ls
(beginner) - github tip: getting perma-links (beginner)
- finding python source code and docs (beginner)
- how I sped up python's tokenize module by 25% (intermediate)
- python: why is -c faster than -m? (intermediate)
- python: {...} is faster than dict(...) (intermediate)
- showing actual file bytes with hexdump (beginner - intermediate)
- python: how do any / all work? (beginner)
- python: why str('foo') (python 2 / 3 compat) (beginner - intermediate)
- bash: /bin/[ is an executable ? (intermediate)
- the
install
command (beginner - intermediate) - 3 ways to fix an accidental git commit to main (beginner - intermediate)
- don't use time.time() for performance measurement (beginner - intermediate)
- how to search a repo using
git grep
(beginner) - the 2 modes of python's str.split (beginner)
- python: what are *splat **args? (intermediate)
- why doesn't flake8 mark this import as unused? (beginner - intermediate)
- pathlib is slow? how I improved black's caching by 40x (intermediate)
- how to make a virtualenv from cpython source (intermediate)
- enable tab completion in pdb! (beginner)
- sed command basics (beginner - intermediate)
- what pythons should I support? (beginner - intermediate)
- python: what is assert? (beginner)
- python: shlex module (beginner - intermediate)
- python: what is hashability? (intermediate)
- python: why object() in this code? (intermediate)
- intro to terraform (intermediate)
- git rebase (and git rebase -i) (intermediate)
- testing output with pytest (beginner - intermediate)
- python: exception catching and isinstance gotcha (beginner - intermediate)
- one-off 3rd party mypy types (intermediate)
- PS1, coloring, and fixing weird wrapping (beginner - intermediate)
- python match statement (PEP 634) (intermediate - advanced)
- NotImplemented vs NotImplementedError (beginner - intermediate)
- packaging python typed code (intermediate)
- interview questions: anagrams (beginner - intermediate)
- python: functools.partial (beginner - intermediate)
- speed up git in big repos with this trick (beginner)
- correct
apt-get
for ubuntu / debian in docker (intermediate) - what is podman vs docker (beginner - intermediate)
- a file even root can't delete! (chattr) (intermediate)
- python: yield from (beginner - intermediate)
- pytest: xfail vs xpass and all test statuses (beginner - intermediate)
- python easter eggs: __peg_parser__ (beginner)
- what is the XDG base directory specification? (intermediate)
- move a virtualenv! (intermediate)
- atomic file replacement (os.rename vs os.replace) (intermediate)
- floats are broken? (+3 solutions in python!) (beginner - intermediate)
- how I find standard python type signatures (beginner - intermediate)
- python curses: mouse integration (intermediate)
- the
rlwrap
command (beginner - intermediate) - can cpython be 76% faster by changing hash()? (no) (intermediate)
- what is a .pth file? (intermediate)
- nesting context managers with classes (intermediate)
- a FREE stateful cron using aws (intermediate)
- what are git submodules? (intermediate)
- programmable nintendo switch controller (intermediate)
- python typing: object vs Any (intermediate)
- python typing: NotImplemented is a bool? (intermediate)
- the
find
command (beginner - intermediate) - use the clipboard from the terminal (beginner)
- pgrep / pkill commands (beginner - intermediate)
- SUPER FAST cpython with mypyc (intermediate)
- updating a forked repository (beginner - intermediate)
- docker takes so much disk! (beginner - intermediate)
- python: traceback basics + raise from (beginner - intermediate)
- git: check in executable file (+ on windows) (beginner - intermediate)
- line buffering vs. block buffering (intermediate)
- the
comm
command! (intermediate) - man pages for git subcommands (beginner - intermediate)
- flake8: avoiding F401 in __init__.py (beginner - intermediate)
- top 10 new things in python 3.10 (beginner - intermediate)
- what is a deadletter queue? (intermediate)
- atomically replace / delete directories (intermediate - advanced)
- ☃.com and punycode / idna (beginner - intermediate)
- how to get pip for deadsnakes / docker pythons (intermediate)
- @staticmethod / @classmethod (beginner + advanced)
- date.today() is twice as slow as datetime.now().date()??? (intermediate)
- simple python dockerfile w/ flask (intermediate)
- python typing: Generator[T, S, R] (intermediate)
- python: explicit relative imports (intermediate)
- debugging mypy types (beginner - intermediate)
- what are python doctests? (beginner - intermediate)
- terminal keyboard shortcut for unicode! (beginner)
- bash: strings with
!
/ !... event not found (beginner - intermediate) - default zoom key shortcut (beginner)
- smaller / faster builds with dockerignore (beginner - intermediate)
- python: why reload() is a bad idea (beginner - intermediate)
- what is the py launcher? (intermediate)
- the
uniq
command (+ somesort
) (beginner - intermediate) - gradual typing python (and my approach) (beginner - intermediate)
- importing non-module python files (intermediate)
- the
cut
command (beginner - intermediate) - bash: special redirection (intermediate)
- python typing: TYPE_CHECKING (intermediate)
else
is good, actually (beginner - intermediate)- Fussy Fox + flake8 vulnerability (intermediate)
- setting up required github PR checks (beginner - intermediate)
- python has an optimizer? (intermediate)
- pytest: testing env variables (intermediate)
- python easter eggs: this (beginner)
- git: main vs. origin/main (beginner - intermediate)
- python warnings (beginner - intermediate)
- docker beside docker (intermediate - advanced)
- what is manylinux? (intermediate - advanced)
- pip install from git (beginner - intermediate)
- python tempfile module (beginner - intermediate)
- virtualenv: --system-site-packages (intermediate)
- python: what is repr? (beginner - intermediate)
- making an omni-executable (intermediate)
- assign vs. shallow vs. deep copy (beginner - intermediate)
- what is
source
and why? (beginner - intermediate) - mypy! this key exists I promise! (beginner - intermediate)
- python: raise SystemExit (beginner - intermediate)
- python easter eggs: barry_as_FLUFL (beginner - intermediate)
- don't name things "..._new" (beginner)
- what is "idempotent" in programming (beginner)
- interview tips: what language should I use? (beginner)
- porting code to python **ZERO** (intermediate - advanced)
- interview tips: "your story" (beginner)
- a python extension in go (advanced)
- debugging a failed docker build (intermediate)
- the most important skill I've learned for software engineering (beginner)
- "graceful exit" SIGTERM doesn't run finally / destructors ? (intermediate)
- --argument prefix matching (beginner - intermediate)
- why does id(float(1)) == id(float(2)) ??? (intermediate)
- python: what is
__main__
/__main__.py
? (beginner - intermediate) - range(len(...)) is almost always wrong in python (beginner)
- what is umask? (intermediate)
- opinion: don't bother typing tests (intermediate)
- multiprocessing: slow things first! (intermediate)
- bash shortcut: curly expansion (intermediate)
- make your own timeout with alarm(...) (intermediate)
- pretty recursive diffs! (beginner - intermediate)
- github wikis are repos! (beginner - intermediate)
- python: easy comparable classes with functools.total_ordering (intermediate)
- git without
cd
(intermediate) - why remove the python GIL? (intermediate - advanced)
- python: unicode names and why they're bad (intermediate)
- makefile basics (beginner - intermediate)
- how to ace the coding interview (intermediate)
- python try except and best practices (beginner - intermediate)
- sorting basics in python (beginner)
- multiplying str / list / tuple and pitfalls (beginner - intermediate)
- making your own custom git commands (intermediate)
- python --version --version is not a typo! (beginner)
- python parameter defaults are (mutable) globals (intermediate)
- python typing: explicit TypeAlias (PEP 613) (intermediate)
- python: what is weakref? (intermediate - advanced)
- pip: requirements vs. constraints (intermediate)
- python: NewType vs aliases (intermediate)
- quick debugging tool: python -i (beginner)
- what is the log4shell vulnerability? (beginner - intermediate)
- what are python wheels? (intermediate - advanced)
- recursively import python modules (intermediate)
- git commit as someone else? (intermediate)
- what is PROMPT_COMMAND? (+aactivator) (intermediate)
- python: what is
__file__
? (beginner - intermediate) - job management: fg / bg / ^Z, & and more! (intermediate)
- for loops are just while loops in disguise (beginner - intermediate)
- configuring git from environment vars (intermediate)
- mypy: possible cyclic definition fix (intermediate)
- git: what does "fast forward" mean? (intermediate)
- pathlib is slow! falsey is tricky! (pytest bug) (intermediate - advanced)
- don't lru_cache methods! (intermediate)
- github: give people credit! (beginner - intermediate)
- dropping old python versions (intermediate)
- useful interview data structures: heapq (intermediate)
- decorator typing (PEP 612) (intermediate - advanced)
- python: what is 0-arg raise? (beginner)
- time vs. /bin/time (beginner - intermediate)
- what is an open redirect vulnerability? (intermediate)
- how an exit(n) bug introduced 100s of lint errors (intermediate)
- hiding big noisy git diffs (intermediate)
- recovering from git mistakes w/ ORIG_HEAD (intermediate)
- the
timeout
command (beginner - intermediate) - python code formatter tutorial (intermediate - advanced)
- why did I run
cd $PWD
??? (beginner - intermediate) - my python project setup (+ all tools) (intermediate)
- python can import from zips! (intermediate)
- from imports aren't faster! (beginner - intermediate)
- what is a .so / .dll / shared object? (intermediate - advanced)
- what is inlining? and how does it make code faster? (intermediate)
- finding and fixing test pollution! (intermediate)
- how to modify a list while iterating (intermediate)
- fix flaky tests with detect-test-pollution! (intermediate)
- a python curses wordle clone from scratch! (intermediate - advanced)
- why does
cd --
go to ~ ? (intermediate) - the
split
command! (beginner - intermediate) - don't run
python my/script.py
! (beginner - intermediate) - what's that unicode character‽ (beginner - intermediate)
- what is the
shred
command? (beginner - intermediate) - getting a python stacktrace from gdb! (intermediate - advanced)
- the fastest python startup with
python -S
(intermediate) - what is immutability? (beginner - intermediate)
- what is rpath? (+relocatability) (intermediate - advanced)
pip install pkg❮1.999
? (intermediate)- 10 protips I wish I knew sooner as a software dev (beginner)
- embedding images in github (beginner - intermediate)
- how I sped up python by 20ms (intermediate)
- typing Self (PEP 673) (intermediate)
- you don't need .git! (beginner)
- I don't need
__init__.py
? PEP 420 and namespace packages (intermediate) - repr(...) doesn't work the way you expect (intermediate - advanced)
- DVD screensaver in python curses (intermediate)
- double underscored names are NOT "more private" (beginner - intermediate)
- FizzBuzz... but in sqlite? (intermediate)
- "z3" is actual magic (intermediate)
- bash quoting is really not that difficult! (beginner - intermediate)
- I made pip startup 25% faster (intermediate)
- how to use python backports + setup.py (intermediate)
- setting up an ubuntu jammy (22.04) development machine (beginner)
- python Generics (intermediate)
- babi+ast helped me not break sentry! (intermediate)
- python comprehensions leak scope again (intermediate)
- python variadic generics (PEP 646) (intermediate - advanced)
- top 10 new things in python 3.11 (beginner - advanced)
- assert_never / assert_type **CORRECTION** (intermediate)
- a git workflow for *only my branches* (intermediate)
- regex lookahead / lookbehind (intermediate)
- are your python tests even running? (intermediate)
- python TypeGuard (PEP 647) (intermediate)
- how I fixed a 9GB memory leak in cargo (rust) (intermediate)
- dealing with merge conflicts (beginner - intermediate)
- what is an --orphan git branch? (intermediate)
- narrow python? len('🙃') == 2??? (intermediate)
- what is gbp? (intermediate - advanced)
- argparse: boolean option pitfall (beginner - intermediate)
- cd is not an executable (beginner)
- what is a universal2 wheel? (intermediate)
- docker: fast CI rebuilds with --cache-from (intermediate)
- debugging a real issue and googling (beginner - intermediate)
- regex backreferences (intermediate)
- why I banned python's assertRaises (intermediate)
- safer github personal access tokens (intermediate)
- bash strict mode gotcha (intermediate)
- javascript sucks at unicode (intermediate)
- pip freezing (==) isn't safe (intermediate)
- python regex dynamic replacements (intermediate)
- how I made my import sorter 7x faster (intermediate)
- what release was this fixed? (workflow) (intermediate)
- safely stealing github secrets with cryptography (intermediate)
- how I sped up flake8 by 20% (intermediate)
- github's semi-secret by-id apis (intermediate)
- what is a natural sort? (beginner - intermediate)
- relocatable macos binaries (advanced)
- what is nullcontext? (conditional contexts, pytest) (intermediate)
- why do I use azure pipelines instead of github actions? (intermediate)
- how is list append possibly O(1)? (beginner - intermediate)
- what is musllinux (PEP 656) (intermediate)
- easy try rust as a python dev (intermediate)
- why can't I signal a MagicMock() ? (intermediate)
- why does python think -1**0 is -1 ? (intermediate)
- how do from imports keep their globals? (intermediate)
- python int DoS vulnerability (CVE 2020-10735) (beginner - intermediate)
- docker multi-arch images (intermediate)
- python: don't use urlparse! (beginner - intermediate)
- why does python report macos 10.16 ??? (intermediate)
- the docker registry api (advanced)
- urllib3[secure]'s clever deprecation trick (intermediate)
- functools.wraps for classes (intermediate)
- avoiding shell injection in github actions (intermediate)
- what is coverage? (intermediate)
- don't make images of code / text! (beginner)
- what is "short circuiting"? (beginner - intermediate)
- what is the "unraisable" hook (intermediate)
- how does swapping work in python? (beginner - intermediate)
- hiding your email on github (beginner)
- python warnings defaults suck (intermediate)
- pytest: everything you need to know about fixtures (intermediate)
- python os / platform-specific deps (PEP 508) (intermediate)
- I don't use pytest-cov (intermediate)
- RegCPython: a 10% faster python for free? (intermediate - advanced)
- avoid notification spam with draft PRs! (beginner)
- multiprocessing: fork() vs. spawn() (intermediate)
- this clever hack let me kill py (intermediate)
- do this first before opening an issue (beginner)
- securing python with audit hooks (PEP 578) (intermediate)
- python sucks at copy-on-write (and one fix!) (intermediate)
- git is just a key value store? (advanced)
- refcount ONE BILLION? (immortal objects, PEP 683) (advanced)
- partial git commits (intermediate)
- sqlite is my favorite database (beginner - intermediate)
- virtualenv isn't reproducible! (by default) (intermediate)
- --extra-index-url is unsafe! (intermediate)
- docker: multi-stage builds (intermediate)
- git: the several ways to "--sign" (intermediate)
- why I use the colon (:) command (intermediate)
- how should I organize my project? (beginner)
- don't git clone over https! (beginner)
- don't use cat! (intermediate)
- module level __getattr__ (intermediate)
- why are some things shell builtins? (intermediate)
- python: zip and unzip (intermediate)
- I've moved off of azure pipelines for CI (intermediate)
- swapping without a third variable (intermediate)
- when should I pin deps: never and always! (intermediate)
- make a github commit using only the api! (intermediate)
- a simpler
try
/except
(and why maybe shouldn't) (beginner - intermediate) - you're probably doing case-insensitive wrong (intermediate)
- getting started with pytest (beginner - intermediate)
- python descriptors! (advanced)
- don't use short options in scripts (beginner - intermediate)
- how to escape this VERY MEAN prank (beginner)
- how do virtualenvs actually work (advanced)
- python's optimization mode is mostly useless (intermediate)
- merge queues (intermediate)
- all string syntaxes (beginner)
- my first rust open source PR (beginner - intermediate)
- tuples! (and their syntax quirks) (beginner)
- how I use git blame (beginner - intermediate)
- positional / named only without
*
or/
? (intermediate) - why git's --intent-to-add ? (intermediate)
- rerunning github checks (beginner - intermediate)
- shell aliases and bypassing them? (beginner - intermediate)
- how I made pre-commit's github actions 3x faster (intermediate)
- don't use localhost (intermediate)
- what is a "canary" deploy? (beginner - intermediate)
- avoiding noisy git matches (beginner - intermediate)
- docker pull by sha256 digest (advanced)
- weird python identity quirk? (intermediate)
- when
git add .
doesn't work (intermediate) - I made every sentry page 300ms faster (intermediate)
- docker: don't mount files! (mount dirs instead) (intermediate)
- you can't always trust argv[0] (intermediate)
- shell: use this instead of
cd
(intermediate) - docker: secrets at build time! (intermediate)
- every Dockerfile should have this line! (intermediate)
- python's "soft" keywords (intermediate)
- shell vs environment variables (and env, export, etc.) (intermediate)
- python 3.12 release highlights (beginner - advanced)
- how does .exe magic work? (PATHEXT) (intermediate)
- python is removing the GIL! (PEP 703) (advanced)
- tuple syntax doesn't have parens (beginner - intermediate)
- what is
Symbol
in js (intermediate) - debugging a sentry test pollution! (intermediate)
- stopping xargs early (intermediate)
- docker: connecting to localhost outside the container (intermediate)
- the system design interview (intermediate - advanced)
- don't delete from pypi! (yank instead) (intermediate)
- git: --first-parent (intermediate)
- I don't use backslashes (with one exception) (beginner - intermediate)
- what is a BOM (byte-order-marker) (intermediate)
- NEW generic / alias syntax for python 3.12 (PEP 695) (intermediate)
- new 3.12 f-strings syntax! (intermediate)
- pesky reDOS and python 3.11 (intermediate)
- prefer tuples to lists! (intermediate)
- git: inline diffs with --word-diff! (intermediate)
- ONE TERABYTE of RAM saved with a single line of code (advanced)
- using memray to debug (and fix) a memory leak in krb5! (advanced)
- py-spy saved our python 3.11 rollout (intermediate)
- using git bisect to find a bug in nodejs (intermediate)
- am I vulnerable to black's CVE? (2024-21503) (intermediate)
- training a custom object detection model from scratch (yolov8) (intermediate)
- adding test == others fail??? (intermediate)
- typing decorators sucks! here's an easier way (intermediate)
- typing the untype-able with mypy plugins (advanced)
x: float = False
is a valid annotation??? (intermediate)- PEP 696 is a huge quality-of-life improvement (intermediate)
- how do I make an empty generator? (intermediate)
- faster git recloning* (intermediate)
- oops I'm the pyuwsgi maintainer now (intermediate)
- debugging and fixing pyuwsgi in python 3.12 (advanced)
- python 3.13 release highlights
- stop using manual cloud creds! (oidc)
- stop making giant changesets!
- debugging flaky cascading failure after upgrading pytest!
- how does python's module
__getattr__
actually work? - python warnings got way better in 3.12!
- supercharging coverage with sys.monitoring (PEP 669)