Ask Lemmy
A Fediverse community for open-ended, thought provoking questions
Rules: (interactive)
1) Be nice and; have fun
Doxxing, trolling, sealioning, racism, toxicity and dog-whistling are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them
2) All posts must end with a '?'
This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?
3) No spam
Please do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.
4) NSFW is okay, within reason
Just remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com.
NSFW comments should be restricted to posts tagged [NSFW].
5) This is not a support community.
It is not a place for 'how do I?', type questions.
If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email info@lemmy.world. For other questions check our partnered communities list, or use the search function.
6) No US Politics.
Please don't post about current US Politics. If you need to do this, try !politicaldiscussion@lemmy.world or !uspolitics@lemmy.world
7) No Hit-and-Run questions.
Please don't delete your post for no apparent reason. If you plan on deleting a question later, say so in the post, or if you feel that you have a good reason to remove it, message a mod beforehand. It's not fair to the ones who took their time to answer, and it's not in the spirit of the community.
8) No Bots.
Posts or comments from bots, LLM's, AIs, Neural Networks, Transformers, or Marvin the Paranoid Android are not welcome in AskLemmy. Real humans only please.
Reminder: The terms of service apply here too.
Partnered Communities:
Logo design credit goes to: tubbadu
view the rest of the comments
Many years ago I wrote a program that accepted DECWriter print jobs, parsed the escape sequences, and output them as PostScript.
We had an application that ran on an OpenVMS system. The application could only support DEC printers, so we couldn't use any modern devices. The DEC printers were no longer made so all our printers were either purchased refurbished, or Frankenstein printers one of our guys assembled from the carcasses of dead printers.
My program could be used as a print filter in a Linux LPT queue. This allowed us to replace DEC printers with any printer that could natively support PostScript and any printer that had ghostscript support.
When I first started in the job, my predecessor told me about the issue with the printers and it seemed like an interesting project.
First test was to ensure I could convert barcodes in the print jobs. The print jobs for the DEC printers sent the barcodes as SIXEL graphics. SIXEL graphics were bitmaps sent as rows of six vertical pixels.
Once I verified that could work, it was just a matter of writing the parser for all the rest of the escape sequences that controlled the formatting. That and learning how to produce the PostScript.
At the time I asked my boss if he wanted me to implement it, but he said we were going to migrate to a new system very soon, so it wasn't worth the effort.
I still thought it was an interesting project, so I kept working on it on my own.
Several years passed, and we were still using the old system. The man who maintained our printers died, which led to a problem. Without him to maintain the printers, they started failing faster than we could replace them. In a meeting to discuss how we would respond printer issue, I mentioned that I had continued working on my filter at home and I only needed a a few weeks of focused effort to get a functional print filter. This time my boss told me to proceed.
We very quickly replaced all our old DEC impact printers with modern laser printers.
We had some forms on tractor feed paper, so I converted the forms to PostScript and added that to the filter. I was also able to get it working with Zebra label printers.
I had a problem with the barcodes. My script generated perfect barcodes, but our barcode pens couldn't scan them. After looking at the barcodes that the DEC printers made and comparing them to what my filter produced, the only difference I could see was that the DEC barcodes looked like crap. Jittery dots instead of perfect, straight lines. So I modified my script to make the graphics produced look just a little bit worse, and they started working.
That print filter continued working flawlessly in production for several more years until we finally managed to migrate to the new system.