April 28, 2008

New Keyboards, C# and more...

In an attempt to help my typing be a bit more orderly and less finger-across-the-keyboardy, I've adopted one of those split keyboard things at work. It's been pretty fun actually, I've stopped crossing over as much and am soft of re-learning typing.

Like many developers, I taught myself to type. When I took my keyboarding class in High School, the teacher took one look at my 80+ wpm and sent me to the computer lab, writing me off as a lost cause. My fingers were all over the place, you see. For years, I've had this private conceit that my subconscious has optimized my typing for coding and not writing , you know, more semicolon optimization than for plain old words. I'd imagine that some enterprising linguist has looked into letter frequency for languages and tried for a programmer optimized keyboard. And, yes, I've seen the happy hacking keyboard, and frogpads, and the rest, that's kind of not what I'm talking about.

Speaking of frequency, the current task in the c# program is writing a predictive text input system for the app. Why am I concentrating so much on this tech when it is usually the province of accessibility people or mobile developers. It's easy: I want to type faster. And its a fun, computer sciencey problem. I'm concentrating on basic dictionary and ui stuff right now, next will be frequency weighting, then n-gram frequency. The funny thing bout this is that the app, as it is based on the .net framework, is only 30k (48k with thew about box image) and the starting dictionary that I'm working with is 500k.

Course, I don't use them all. I've biasing out the words less than 3 characters, so that cuts down the dictionary size. At this stage, its mostly program flow and ui work, not computer science. I only started coding c# two weeks ago, so I'm still pretty obtuse about the language. If you looked at the code for the fullscreenexample, you'll have figured that I'm a rank tyro at the language. I'm surprisingly self conscious about my skillz with the language, and programming in general. It's been a long time since I coded this much, but it is very fun.

That said, C# as a language is a little weird for me, I was never a big java person, so the whole world of virtual machines feels a little cheap to me. Visual Studio and C# seem to provide a lot of functionality for not a lot of work, and so it doesn't feel like much of an achievement to have done what I've done to date.

A proper predictive text engine which would be generally usable in windows as well as in a word processor would be something a bit meatier in my mind. Anyhow, once the basic frequency rating stuff is done, I'll do a 1.0 release of the app for everyone to laugh at.

No comments: