I worked at Adobe in the early days; my first job was embedding PostScript into various manufacturer's printers.<p>I love the PostScript language and still play with the PostScript interpreter every now and then. Often if I need to plot something, it's fun to try to write the code in raw PostScript.<p>It's a shame "nobody" cares about printing anymore. In the late 80s as soon as I was able to afford a 300 dpi laser printer, I ran down to the store and plunked down $2500 or so for an HP LaserWriter. I used it with TeX (this was before Adobe) and thought I was witnessing a revolution! A real, powerful, printing press in my home! I'm old enough to have leaned how to set letterpress type in high school shop class....
I remember clearly how postscript changed things for scientific work. Of course, it improved upon the daisy printers that we used for text. But the same language could also draw graphs, so it was a sort of all-in-one solution.<p>A limitation on the graph side of things was the requirement that any so-called "path" (to be drawn as a line or filled as a polygon) could hold at most 1500 elements. This limit was exceeded in a lot of work.<p>If the task was just to draw the line, the solution was simple: chop the path up into subpaths and draw each. (The transition point would be ugly due to line-ending issues, but the problem would be difficult to see on visual inspection).<p>This chopping method wasn't useful for polygons, though. So I came up with a scheme in which I examined each point with respect to it's two neighbours. If the point was within some distance of a line segment connecting the neighbours, then I omitted it. If the first pass got the number of points under 1500, I'd render them. Otherwise, I repeated the procedure, with wider tolerances. This was done in C, so it was not really too time-consuming. And it worked. The software is still in use today, many decades later.
I'm glad Warnock and Geschke didn't already have the ideas of the modern Adobe in their heads. If they had, the LaserWriter would have required a monthly cloud subscription, and if the customer cancelled, both the printer and everything they had already printed would vanish.<p>I also think that Illustrator 88 was a great improvement on its successors.
Funny, I think I might be one of the worlds foremost experts on PostScript security :)<p>I spent a lot of time researching PostScript interpreter security, and ended up finding a bunch of really interesting bugs. There are of course the regular memory corruption, type confusion, etc, bugs, but PostScript has it's own security model that's intended to stop documents you're printing from interfering with the runtime environment or using internal operators. <i>Those</i> bugs can be fascinating!<p>The TL;DR summary is that PostScript functions are basically just arrays, so to stop documents you're printing from peeking inside and altering system routines, there is a security boundary called "executeonly". The intention is to allow documents to to call routines that might do something powerful on their behalf - e.g. open a printer specification, or run `lpr` or whatever - but not let them open any file or run any command they want.<p>If you could interfere with them, you can break that expectation and get access to root-equivalent operators that let you do whatever you want. Turns out, that's really hard to get right - often you can trick them into faulting and then crawl through the error state to find references to their internals you're not supposed to have!<p>Exploiting these bugs requires some really weird PostScript, here are fun examples:<p><a href="https://www.openwall.com/lists/oss-security/2019/01/23/5" rel="nofollow">https://www.openwall.com/lists/oss-security/2019/01/23/5</a>
<a href="https://bugs.chromium.org/p/project-zero/issues/detail?id=1682" rel="nofollow">https://bugs.chromium.org/p/project-zero/issues/detail?id=16...</a><p>I found about a dozen bugs like these while working on it, fun times.
PPD files can be very handy:<p>* <a href="https://en.wikipedia.org/wiki/PostScript_Printer_Description" rel="nofollow">https://en.wikipedia.org/wiki/PostScript_Printer_Description</a><p>Sort of like 'OS-neutral printer drivers'.
Watching a LaserWriter print from a Mac for the first time after being used to dot matrix printers was mind blowing. Such a huge leap forward in print quality and speed.
I am still confused why one needs to produce a document as "program" as opposed to set of pixel to be printed. If we know the page size in advance (which we do while pressing the print button), I would expect document program rasterizes it and so "print anything" can be achieved pretty simply. Why they needed to invent a new programming language called postscript?
(1988)<p>> <i>This article was first published as "‘PostScript’ prints anything: a case history." It appeared in the May 1988 issue of IEEE Spectrum. […] The diagrams and photographs appeared in the original print version.</i><p>So the article is from 1988, except for the update at the bottom:<p>> <i>Update April 2022: While most home and office printers rely on other page description languages these days, PostScript remains the choice of graphics artists and commercial printers for its ability to accurately produce complex images. And the ubiquitous Portable Document Format (PDF) is based on PostScript.</i>
I wrote a postscript library in late 1988 for our application. Learning Postscript enough to support everything our app could generate (charts) involved boxes and boxes of paper, since the only way to debug anything was to print debugging info on paper. Sometimes the bugs made nothing print, which was hard to figure out! Still it was a fun language, and I could learn a lot by looking at Illustrator's file format (which was basically Postscript, and I think eventually became PDF). I was even able to export everything we drew into Illustrator format, which was a popular feature.<p>Postscript is probably the most unusual language I ever worked with (APL comes close) but I enjoyed working with it.
Hate to be negative, but this new site design of IEEE Spectrum is just abhorrent. It's ad-ridden and there's an infinite scrolling thing. I use reader mode, but I miss the old design. Sigh