So, this week was not an enjoyable week for developing but important in my long-term goals. I spent most of it trying to coordinate two different Command patterns into a third one. It took me a lot of effort, mainly because commands inside a text editor do a lot. And the caret (that blinking bar) is probably the hardest thing to manage when using composite commands.

I got it working late Sunday night. I now have a minimum text editor and sufficient to write a quick 150 word story. It handles spell-checking, auto-complete with longer substitutions, and everything else I set out to do. However, I'm going to give myself another week of development for a number of reasons.

Six reasons

The biggest reason I'm doing this is what I just finished. Around Tuesday, I started to cut corners on development because I couldn't even figure out how to make it work much less writing good code. I didn't bother commenting a lot and I didn't write many unit tests to prove my work. Mainly because I rewrote hunks of the system at least nine times before I figured everything out. I mostly want the week to clean up the code and remove some of the cruft left over from trying out so many things.

The second is one new feature: word splitting. Undo/redo on single-character operations. Even with a buffer of a 1,000 undo/redo commands, . The original MfGames.GtkExt version merged operations on word boundaries and I think I need that. It won't take long, I have the code, but it needs to be integrated.

Documentation is the third. I need to make sure I document this as I go, otherwise it will never get done. That includes both unit tests to show how things work, but also text to explain the overall goals and organization. I didn't do that two years ago for GtkExt and I think that was a mistake. It took me a few days to even understand what I wrote, though my larger comments did help once I remembered one concept.

Fourthly, I want to get an installer into the system. That includes learning enough of WiX for a simple install and jamming the icon into place. Both are relatively minor things, but I don't think I can honestly call it a "release" without having an installer for one platform. Also, since this is a Gtk# application, I really need to include those libraries too.

Fifthly, finish up the NuGet packages. In the process of this, I have three libraries I'm using (MfGames, MfGames.GtkExt, and MfGames.Commands). The third one is new, but I need to push these up to my MyGet site so others can build this. Minor, but something I think should be part of the release process.

There are a couple very minor quirks I want to clean up. The caret doesn't quite move to the right location when you undo a new paragraph. Also pasting puts the cursor in a strange place. These are very minor things and probably won't impact me until the editing phase, but I still want to get it finished.

Finally, I wanted to dedicate each release to an author that influenced me. The problem is, the author who's story inspired me to write this… I can't find the story or remember their name. I know the story, I remember almost everything about it, but I can't remember. I posted a Reddit request, but I haven't had any answers yet and I'm still trolling through my library to find it.

Timing

After a year and a half of doing a weekly serial (now done), I like having a schedule. So, I'm going to aim for the first week of the month for a release. On the months when I'm writing, it will be minor things like documentation and cleanup or minor features. On the coding months, it will be larger features.

We'll see how long this lasts.

Overall

I'm excited. It is finally beginning to settle into place and I'm looking forward to writing a novella in this during July. This release doesn't have anything new in it compared to other editors. It is more of getting the first steps toward something, I hope, that will be bigger and distinguish itself.

2013-06-24