Friday, March 1, 2013

Solving Wrist Pain by Writing an IDE

This originally appeared on the my project website for Tiled Text, which can be found here:

Late in my 19th year I was writing the third iteration of my ongoing game engine project, when I felt the first typing induced twinge. Saw doctors, half-heartedly tried a number of remedies and some ergonomic upgrades, continued programming. Nothing phased it, the pain got worse. After a few months I decided I would have to stop programming, maybe for a year or so. That was okay: I needed to get caught up in mathematics if I was going to be very good with real-time graphics. Took time off, no improvement. Dropped out of school.

Years passed. I didn't understand compromise then and preferred the prospect of working in another field over being crippled in the one I loved; though I eventually finished a CS degree despite having no real hope of returning to software development. I became more academic in the interim. I thought a lot rather than just building things. I liked philosophy and science (and philosophy of science!) and suspected there was some mathematics out there that would be as good as software. After graduating, my project was to discover why people thought mathematics was beautiful; failing that, at least acquire some rudimentery facility with it. That went so so, made a lot of progress—but it wasn't coding. About a year in, though, while explaining to a friend why coding with the Microsoft Kinect wasn't a real solution (with existing IDE's), the kernal of the idea behind Tiled Text occurred to me.

And, like the warrior who has put killing behind him, I blew the dust off my keyboard and set to work: my wrists would hold out for a few months until I could build this thing.

The initial idea was an early form of the code generation concept (didn't understand what a formal grammar was well enough to see how it would relate; thought of making some kind of linguistic constraint description system—thankfully my dad put me off the path of re-inventing the wheel here), but it was augmented in the early days by a few epiphanies. Real, old-fashioned epiphanies: if I were religious I might have thought they were gifts. The first was on the cycling behavior—the other half of the core concept. The second gave the UI concrete form (was still thinking of building it on top of an existing text editor before this). The third mostly related to the architecture, and led to generalizing beyond just code editing.

Then there was work. And more work. I worked three days a week stocking groceries and four days a week on the project. I did this for about five months, with constant wrist pain. Then I got Type 1 diabetes. I had medical bills in addition to student loans and was barely scraping by. Then I worked for another 9 months or so, with progress slowing some.

I needed a change. I'd been thinking about moving to Boston for a while, inspired by Paul Graham's comments on it from "Cities and Ambition." And now, here I am, in Harvard Square, excited about whatever's next. I'd like to continue with Tiled Text and GIDE, but I realize that may not be possible. What I really want now is to get in an environment where I can learn from others. I've been working in relative isolation for most of the time I've been programming, but I know the only way for me to progress is working with experts. Of course that will involve typing/mousing, but: ironically, I have learned how to mitigate my wrist pain from mouse/keyboard while working on software to obviate my usage of those devices.

And, incidentally, when I would procrastinate work on Tiled Text, I would often go to math books. My studies at these times were very fruitfull and I think now that mathematics has a chance at contending with coding, and I have finally seen some glimpses of mathematical structures that should be called beautiful.