Writing

Feed Software, technology, sysadmin war stories, and more.

Wednesday, January 16, 2013

Taking liberties with a classroom's projector

I once took a technical writing class which also had a presentation component to it. That means I not only had to come up with a technical topic and write a paper on it, but I had to get up in front of a class and explain it to everyone else in an allotted amount of time.

At some point, there was a requirement added that we needed to have supplemental materials. This was basically a call for a slide deck, like (gasp) PowerPoint. This was far enough back to when the great backlash hadn't quite gotten into full swing, and so asking for someone to create that kind of thing wasn't instantly met with disgust.

Windows was the last thing I wanted to use, much less rely on, so I decided to go to some lengths and created my own slide presentation system. I built it around my dumb little workstation box running Linux. I figured a slide was basically just a glorified web page, so having Netscape (see, I told you this was a long time ago) render it should do the job.

I came up with a bunch of web pages as my slides and then I had the content done. Still, there was a problem. I didn't want to keep walking back over to the side of this classroom every time I needed to flip between slides. If we're living in the future, we should be able to flip slides without physically touching a keyboard, right?

Now I had to come up with something which would let me poke the machine remotely somehow. This was before the days of Bluetooth, and I sure wasn't going to go out and buy a specialized remote control clicker thing that probably wouldn't even work in Linux. Instead, I decided to build it from technology I already had on hand.

My transmitter was an ordinary universal infrared remote control which could be programmed to send X-10 signals. Then, my receiver was one of those X-10 miniconsole things which also has an IR receiver in front. It would take whatever signal I sent from my remote control and would put it on the power line. That then reduced the problem to one of getting the signal off the power line and into the computer.

Fortunately, there was something called a cm11a which did exactly that: it plugged into the normal AC power on one side and had a serial port on the other. I already had some dumb code I had written which would listen to it and run scripts based on things happening on the power line, so the solution became clear: run one script for "on" and another for "off". The "on" would become my "next", and "off" would be "back".

Of course, Netscape didn't just accept next and back commands. I had to come up with something else which could keep track of where I was in my slide deck. Then, it would accept signals (SIGUSR1 and SIGUSR2, I think) to push the pointer forward or backward. Every time it changed, it used the "netscape -remote" magic to signal the running browser to jump to a specific URL.

So let's review. I was holding a little TV remote controller as far as the class was concerned. I would point in the general direction of this little grey controller sitting on the other end of the classroom and push a button. A second or two later, the image on the screen behind me would change. There was a bit of unavoidable lag in the system -- X-10 isn't exactly quick.

There's just one more snag in this idea, though: the classroom machine ran Windows, and there's no way they would ever let me do anything to it. I couldn't possibly boot into Linux on it. This meant bringing my own machine to make this happen.

Unfortunately, in those days, I didn't have a laptop. I couldn't afford one. So, I wound up bringing in my dumb little minitower box instead. Yes, I hauled in a "real computer" to the classroom, along with that X-10 serial adapter, my IR receiver box, and that remote control. I also brought a power strip so that all of this stuff could be plugged in on the same circuit to minimize the chances of having the powerline signal be squashed by interference.

As for the projector, well, I just reached into the cabinet and undid the connector from the normal classroom machine and just hooked it up to mine. I managed to drop it on a resolution both it and my machine could agree on, and I was in business.

The actual talk went fine. I hadn't explained to anyone what was going on, so the first time I hit the end of a slide and just sort of aimed my little "zapper" over there and pushed a button, there was some murmuring. They eventually realized that I had rigged up something bizarre and just went with it.

Everyone else had ordinary talks. Nobody else engaged in covert rewiring of the classroom computer setup to get their presentations done.

I should mention that I hadn't tested any of my stuff with the classroom setup beforehand. It was all rigged up quickly in that short gap between the beginning of class and whenever I got to give my talk. In the event it didn't work out for whatever reason, I had brought backup: a bunch of laser-printed transparencies of my same slides. If nothing computer-related worked, it was likely I could still convince an overhead projector to do my bidding. Fortunately, it never came to that.

Did I go overboard on that one? Yeah, I think I did.