Polymath Engineer Weekly #78
Polymorphism, Continuous Integration, Queues, Python Packaging Mess, Executives, Misophonia and Creativity
Hello again.
Links of the week
What’s more interesting to me personally is that Rust is the first language I’ve used that gives this choice. Languages that don’t have generics force the developer to either write a bunch of duplicate code to get the benefits of the “static” approach, or take the performance hit caused by the “dynamic” approach. I know there are other languages that give this choice (C++ is one of them), but the way this is done in Rust is really nice.
Most software development is about changing existing code. The cost and response time for adding new features to a code base depends greatly upon the condition of that code base. A crufty code base is harder, and more expensive to modify. To keep cruft to a minimum a team needs to be able to regularly refactor the code, changing its structure to reflect changing needs and incorporate lessons the team learns from working on the product.
So what do you need? You'll need to pick what has to give whenever stuff goes bad. You'll have to pick between blocking on input (back-pressure), or dropping data on the floor (load-shedding). And that happens all the time in the real world, we just don't want to do it as developers, as if it were an admission of failure.
Bouncers in front of a club, water spillways to go around dams, the pressure mechanism that keeps you from putting more gas in a full tank, and so on. They're all there to impose a system-wide flow control to keep operations safe.
Python Packaging, One Year Later: A Look Back at 2023 in Python Packaging
The standard library is not enough [3] and you need a third-party dependency? You find some tutorial that tells you to
pip install
, butpip
will now tell you to useapt
. Andapt
may work, but it may give you an ancient version that does not match the tutorial you’re reading. Or it may not have the package. Or the Internet will tell you not to use Python packages fromapt
. So now you need to learn about venvs (which add more complexity, more things to remember; most tutorials teach activation, venvs are easy to mess up via basic operations like renaming a folder, and you may end up with a venv in git or your code in a venv). Or you need to pick one of the many one-stop-shop tools to manage things.
If you’re very senior, have you ever listened to a presentation where you could quickly guess the crux of the problem and solution in the first five minutes? But the presentation is actually 25 minutes long?
Narratives are great at educating and inspiring, which are major goals for larger audiences. But for a very experienced, targeted audience where time is expensive? Get straight to the point. If the problem doesn’t fit into one of their existing mental models, they’ll tell you.
The reason little noises drive you mad is about more than sounds
The scientific spotlight is helping to explain puzzling aspects of the disorder, such as why it can seem to come and go. Trigger sounds might be triggering only when they’re made by your spouse, or when you’re already upset. The reason, according to new research, is that misophonia is about more than just the irritating sounds. ‘The contexts of misophonia triggers may be what moderates the response to triggers, not the sound alone,’
Book of the Week
Do you have any more links our community should read? Feel free to post them on the comments.
Have a nice week. 😉
Have you read last week's post? Check the archive.