A whole lot of ugly

This week, I've been working on Author Intrusion. Mostly I've been inspired by some things at WisCon, but it is also a simple fact I've been talking about this for two years and never getting anywhere. Since I'm not in the mood to write creatively because of everything else going on, I decided to obsess about the programinstead.

I've actually got some pretty good progress so far, but I'm still 2-3 weeks from reaching a limited release of0.1.0.

Goals

The ideas are fairly simple, I'm trying to write what is effectively an IDE (like Visual Studio 2012) for authoring that has a flexible system of plugins that will let me do word analysis (find overuse of gerunds) but also let me take the advantages I have with Emacs and combine it with features that I've found I've wanted over the years: such as world- and project-specific dictionaries, character analysis/refactoring (I end up renaming characters a lot), and notetaking.

My original efforts suffered greatly from thinking about it too much. So, I decided to dial back my aspirations for this round (version 0.1.0) to thefollowing:

On-the-fly spell checking

Auto-correction (I use this a lot because of accented characternames)

Word count (it's trivial, but I like knowing thecounts)

I have all of these now with Emacs and they are pretty much the only features I use while writing. So, I figured a good 0.1.0 release would be to duplicate the functionality I already use every day. If you're curious, I'm planning on using ReSharper and Emacs keyboard shortcuts whenpossible.

Auto-Correction

I actually have a form of auto-correction in now. It is at the "whole lot of ugly" phase of development because I haven't really worked with it long enough to make it pretty. I'm hoping that after a few weeks of groking the code, I'll start to simplify and make itelegant.

I like elegant code. I love beautiful code. The problem that this is the second time I've done something like this and I don't have a good feel for how it should work. I have ideas, but they are kind of scattered together and squished into a "first draft"mess.

There will be a point when I'm working on this code and I'll just figure out how to make it elegant. Until then, I'm going to pretend it is the first draft of a story and try to keep the bile down enough for me to get to the end before I go back andedit.

Scoping

All of this is intended to allow for world- and project-specific settings. This way, I can have common names in my Fedran world (name of languages, countries, etc) and project-specific ones (character names). Technical, I'm also going to have a series-specific one for things that spread across multiple books (my Sandseries).

This is actually working… sort of. The auto-correction pulls in data from multiple settingfiles.

The settings are intended to be fairly granular but also shared. So, I want to have different settingsfor:

Third person past tense (one of my majoroopsies)

Common fantasy dictionary (because most dictionaries don't have "eldritch" or"mage")

Specific dictionaries (in theory, Websters, OpenOffice.org,etc)

"D. Moonfire" specificlanguage

Fedran world settings

Constructed language dictionaries

A book seriesdictionary

An individual booksettings

I have them as a goal, but very little of this is intended to be for the 0.1.0 version. Instead, I have an infrastructure that appears to work. The scary part is that I wrote that infrastructure two years ago with this intent and it happened to work on the secondtry.

Theoretical Functionality

I don't have a GUI yet. I have bits and pieces of one from my last two attempts at Author Intrusion, but I decided to hold off on the GUI elements until I have a working version of the features. That way, I can try focusing on the functionality without getting lost in the graphicaldetails.

To get around this, I'm writing unit tests for almost everything. It isn't perfect, but at least I feel pretty good that I have something that works the way I intended it. It also makes it easier to refactor (rename, rearrange, and organize) without the GUI dragging medown.

Doesn't this conflict my lastpost?

A few posts ago, I was talking about focusing on writing instead of doing covers and creating the font. In that aspect, anything not related to writing is pretty much a conflict. However, I feel the difference is skills. I don't know how to draw or make fonts (well), but I know how to program and I'm good atit.

It also gets me something I've been struggling with: the world/series dictionaries. With the current text version using Emacs, I have a 300-word "LocalWords" section on the top of every file that I have to coordinate. It has every name, country, city, and constructed language word used in two novels. If I finish Sand and Love and go into the next, it's just going to get evenlonger.

The other reason is other projects. Sand and Blood is going to the editor in the next two weeks. Flight of the Scions got into the second round of Harper Voyager. I'm waiting for my weekly serial to finish up (in three weeks) and I have to finish a story for a good friend (which is scheduled to start in three weeks). That is where the 2-3 week sprint is comingfrom.

2013-06-02

Most of my work is available for free in various locations. I'm
supported by donations
and
subscriptions.
If you like what I write and want to see more of my
novels or programs, please consider
becoming a patron and
supporting me. You can also use
Liberapay.