Onscreen Keyboard for Windows CE
LaunchedDeprecatedFirst programming job — integrating an onscreen keyboard into the Windows CE soft input panel, and building the version control system that kept its many targets straight.
My first programming job was at Innovation Management Group, in Chatsworth, California, and I worked there while I was still finishing a computer science degree at Cal State Northridge.
IMG built onscreen keyboards, which are the kind used by people who cannot use a physical keyboard, and by the touchscreen kiosks, and by the medical carts, and by the industrial panels that have no room for one of them. My work was to get that keyboard into Windows CE's SIP interface, which is the soft input panel that the embedded Windows devices raise up whenever a text field wants input from somebody.
That meant designing and building the user interface layer that made a desktop-era product behave like a native system component, and it had to do that on a device with a fraction of the memory, and with a different input model, and with an OS that expected the keyboard to appear, and to disappear, on its own terms.
The build problem underneath it
The more durable piece of work was the less visible one. The codebase had to produce builds for a range of platforms, and for a range of targets, and keeping all of those straight by hand was becoming the bottleneck.
So I designed and built a code management system on top of Subversion, and it managed the codebase across all of those platforms, and across all of those targets, so that a project aimed at several platforms had one coherent source of truth, rather than a set of diverging copies of itself. It was the first time that I noticed that what slows a team down is usually not the feature itself at all, but everything that sits around shipping it.
Interns and international layouts
I also supervised a team of interns who were building the international keyboard layouts for the SIP interface, and that was my first experience of directing other people's engineering work, and it was a fast education in how much of a layout is convention, rather than logic. Every locale has its own idea of where the keys go, and of what the modifiers do, and of which characters deserve a dedicated key all of their own.