Notes on Linear Transformations
monades.dev
monades.dev
Of course that is because translation is not a linear transformation, but you then proceed to also not demonstrate the very common trick used to enable it (so common in fact that GPUs are designed around it).
My intention was to do a follow up post with affine transformations, but I failed to communicate that.