http://plinth.org/techtalk/?p=81 Skip to content Steve's Tech Talk Software meanderings Menu and widgets Search for: [ ] [Search] Recent Posts * I'm Old, Part LXXXVIII: Debugging Techniques * I'm Old, Part LXXXVII: Just How Old Am I? * I'm Old, Part LXXXVI: Cereal Bug Fixes * I'm Old, Part LXXXV: Bug Decay * Perils of Open Source Compilers Recent Comments * Dew Drop - May 7, 2021 (#3438) - Morning Dew by Alvin Ashcraft on I'm Old, Part LXXXVIII: Debugging Techniques * Dew Drop - April 19, 2021 (#3425) - Morning Dew by Alvin Ashcraft on I'm Old, Part LXXXV: Bug Decay * Dew Drop - October 6, 2020 (#3290) | Morning Dew on Perils of Open Source Compilers * Pam Chasek on Remembering Mike Hawley * Ed Poe on Remembering Mike Hawley Archives * May 2021 * April 2021 * October 2020 * June 2020 * March 2020 * November 2019 * October 2019 * May 2019 * April 2019 * January 2019 * December 2018 * November 2018 * October 2018 * September 2018 * August 2018 * July 2018 * June 2018 * May 2018 * April 2018 * March 2018 * February 2018 * January 2018 * November 2017 * October 2017 * September 2017 * August 2017 * July 2017 * June 2017 * May 2017 * April 2017 * March 2017 * February 2017 * January 2017 * December 2016 * November 2016 * October 2016 * September 2016 * August 2016 * July 2016 * June 2016 * February 2016 Categories * Uncategorized Meta * Log in * Entries feed * Comments feed * WordPress.org I'm Old, Part XVII: Burritos and Acrobat When I worked in the printer department at Adobe, many people in our area liked to get lunch from La Costena, a small Mexican grocery store in Mountain View that had a burrito "factory" in the back. The food was cheap, delicious, and filling. You would go through the grocery store to the back where there was a small room with a buffet. A worker would walk with you along the buffet as you pointed at the items you wanted in your burrito and they would scoop them onto the tortilla. At then end, they wrapped it up, put it into a small bag and marked on it what you got. You brought it to the front of the store, paid, and went on your way. Sausage-Breakfast-Burrito The problem with La Costena was that many of the businesses in the area found out about it and the line to get a burrito was often long. Some people at Adobe suggested that the owner should put in a fax machine so they could fax in orders and pick them up at the counter and then the wait was minimal. The owner agreed and even made a form for people to use when they were ordering their food. Around 1992, Adobe was doing experiments to add fax capabilities to PostScript printers. There were several printers in our department that could send and receive faxes and more importantly, could send faxes automatically. Ross Thompson, one of the engineers in our department, decided that he wanted to make a program that could order his burrito for him. It was called, oddly enough, burrito. It ran from the command line and had one of the most florid argument syntaxes I have ever encountered. It included a macro language that let you specify burritos in terms of other burritos, and of course all of this could be embedded in a '.costenarc' file so you could make burritos based on burritos defined in your .costenarc file. To top it off, Ross embedded PostScript code to generate La Costena's fax form, complete with faithfully recreated typos and write the order on top of it before faxing it. Unless I use certain syntaxes every day, I forget them quickly. I've had this problem with regular expressions, awk, and burrito. It's frustrating. Since I ate at La Costena every three weeks or so, I had to relearn the command-line syntax every single time. Since I'm a programmer, I decided to do some work to make it easier to be lazy. I wrote a Motif-based X Windows program to run on the DECstation I used for development. The program presented a WYSIWYG version of La Costena's form, except with check boxes, pop-ups, and text fields that were all live. When you were done, the program would cobble together all the options then run burrito as a sub-process with the correct command line syntax to generate the form. Worked like a charm. I don't think I ever ran burrito from the command line again. I called my program, unsurprisingly enough, xburrito. Around that time, I got scouted for the Acrobat team, which was then code-named Carousel. One evening, I was invited to meet with Frank Bozeman, who was a friend of Joe Holt. I don't remember as much from that evening as I'd like, but Frank said I'd been described as "hot shit on a silver platter" which is a compliment, I think. Yeah, pretty sure. After some discussions between my department and theirs, I got slated to move to the Acrobat group. I was supposed to be on the team dedicated to full-text indexing and search in Acrobat 2.0, but I was pre-appropriated to work on Acrobat 1.0 as part of the Macintosh team, since Acrobat 1.0 was still in the demo release phase and there was a lot that needed to be done. I knew the transition was going to be challenging with a very steep learning curve. As an aside, I would like to say that every software job I've ever had since I left college has involved a very steep learning curve. In this case, the Acrobat was written in two distinct parts: the main engine, which was in portable-ish C, and the UI layer, which was written in a combination of C and hamstrung C++. The implementation of C++ was that which was supported by the Think C compiler, and was missing a bunch of the more esoteric parts of C++. In addition, the UI was built using an application framework shipped with the compiler called TCL or the Think Class Library. It was OK - it solved a lot of the problems of typical Macintosh application development, but it also created all kinds of new ones in the process. You can't have everything ("Where would you put it?" - Steven Wright). TCL was substantial in scope. There was a lot to learn. Before working on the main Acrobat code base, I set myself a small task to get used to TCL. I decided to port xburrito to the Macintosh. Because a page full of check boxes and such seemed very un-Macintosh like, the Mac version included a virtual tortilla and a panel of ingredients that you could drag and drop onto (or off) the tortilla. When you were done, you clicked the 'order' button and it would cobble together an order and place it on top of the same PostScript program that Ross had created and send it to your favorite printer. If it had fax, it would send it to La Costena. This program was called MacBurrito. Here is the article that ended up in rec.humor.funny about Ross' burrito program: Following is the documentation for a computer program which lives at Adobe (PostScript/fonts/Acrobat/Photoshop/Illustrator) in Mountain View, California. I got permission from the author to re-post it for him. Some background: La Costena is a Mexican restaurant local to Adobe. Everything is made to order, and the cooks follow you down a sort of burrito assembly line in order to customize your meal. Not surprisingly, the place is very popular, and there are often long lines. Mr. Thompson has thus enlisted the aid of technology to avoid wasting too much time in queue. ----------------------------------------------------------------------- From thompson@mv.us.adobe.com Wed Aug 18 07:05:38 1993 Message-Id: <9308181404.AA10840@rhythmic.mv.us.adobe.com> To: gurgle@netcom.com (Pete Gontier) Subject: Re: Burritos Date: Wed, 18 Aug 93 07:04:48 MDT Here you go. You may want to add some editorial notes for those unfortunate to live outside the Bay area. By the way, this is a real program. - Ross ----------------------------------------------------------------------- Tired of standing in line at La Costena? This file documents an automatic facility for sending a fax to La Costena that orders 1 or more burritos, quesadillas, tacos, and whatever. The command will compose the fax, and send it to your favorite PostScript fax printer, for direct transmission to La Costena, and no paper at this end will be generated. Then, when you get there, your food will be waiting. No worries. To use this, you will want to add the following lines to your .cshrc file: setenv BURRITOPRINTER = alias burrito /user/thompson/public/burrito where is dec, sun, or sparc, as appropriate. Requests to support other machine types will be greeted with enthusiasm if the following conditions are met: 1) I can get the code to compile with a minimum of effort. (I expect no difficulties, but you never know). 2) I am provided with the name of a machine on which to do the build. should be the name of a PostScript level 2 printer that supports fax and is connected to an external phone line. I use radiant, which is located in building E. You will also probably want to create a .costenarc file, to define your burrito macros in. The one in /user/thompson/.costenarc is designed to stand as an example that you can use. Feel free to copy, modify, whatever. I think the syntax should be pretty straightforward, if you understand how to describe a burrito. In keeping with long standing Unix tradition, the syntax for specifying burritos is somewhat obscure. Here is an attempt at explanation, with some examples at the end. For a better understanding, the energetic reader will attempt to thoroughly comprehend the contents of my .costenarc file. burrito [-n "name"] [-t