korrents
Hynek Schlawack

Hynek Schlawack

@hynek-schlawack · 16 positions · On ppll ↗

Software engineer and open-source maintainer of attrs and structlog; writes about Python, software design and career growth at hynek.me.

Hynek Schlawack did not write this page.

We collected these quotes from things they published elsewhere, and every quote links to where it was said. They have no account here and have not endorsed this site. Quotes are word for word; the short line under each one is our own restatement, not their wording. Their own site. Is this you? Claim it or ask us to remove it. Or tell us what is wrong here.

Filter All topics · Newest first
  1. You can also disregard claims that virtual environments measurably affect your application's runtime performance.

    ↗Why I Still Use Python Virtual Environments in Dockerhynek.me 1st of 3 in this piece

  2. Python

    That makes Python's import behavior much more predictable and debugging import issues less of a murder mystery.

    ↗Why I Still Use Python Virtual Environments in Dockerhynek.me 2nd of 3 in this piece

  3. Python

    In that sense, the npm ecosystem with its project-directory-local-first packaging was far ahead of us, stuck in our old, lazy ways.

    ↗Why I Still Use Python Virtual Environments in Dockerhynek.me 3rd of 3 in this piece

  4. 19 months earlier
  5. Python

    Of course, Nox is a lot more powerful than tox out-of-the-box, courtesy of Python. In the end, you've got the whole standard library at your disposal!

    ↗Why I Like Noxhynek.me 1st of 2 in this piece

  6. Python

    As James Bennett astutely observed, one cool feature of Nox is that Python versions are first-class selectors for sessions - while for tox it's just a factor like any other.

    ↗Why I Like Noxhynek.me 2nd of 2 in this piece

  7. 4 months earlier
  8. Microsoft

    The rise of generative AI like GitHub Copilot doesn't change that. While you have to write less code, the importance of understanding code - and hence APIs - is growing.

    ↗How I’m a Productive Programmer With a Memory of a Fruit Flyhynek.me 1st of 2 in this piece

  9. Hot take: if you need extensions to manage your tabs, you're poorly imitating bookmarks while wasting RAM.

    ↗How I’m a Productive Programmer With a Memory of a Fruit Flyhynek.me 2nd of 2 in this piece

  10. 3 months earlier
  11. The principle Don't Mock What You Don't Own means that whenever you employ mock objects, you should use them to substitute your own objects and not third-party ones2.

    ↗“Don’t Mock What You Don’t Own” in 5 Minuteshynek.me 1st of 3 in this piece

  12. This is a business logic test and the purpose of the test is drowning in boilerplate necessary to mimic the API of an HTTP client that can change at any time. That makes the test brittle and unidiomatic.

    ↗“Don’t Mock What You Don’t Own” in 5 Minuteshynek.me 2nd of 3 in this piece

  13. Corollary: To keep your business code testable and idiomatic, avoid directly using third-party dependencies in it.

    ↗“Don’t Mock What You Don’t Own” in 5 Minuteshynek.me 3rd of 3 in this piece

  14. 7 months earlier
  15. Unfortunately, Codecov has grown very flaky. I have lost any confidence in the fact when it fails a build and my first reaction is always to restart the build and only then investigate.

    ↗How to Ditch Codecov for Python Projectshynek.me

  16. 5 months earlier
  17. If you want to customize more than one behavioral aspect of a class, code sharing via subclassing won't work. It leads to subclass explosion.

    ↗Subclassing in Python Reduxhynek.me 1st of 2 in this piece

  18. When it comes to reading clarity, properly-done composition is superior to inheritance.

    ↗Subclassing in Python Reduxhynek.me 2nd of 2 in this piece

  19. 4 months earlier
  20. In almost 20 years of professional software development, I have observed that the amount of unintentional breakage through updates outweighs the amount of intentional breakage by far.

    ↗Semantic Versioning Will Not Save Youhynek.me 1st of 3 in this piece

  21. What it does mean though, is that you can't rely on the semantic meaning of SemVer and you must treat every update as potentially breaking.

    ↗Semantic Versioning Will Not Save Youhynek.me 2nd of 3 in this piece

  22. Therefore the moment you pin the major version of a package, it usually means that you won't get any updates whatsoever once the package bumps its major version.

    ↗Semantic Versioning Will Not Save Youhynek.me 3rd of 3 in this piece