I can’t spend too much time on a problem, or I become bored and unproductive. Sometimes, I alleviate this tendency by frequently switching from development to testing mode. Periodically, I switch temporarily to some other long-term project of mine. I don’t engage in non-software recreational activities, since I am not currently earning an income and would not be making any progress on my long term-goals.
So, I briefly turned my attention to an old wordprocessing project of mine. As I mentioned before, I am looking at building a graphical code editor on top of a wordprocessor backend. The goal of the code editor exercise is to simultaneously build and sell an interesting product while bringing my wordprocessing engine to maturity.
I am not trying to compete directly with Microsoft, although, if I were and could only muster “just” a few million dollars in annual sales, that’s still enough income to support a very comfortable lifestyle for me.
I refused to believe that current set of desktop applications put out by Microsoft defines the whole space of possible, highly useful applications. Ten times more money is being poured in the building games like Oblivion instead of new general-purpose applications, because companies don’t want to be Microsoft’s next meal, so games are where all the innovation is happening.
Text handling is likely important in many future killer applications; current applications today rely on the limited capabilities provided by MSHTML and the RTF control because building a wordprocessor is too hard.
I need advanced text-editing functionality to build the type of application that I envision with advanced natural-language processing and AI capabilities. I find existing controls too limiting, even the upcoming Avalon RichTextBox control, which will have better support for international text, accessibility, etc than I can ever hope to provide, but is not extensible enough to provide for my very specific and advanced needs. Internationalization is less important for me, since my natural language processor only works with English.
In building my text engine, I must be careful to avoid the beaten path that Microsoft and other companies have exhaustively followed in developing their various text controls and applications. By trying another angle and focusing on disruptively innovative capabilities, that are architecturally prohibitive to replicate in today’s software, I am more likely to be successful. Such techniques include employing a more functional programming style and representing text in terms of natural language elements rather than raw characters.