Futureproofing Past Visions
Jul. 12th, 2018 08:57 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I've known for a while now a clock is ticking until older "32-bit applications" will stop working after a future update of macOS. While I understand this won't happen altogether with this year's macOS 10.14 "Mojave," supposing next year will mark the end has had me looking with a little concern at the older applications I've seemed dependant on. I've already moved from Textwrangler to the "Free Mode" of BBEdit to compose these posts in plain text (just as once upon a time I moved from "BBEdit Lite" to Textwrangler), I bit the bullet and paid the fee for a new version of the picture browser Xee, and I've tried replacing an old version of Vox with VLC to play those music files I haven't made the seemingly demanding commitment of adding to my iTunes library. With those three frequently used categories taken care of, though, I began to dwell on what might seem just an occasional software amusement...
A few years ago, I learned about a program called HyperDither, which promised to convert images to "1-bit black and white" using an algorithm devised in the 1980s by Bill Atkinson, an important programmer on the original Macintosh team and the creator of Hypercard. I can suppose that to some people this might seem of minor import (I know enough history to have seen period proclamations the black and white monitor of the first Macintoshes was an inexplicable limitation and obvious failing, and Amiga users in particular might make a big deal of their Hold And Modify mode images as the first from a personal computer that could begin to match ordinary colour TV pictures), but for me the output seemed, perhaps even once more, to hold a virtue-of-necessity minimalistic charm. I managed to experience the "black and white Mac era" in a small way when my father bought an SE/30 through work he'd carry home every so often, and even when we'd made it to "low cost colour" with a family LC II old Hypercard stacks on CD-ROM kept those years close for a little longer. The patterns formed on a small scale by "Atkinson dithering," however hard to describe in words, still felt familiar and, as the program's promotion had proposed, the total result might even have seemed more appealing than other and more immediately available methods (although I've seen a comment, at least passed along through multiple sources, that this method can wash out the brightest and darkest parts of a picture, even if with some of the flatly coloured drawings I convert "washing them out" might look better to me in the end).

I suppose the most profound thing I've ever used HyperDither for was as one step in a Rube Goldberg chain of programs to make desktop pictures for System 6 (more associated with mere "desktop patterns," but I'd happened on an old extension that could do more), and displayed them not just in emulation but on an actual Macintosh Plus I'd got my hands on years ago via the old Apple users group and made a bit more useful years later via a small piece of modern hardware. Still, the thought of not being able to try out the program any more on a whim didn't appeal. I did what I could by sending a message through its programmer's contact form; to go further than that, I started searching for more information.
One thing I turned up was a "web application," which could resize its input beforehand (resizing HyperDither's output afterwards could turn those distinctive patterns into mush) even if it didn't have the program's simple but effective "contrast" and "sharpness" toggles. A web application, though, seemed that much more vulnerable to the whims of others; I have at least one computer that'll have to be left running macOS 10.13 "High Sierra" to conceivably keep running 32-bit applications, although I know from the experience of leaving leaving a previous portable running OS X 10.6 "Snow Leopard" "defiance" eventually slides into "updates won't run" to "the old web browsers just raise objections from sites," such that that computer wound up sitting unused.
The next step seemed a Python script I'd turned up early on. I'd bought a book about learning to program in that modern computer language a few years ago, although I have to admit I didn't work all the way through its graphics library examples (and had the language loaded on the Linux partition of my old black plastic MacBook, eventually making it that much less likely to be got around to). Versions of Python have turned up since then along with command-line programs I've installed via the package manager "Homebrew," however. Even so, as I read through what documentation the script did have, I figured out that among the three packages the script called on to function and speed itself up, the least painful way to install one of them seemed to be to install a different bundle, stretching a bit beyond what Homebrew offered. With that managed, I took a first stab at running the script, and ran straight into an error message.
Beyond that instant frustration, I was all too ready to suppose something had gone over my inexperienced, self-tutored head. There was still a Windows application that promised multiple dithering methods, but beyond the general unaesthetic feeling of "that last resort" I had to wonder about some of the "Wine" assistants I've sorted out over the years now returning their own 32-bit warnings (for all that I've managed to get a Windows program running that can boil pictures down to six-colour Apple II "high resolution" images). Still further searching turned up a more minimalistic implementation of Atkinson dithering also in Python, though, and when I ran it I did get some output; beyond that it felt a bit slow and didn't have any options, though, I couldn't seem to save or copy the image that had opened in Preview. In comparing the two scripts, though, I noticed that the one that hadn't worked used the term "xrange" when measuring the dimensions of an image while the one that had just used "range." Almost unwilling to suppose the solution could be that simple (and still wondering just how the original programmer had got it working), I edited the script, and all of a sudden it and all of its options were working.
It's an accomplishment of sorts, for the moment outweighing even that greater chance of continued future output. It may even be applicable elsewhere. I'm now wondering if I can sort out how to modify the script to apply the other dithering methods I've seen described along the way just to compare them, although I don't yet want to say "watch this space." One more thing I have noticed, though, is just how large the Python libraries I installed wound up, filling a few gigabytes of disk space to activate a short script where a few megabytes would have seemed extravagant on a Macintosh hard drive in the black and white era. I do have a thought or two of "weren't command-line tools supposed to be compact?"

