Turing Test Passed Successfully
Last night I was talking to something which could be a human or a robot, I could not tell. But that’s not necessarily a good thing: not only AI became […]
Last night I was talking to something which could be a human or a robot, I could not tell. But that’s not necessarily a good thing: not only AI became […]
TL;DR Python generator expressions can be iterated over only once. I mentally mapped Python generator expressions to C# IEnumerables, which can be iterated over multiple times. In reality, Python generator […]
My analog doorbell has died, so I am on the market for a doorbell camera. I would like to avoid storing my videos in the cloud, so it rules out […]
What is dead code? Looks like it depends on who you ask. Some people think it’s unreachable code than never executes. Other people think that it’s redundant code that does […]
TL;DR use marshmallow-dataclass. Serializing JSON into dataclasses with validation proved to be unexpectedly difficult. By “validation” here I mean type checking (this must be a valid integer), range checking (this […]
This post describes more fundamental underpinnings of how copy and deepcopy interact with callable attributes. See previous post for some practical examples of unexpected behavior. Methods vs Instance Attributes Consider […]
Executive Summary Avoid using callable instance attributes that call back into the object that contains them. If you must, make the object uncopyable by overriding __copy__ and __deepcopy__ and raising […]
Python eval() receives two optional dictionaries: globals and locals. I was finally able to find at least two differences between them. First difference: global variables survive until after the eval() […]
TL;DR Use default parameters to simulate assignment in lambdas. Unlike C and C++, in Python assignment is an expression, not a statement. Python lambda can only return an expression, which […]
Invalid Exec Format They gave me a MacBook Pro at work. I built a docker image locally. I pushed it to Amazon cloud to run. I got “invalid exec format” […]