About
Me
Hi, I'm Karl Knechtel. It is nice to meet you.
I have used Python extensively, in both personal and professional contexts, since 2005. I also have prior experience with C, C++, C#, Java, Javascript (using jQuery and node.js), Scala (using the Play framework) and more.
While my professional experience has been mainly in game development, I consider myself primarily a tools developer, as well as a Python educator. I especially enjoy making tools that help make sense of complex data (binary data formats or deeply nested JSON) or help create such data from a more human-manageable form. I am a proponent of the UNIX philosophy, and design my tools for composability in elegant, highly capable systems (that I can still explain in detail).
This Page
Web page bloat has become a serious problem. I've put serious effort into maximizing how much of my site data is the actual text I'm trying to convey, while still aiming for a reasonable aesthetic (that won't strain your CPU).
My philosophy is that efficiency is generally worthwhile. Making everything half the size is equivalent to doubling capacity.
AI
It's very important to me personally that everything I post here comes out of my own thoughts, in my own words, typed with my own hands. I may occasionally use AI for research purposes, but otherwise everything you see here is my own work, except where necessary to prove a point about AI (and these cases will be clearly marked).
This is not reflective of a more general anti-AI stance (although I hold people free to choose that for themselves). I have no particular objection to the technology in principle; it's just that the point of this blog is to reflect my own opinions and demonstrate my own expertise. (Aside from that, I have found relatively little use for AI in my daily life, but I do my best to keep on top of the latest developments and advice on how to get the most value out of it.)
Yes, I use em-dashes (and ellipses…) in my writing. Deal with it. I like how they look, so I configured my system to make them easier to type. I even went back and edited my older posts (by hand, of course) to make proper use of them.
JavaScript
I conspiciously avoid JavaScript here because I simply can't find a good reason to use it. The modern web is far too presumptive about this; it's your machine, so websites should have to justify to you why they need to run code on it — you are well within your rights to refuse.
The use of JavaScript on many sites is incredibly gratuitous, often re-implementing basic functionality like submitting a form or displaying an image. I strongly recommend using a JavaScript blocking or whitelisting tool such as NoScript; it saves considerable CPU and bandwidth over the long run, and incidentally disables a lot of advertising without needing a separate ad blocker (although that's also a good idea). More and more often, blocking JavaScript leads to pages that appear totally blank, or display a simple "please enable JavaScript to continue" message. I say these sites are generally not worth your time (although I do make an exception when it's clearly for an anti-bot check). Progressive enhancement and graceful degradation are good ideas, and I have not abandoned them.
Comment sections on posts do require third-party JavaScript, provided by Giscus. This is unfortunately necessary because I am not operating my own server and thus can't make the page respond to HTML form submissions or update a database with them. If you know a similar service that works via third-party form submission and doesn't rely on serving third-party JavaScript, I'd be happy to hear about it.
CSS
I do use CSS liberally; I'm aware that Turing-complete systems can be built with CSS but I'm just trying to make a nice-looking layout. Feel free to supply your own user style, or disable it all, or whatever — I won't be offended.
Previous iterations of this blog used rather bloated (by my standards!) CSS (several layers built on top of Bootstrap) because I was too lazy to understand the defaults handed to me by Jekyll and then by Nikola. That's been fixed now. The CSS you see now is almost entirely hand-crafted.
Work
For a long time I've thought of myself as more or less retired, but that no longer suits me. I am now open to part-time, full-time or contract work. I am in Toronto, Canada (EST); I am not currently prepared to relocate, but am fine with either a remote or on-site position. Aside from software development, I would also be interested in working in technical writing, product design or training.
A traditional resume doesn't suit me well, but I can produce one if your systems require it. Feel free to contact me (per below) if my expertise seems like a good fit.
You?
If you have anything at all to tell me privately — whether that's a technical correction or pointing out a typo, a job lead, an idea about any of my projects, or anything else — please don't hesitate to reach out. I can be found at the expected GitHub username, on Hacker News, on Codidact (which I'm happy to promote to you), and a few other places. I don't use LinkedIn, Twitter/X (or its competitors), Facebook etc.
At least for now (I haven't been getting a lot of spam…) my email is available on my GitHub profile (or you can find it in my commit histories).