A few years ago, I learned about a program called HyperDither, which promised to convert images to "1-bit black and white" using an algorithm devised in the 1980s by Bill Atkinson, an important programmer on the original Macintosh team and the creator of Hypercard. I can suppose that to some people this might seem of minor import (I know enough history to have seen period proclamations the black and white monitor of the first Macintoshes was an inexplicable limitation and obvious failing, and Amiga users in particular might make a big deal of their Hold And Modify mode images as the first from a personal computer that could begin to match ordinary colour TV pictures), but for me the output seemed, perhaps even once more, to hold a virtue-of-necessity minimalistic charm. I managed to experience the "black and white Mac era" in a small way when my father bought an SE/30 through work he'd carry home every so often, and even when we'd made it to "low cost colour" with a family LC II old Hypercard stacks on CD-ROM kept those years close for a little longer. The patterns formed on a small scale by "Atkinson dithering," however hard to describe in words, still felt familiar and, as the program's promotion had proposed, the total result might even have seemed more appealing than other and more immediately available methods (although I've seen a comment, at least passed along through multiple sources, that this method can wash out the brightest and darkest parts of a picture, even if with some of the flatly coloured drawings I convert "washing them out" might look better to me in the end).

I suppose the most profound thing I've ever used HyperDither for was as one step in a Rube Goldberg chain of programs to make desktop pictures for System 6 (more associated with mere "desktop patterns," but I'd happened on an old extension that could do more), and displayed them not just in emulation but on an actual Macintosh Plus I'd got my hands on years ago via the old Apple users group and made a bit more useful years later via a small piece of modern hardware. Still, the thought of not being able to try out the program any more on a whim didn't appeal. I did what I could by sending a message through its programmer's contact form; to go further than that, I started searching for more information.
One thing I turned up was a "web application," which could resize its input beforehand (resizing HyperDither's output afterwards could turn those distinctive patterns into mush) even if it didn't have the program's simple but effective "contrast" and "sharpness" toggles. A web application, though, seemed that much more vulnerable to the whims of others; I have at least one computer that'll have to be left running macOS 10.13 "High Sierra" to conceivably keep running 32-bit applications, although I know from the experience of leaving leaving a previous portable running OS X 10.6 "Snow Leopard" "defiance" eventually slides into "updates won't run" to "the old web browsers just raise objections from sites," such that that computer wound up sitting unused.
The next step seemed a Python script I'd turned up early on. I'd bought a book about learning to program in that modern computer language a few years ago, although I have to admit I didn't work all the way through its graphics library examples (and had the language loaded on the Linux partition of my old black plastic MacBook, eventually making it that much less likely to be got around to). Versions of Python have turned up since then along with command-line programs I've installed via the package manager "Homebrew," however. Even so, as I read through what documentation the script did have, I figured out that among the three packages the script called on to function and speed itself up, the least painful way to install one of them seemed to be to install a different bundle, stretching a bit beyond what Homebrew offered. With that managed, I took a first stab at running the script, and ran straight into an error message.
Beyond that instant frustration, I was all too ready to suppose something had gone over my inexperienced, self-tutored head. There was still a Windows application that promised multiple dithering methods, but beyond the general unaesthetic feeling of "that last resort" I had to wonder about some of the "Wine" assistants I've sorted out over the years now returning their own 32-bit warnings (for all that I've managed to get a Windows program running that can boil pictures down to six-colour Apple II "high resolution" images). Still further searching turned up a more minimalistic implementation of Atkinson dithering also in Python, though, and when I ran it I did get some output; beyond that it felt a bit slow and didn't have any options, though, I couldn't seem to save or copy the image that had opened in Preview. In comparing the two scripts, though, I noticed that the one that hadn't worked used the term "xrange" when measuring the dimensions of an image while the one that had just used "range." Almost unwilling to suppose the solution could be that simple (and still wondering just how the original programmer had got it working), I edited the script, and all of a sudden it and all of its options were working.
It's an accomplishment of sorts, for the moment outweighing even that greater chance of continued future output. It may even be applicable elsewhere. I'm now wondering if I can sort out how to modify the script to apply the other dithering methods I've seen described along the way just to compare them, although I don't yet want to say "watch this space." One more thing I have noticed, though, is just how large the Python libraries I installed wound up, filling a few gigabytes of disk space to activate a short script where a few megabytes would have seemed extravagant on a Macintosh hard drive in the black and white era. I do have a thought or two of "weren't command-line tools supposed to be compact?"
