We are doing some very interesting development work lately, although none of it is in releasable form yet. We decided with our most recent project that instead of just starting from the beginning and building one big project, we would build a series of small projects that did distinct tasks. This means we can easily test a single concept or idea long before we have to make sure it plays nice with other code.
Sometimes these projects are a one-day event. For instance, we will create a completely separate project just to make sure an animation works the way we want. In other cases the project is long-term. For the new app, we spent well over a year and a half just playing with the engine to make sure it reacts the way we want, for instance.
The latest component we are working on is something we have been playing with for a month or two now, off and on. In this case we started it as a separate project because the code uses concepts that are right on the bleeding edge of technology. This technology takes a web page and turns it into a rich text editor, a la Word or Pages.
As I mentioned, though, this stuff is bleeding edge and lots of things have not been thought through well in this world. For instance, it is painful to get the cursor position and figure out where it is relative to the screen. Why do I care? Because when typing into this kind of view I want the cursor to be on screen and for some reason no one thought to do that automatically. After spending an entire day playing around with the code and pulling out what is left of my hair, after spending a week researching the topic, I finally came up with an elegant hack that will do the job perfectly.
When this is all said and done, we should be able to take all these sample projects, move them into the primary one, clean a few things up and be ready to go.
That’s the theory anyway.