In the early 2000s I was in my mid 20s, working a dead end job as a Windows programmer, and had two very young kids who were not super good at sleeping. I had worked as what I would now call a systems programmer for the Australian patents and trade marks office for a few years in the late 1990s doing low level image manipulation code — we had a for the time quite impressive database of scanned images of patents and trademarks, and sometimes we need to do things like turn them into PDFs or import a weird made up image format from the Japanese patents office.
So when you combined those things — previous experience in a field I found interesting, a job I did not currently find interesting, and a lot of spare time very early in the morning because the kids wouldn’t sleep but my wife really did need a rest — you end up with a Michael who spent a lot of time writing image manipulation code on his own time. Even back then I was pretty into Open Source, so I released what I think was probably the first Open Source PDF generation library, as well as a series of imaging tools such as pngtools. pngtools was modeled on the libtiff tifftools which I had used extensively at work.
And then things changed. I wrote a couple of books. I got hired by Google and moved to California. The kids got a bit older and life got a bit more complicated… And pngtools just sort of sat there. Except, many Linux distributions had packaged it by then. I guess I had kind of hoped that someone else with more time or passion for the project would reach out and ask to take it over, but that simply never happened. A few years ago I felt sufficient guilt to dig out the SVN repo from backups and convert it to a git repo on github, but apart from occasionally merging a PR from some random on the internet nothing has really happened to pngtools in literally decades.
I think this is where we get to the “mental health” bit of the title — I’ve been actively contributing to Open Source for nearly 30 years, but I can’t really explain what I got in return apart from the occasional dopamine hit. I think I could argue that Google wouldn’t have hired me without my Open Source work, but that’s probably also not entirely true. They hired lots of other people with no history of Open Source contributions. I think overall my lived experience is that I would often have been better off personally not contributing my code publicly — I grow tired of people’s poor social skills and having to fight to get bugs fixed. In a world where its much easier to write non-trivial things with LLM tooling, I am genuinely unsure if its worth the effort of trying to collaborate with people who clearly do not want to collaborate with me. I am sure some of this is my fault, certainly I think I am more sensitive to rejection that your average bear probably because of ADHD, but it can’t all by my fault.
So why would I pick pngtools back up now? Well there’s a latent sense that it needs some love and that no one else is going to do it, but also those LLM tools from the previous paragraph actually make it a lot easier to rebuild state than previously. I don’t really need to deeply understand all the code in a language I haven’t written in for 20 years. I can just supervise a robot that does it. I know its fashionable to hate on the LLM development tools, but honestly that always seems to come from someone who hasn’t actually tried them and is ultimately scared for their job. I don’t think the tools replace me, they simply make me a lot more productive — just like web search did when first introduced.
I should be clear to say I see a distinction between tightly bounded problem spaces with clear definitions of correct like coding, and AI generation of art or English essays. I think those later fields are much more complicated both in terms of correctness and ethics.
And anyways, that’s how you end up with pngtools v1.0 after a mere 25 years.