Home Blogs | Copyright 2017, Randy Strauss |
(Note: Jump to the end if you're interested in my patent.)
A non-technical friend asked me if I could get a recommendation that said I was often asked to innovate, and almost always delivered.
In hindsight, I don't ever remember being asked to innovate, and I always delivered. Actually, the latter is probably not true- I'll have to think about it...
As a software engineer, when new features are wanted or buggy areas need to be fixed, we look for a way to do it that’s clean, thorough and flexible. Sometimes it's obvious how to do it with known technology. Otherwise, we innovate, although rarely did I ever think if it as innovation...
FrameMaker was a desktop publishing application- a document editor. It was originally on Sun workstations, a Unix machine with its own graphics library. Then a Mac port was done. I joined in 1988 to help with the X11 version- a windowing system built by a consortium so that all Unix machines could have a common windowing system so software could be easily ported. About a year later, Windows was stable enough that we started a Windows version as well.
The original code was developed on the Sun version. They had a long piece of code- maybe 150 lines- that determined what a mouse gesture would do. Each of the other 3 ports took a copy of it and customized it for their platform. Each platform had a different kind of mouse- 1, 3 or 5-button, different modifier keys (shift, control, etc), and different standards for how the mouse was used.
It was basically a long set of "if" statements. It considered what kind of object it was over- text, graphics, an equation, a table, or the page beneath (5 contexts), and what modifier keys were held down, plus the current state of the selection - what kind of object or text was currently selected. It wasn't quite that simple, but that was most of it. Luckily, maintaining it wasn't my responsibility...
In the 90's, I needed to fix a bug in it. Usually we just fixed bugs in our own code, but the guy who usually did it was busy. I wasn't sure what was "right", so I looked at all the different versions on the other platforms. There were 4 copies of this long, ugly, code. It was difficult to change it and be certain nothing else would break. So it took a few hours to be sure the fix was correct. To me, it was bad code. It was a problem.
A while later, I needed to make another change. By that time, my brain had decided it was really a problem, so I looked at it newly. I studied it again, and this time understood better what it was supposed to do. So I organized all the different cases. With a little work, I was able to organize it into 5 tables, one for each context. It wasn't quite that simple- I had to add a little code in the beginning to determine a little more state. Then I made different commands for all the different gestures.
When I was done, I had one piece of code that worked on all platforms, plus in the code were five different tables telling how the platform assigned commands to mouse buttons when the various modifiers were held down. From then on, it was easy to add mouse gestures and understand how the code works.
No one had asked me to innovate.
Later on, after Adobe bought Frame, Adobe made an effort to increase their patents.
Adobe had lots of drawing programs. I'm not good at drawing, so mainly I stayed away from them. But I tried to use them several times. It was always a pain to figure out what mouse gestures did what.
Plus, even in our simple drawing functions in FrameMaker, we had to limit the number of things one could do with a mouse. It seemed to me like this was a problem- to both increase what one could do with the mouse as well as make it obvious.
So when they asked for patentable ideas, I worked on it, came up with a solution, and filed for a patent. As far as I know, no one ever used it...
At the time, I was in a group that was trying to make an engineer, Lance Lewis', idea for a user-interface toolkit into a cross-platform toolkit. We thought something there was patentable, too. It was his idea, but I did most of the engineering work preparing our group patent.
I have one more story about innovation at Frame.... Well, there are lots more. But one in particular comes to mind.