The Curious Engineer

All blogs / Python

death and gravity

death.andgravity.com

PythonSoftware / engineering practice

Posts
54 from 22 Jan 2021 to 24 Jun 2026
Posting
monthly (10 in the last year)
Kind
personal blog
Feed
https://death.andgravity.com/_feed/index.xml

2026 9

  1. reader 3.26 released – discovery, exports, demo
  2. Ordered key sharding in DynamoDB
  3. DynamoDB crash course: part 3 – design patterns
  4. reader 3.24 released – help, multi-user updates
  5. reader 3.23 released – OPML, hosted reader intro
  6. Learn Python object-oriented programming with Raymond Hettinger
  7. reader 3.22 released – new web app
  8. DynamoDB crash course: part 2 – data model
  9. DynamoDB crash course: part 1 – philosophy

2025 4

  1. reader 3.20 released – we're so back
  2. Announcing asyncio-thread-runner: you can have a little async (as a treat)
  3. Inheritance over composition, sometimes
  4. Process​Thread​Pool​Executor: when I‍/‍O becomes CPU-bound

2024 5

  1. reader 3.16 released – Archived feed
  2. reader 3.15 released – Retry-After
  3. reader 3.13 released – scheduled updates
  4. reader 3.12 released – split search index
  5. This is not interview advice: a priority-expiry LRU cache in Python without heaps or trees

2023 11

  1. reader 3.10 released – storage internal API
  2. When to use classes in Python? When you repeat similar sets of functions
  3. reader 3.9 released – update hook error handling
  4. Running async code from sync code in Python
  5. reader 3.7 released – contributor docs
  6. Why you should still read the docs
  7. Announcing linesieve: an unholy blend of grep, sed, awk, and Python, born out of spite
  8. Limiting concurrency in Python asyncio: the story of async imap_unordered()
  9. yaml: while constructing a mapping found unhashable key
  10. Caching a lot of methods in Python
  11. reader 3.4 released – 5 years, 2000 commits

2022 7

  1. Has your password been pwned? Or, how I almost failed to search a 37 GB text file in under 1 millisecond (in Python)
  2. reader 3.0 released – multithreading
  3. reader 2.14 released – Twitter, read time
  4. The unreasonable effectiveness of f‍-‍strings and re.VERBOSE
  5. reader 2.11 released – metadata is tags
  6. yaml: could not determine a constructor for the tag
  7. Dealing with YAML with arbitrary tags in Python

2021 18

  1. reader 2.5 released – usage statistics
  2. Write an SQL query builder in 150 lines of Python!
  3. namedtuple in a post-dataclasses world
  4. reader 2.0 released
  5. Why I wrote my own SQL query builder (in Python)
  6. When your functions take the same arguments, consider using a class: counter-examples
  7. Python sentinel objects, type hints, and PEP 661
  8. When to use classes in Python? When your functions take the same arguments
  9. Why use an SQL query builder in the first place?
  10. SQL query builder in 150 lines of Python
  11. Using a Makefile with .PHONY-only targets? Use a run.sh script instead
  12. hashlib: object supporting the buffer API required
  13. Learn by reading code: Python standard library design decisions explained
  14. Dataclasses without type annotations
  15. Deterministic hashing of Python data objects
  16. Struggling to structure code in larger programs? Great resources a beginner might not find so easily
  17. Optimizing Advent of Code 2020 day 17
  18. Solving Advent of Code 2020 day 17 by not solving it