After five weeks, I finally got Author Intrusion to a stopping point enough to make its first release. This is version 0.1.0 and is dedicated to James White since his story, Fast Trip, is actually what inspired me to create AI in the first place.
This release is neither pretty nor smooth. It only has five menu items (all hard-coded of course), limited keyboard shortcuts, and configuration is done by editing the XML file and reloading (which it also doesn't support).
The important part is that it works and I think it is stable enough to write a novella with. So, in the next few weeks, I'm going to write long piece with this and figure out what needs to be done. Along the way, I'm going to figure out what really doesn't work. The ones I cannot live without, I'll fix for next month, otherwise I'll start getting them over time.
The biggest question I had was my decision to call this a release. In the end, it came down to building up a rhythm and also accountability. I've been working on Author Intrusion for three years now and never got anywhere. I would get to a certain point and just stop to work on other things. If I put it out as a release, I have something out there to help me focus on its development and still get some writing done.
The other reason is that even a novel starts with a single word. First drafts are terrible things as is this. I never had the raw talent to be a decent writer or a programmer. Yes, I had a few advantages on the programming side, but mostly I got to where I am by steadily moving forward. If I want AI to work, I have to do the same thing.
Just keep swimming. – Dori, Finding Nemo
I decided to create a SourceForge project for now, mainly for file distribution. I'll put it up on my own site also, but that's running a bit behind while I work on a few other things. Hopefully by the end of the week, I'll have more than just a plain page on the Moonfire Games site.
There is only a MSI installer for Windows. For everything else, you'll need source code, a lot of luck, and probably a wide variety of curses to interpret what I've done. I went with WiX for the installer and it is built with every release which means I should hopefully be able to catch errors early and often.
Though, if you are looking for something remotely more capable than EDIT on DOS 3.1, you probably don't want to use this.
The final week
This last week was cleaning up code. I ended up doing a lot of reorganization and refactoring to smooth over some of the more heinous parts of the code. Projects that I thought should be combined got merged, then split, and then re-merged together. Right now, I think I have a good layout of projects for moving forward.
I did end up creating a placeholder package for Gtk#, Mono.Cairo, and Mono.Posix because I needed to move those dependencies out of my code.
Everything went smoothly right up to Saturday night. On Saturday, I realized I hadn't tested on Linux (one of my tenants of this project is to run on both Linux and Windows and eventually a Mac). It didn't go well. Libraries that I was pretty sure I tested ended up not working. I also did this project with the 4.5 framework instead of 3.5 which I tested earlier; this meant I needed the latest version of Mono (thanks Meebey).
The biggest thing that didn't work was the inversion of control system I was using. Ninject. It didn't work with any version of Mono. Well, the main one may have worked but the "by conventions" extension I was using didn't and I gave up. Since I already knew StructureMap worked, I switched over to that (only a single class) which worked beautifully. I spent a few more hours trying to get Ninject working but gave up.
The other was the spell-checking system, NHunspell. This one I didn't check on Linux and it didn't work. It might be a minor thing, it may not. But, I tried to make the spelling framework simply enough I can drop in something else at a later date.
There are quite a few things for the next month. The biggest is that I'm going to write something with it. Actually use the program and figure out what are the worse pain points. Those that block me, I'll fix in July. The others will be thrown on the issues list so I don't lose them.
I also have a few more blog posts that I think would be helpful to write. Mostly thoughts I had in the last few weeks, some decisions I made, and general informational things that may help a Google search in the future.