Canadian author and pythonista.

Python

Python 3 Object-oriented Programming 3rd Edition My publisher unveiled the third edition of Python 3 Object-oriented Programming today! This has been the culmination of several months of work. Editing and updating the second edition was a pleasure. It was gratifying to discover that the content has aged well. This was not the case with the first edition; I did extensive restructuring and rewriting before I was satisfied with the second.

One of many things I love about Python is how whitespace is an integral part of the language. Python was the first popular programming language designed with the idea that “code is read much more often than it is written.” Forcing authors to indent code in a maintainable fashion seemed a brilliant idea when I first encountered Python fifteen years ago. The lack of braces scattered throughout the code made for easier reading.

The venerable RSA public key encryption algorithm is very elegant. It requires a basic understanding of modular arithmetic, which may sound scary if you haven’t studied it. It reduces to taking the remainder after integer long division. The RSA Wikipedia article describes five simple steps to generate the keys. Encryption and decryption are a matter of basic exponentiation. There’s no advanced math, and it’s easy to understand their example of working with small numbers.

My wife and I both have a tendency to leave the garage door open. You’re in and out, grabbing garden tools or supplies, and at the end of the day you enter the house through the back door and forget to check the garage. Luckily, we live in rural Canada, surrounded by wonderful people, where the door could sit open for days without anything “disappearing”. But it still makes me feel nervous to discover it’s been forgotten, if only because it is a waste of heat in the winter (not to mention the chance of blowing full of snow!

I really appreciate Python’s pathlib module for managing filesystem stuff. While I don’t love the argparse module for command line parsing, I don’t think it’s worse than other available options. I usually choose it for my CLI scripts, since nothing else is good enough to overcome the inertia of using a third party library. Not many people seem to be aware that the two can very easily be combined such that argparse will return Path objects instead of strings that need to be adapted after you query them: