You are viewing dmoonfire

Something completely different

Ocean Cuddle
It used to be when my birthday came ticking around, I’d ask for some DVDs and a good meal. Now, with my efforts to reduce my weight, a good meal isn’t nearly as appealing as it used to be. And I already have too many DVDs (not to mention, it has become “too common” for most people who buy me gifts).

Now, I ask for time alone. Yeah, it isn’t the “fatherly” thing to do, but I like being able to sit down and just obsess about something for a few days. It gets it out of my system and I don’t spend my normal whining about my priority list (family, work, writing, programming) while I’m honoring said priority list.

This last weekend, SMWM gave me two (it ended up being three) nights to do whatever I wanted.

Since I was working on Author Intrusion, I figured I’d program the entire time away, but as I was driving to meet Shannon Ryan for lunch, I realized it was a perfect time to write Sand and Bone. It would fulfill my drive to write and help ease this feeling of… discomfort I get when I’m working on Author Intrusion (also known as fear, uncertainty, and doubt) and not writing.

Psychic friends

I don’t know how it happens, but when SMWM gives me a weekend alone, people start asking for things. And it has to be the weekend I just go. I don’t even tell them about it, it’s like I give out a psychic wave of “ask Dylan for something!”

In this case, two of the folks in my writing group asked for help with WordPress, Google Groups (apparently it can do shared inboxes really well), and a whole slew of other things. That ended up taking about six hours of my Saturday plus I may have corrupted one of them with Order of the Stick and Nodwick.

Meeting other authors

The other thing that came up was meeting Aaron Bunce, a semi-local writer (he’s about twenty minutes away). He and I got talking on Twitter, but I’m not entirely sure how he found me.

But, he also has a book out recently so we decided to read each other’s effort. It will be fun, but I can’t really get started until next week.


Despite all of that, I managed to get a good eighteen hours of writing and got twenty-four thousand words written. This put me past the midpoint of the novel which I’ve been sitting on since April. Another week or so (though without the lovely obsession hours) and I’m at a reasonable shot for finishing the first draft by the end of September.

This is a hard novel to write in a lot of ways.

The biggest is that I’ve had this planned for better part of two years. I know all of these scenes and some of them are emotional for me. I don’t know if the words will say that, but I’m hoping that some of the emotions will get down on the page.

I’ve also been thinking about this novel for years. And I found that playing out novels is helpful up to a point, it can hurt my ability to write if I overdo it.

The other reason this is hard is because it is part three of a series. I’m afraid of changing the tone, writing style, or the general feel of what attracted people to the first book (since the second isn’t out yet).

Overall, I’m just getting words down. Not editing, spell-checking, or doing anything other than getting it out. I can clean up a page filled with errors, I can’t do anything with a blank page.

Miwāfu Glyphs Redux - Basic Font

Ocean Cuddle
Fonts can be a scary beast. Like very other technical field, it has its own language and organization. Free programs for creating fonts are… let’s call them difficult to use, but once you get into them, they are very powerful and capable (much like what I’m trying with Author Intrusion).


This is going to be broken into multiple posts, mainly because there are a few distinct steps. I’ll add links to the entire set as I go, but for now, these are the ones I plan on creating:

Drawing the glyphs

Scanning and cleanup

Creating vector versions

Creating a basic font


While there are many different codes for fonts, these days Unicode is pretty much the one and only one to use. Unicode has more than enough code points and the organization to allow for conscripts (constructed scripts).

Unicode provides three areas for private use (creatively called Private Use Area or PUA). The first is E000-F8FF and has 6,400 points (somewhere you can place a glyph). The other two are at F0000-FFFFD and 100000-10FFFD and have 65k points each.

The PUA can be used by a lot of places: alternative characters, Easter eggs, swashes, non-standard ligatures, and conscripts.

ConScript Unicode Registry

The ConScript, or CSUR, is an attempt to organize the various use of conscripts in the private use areas. Basically, it’s an informal “reservation” for a script to avoid someone else using those ranges.

Font creators don’t have to use the the CSUR to figure out the fonts, but I consider it polite not to use one of the reserved ranges for my own private space. Of course, if the script gets popular, it will probably be moved around, but at least I’m not stepping on known toes.

Where to put everything

I’m starting my glyphs at F2000 which is currently not reserved. I need 46 glyphs at this point, though I would normally pad it to 64 characters to handle some of the custom characters that exist in the world (and to give me breathing room).





















F2014: MIWĀFU-1

F2015: MIWĀFU-2

F2016: MIWĀFU-3

F2017: MIWĀFU-4

F2018: MIWĀFU-5

F2019: MIWĀFU-6























This is somewhat close to how Unicode describes a character. I’m just making it look close to that.

Creating the font

FontForge is a powerful program that doesn’t always work the way you expect it to. The creator ended up making their own widget set because nothing at the time could handle the full Unicode range. But, this also means that it occasionally doesn’t have the polish one would expect out of a standard program. It is easy enough to work with, but it has quirks.

It is also free and the work of love, so frankly, I can’t complain about it.

The first thing to do is start up FontForge and create a new font. This will then give a huge list of boxes with Xs in them. Don’t panic, those are just empty places for glyphs and correspond to Unicode points.

Go into Element / Font Info and populate the first three fields. These can’t have any fancy characters (ANSI only) and the top two can’t have spaces in the names. I use “MF” for “Moonfire” in all my fonts, mainly because of ego.

Creating the slots

Because I’m not starting with a Latin font, I clear out the entire font first. I select Encoding / Remove Unused Slots which removes all the slots. Then, I select Encoding / Add Encoding Slots and create 46, which is the number of glyphs I want.

I haven’t found an easy way of creating and naming a range of fonts easily. So, I go through each one, one glyph at a time.

Populating each slot

Start by naming the slot. This consists of right-clicking the first cell and selecting Glyph Info…. In the dialog, fill in the first two fields.

In the first one (Glyph Name), we need an identifier field. I’m using the uppercase letter and “.miw” to indicate this is a Miwāfu glyph. Having “.miw” will make it easier to merge this font later with a more complete one.

In Unicode Value, put the hex value with “U+” in the beginning. If you just put “F2000”, FontForge will crash. But “U+F2000” works just fine.

Click “OK” and go back to the glyph list.

Don’t bother saving at this point, FontForge will forget your info until you put an image into the slot.

Double-click on the glyph which will bring up an editor.

Go into Inkscape, select the first glyph and paste it in. This will probably be not the right size. You can scale it inside the program, but that rarely works for me. Instead, I scale the image in Inkscape until I can just paste the glyph into the editor and move it around.

Once I position the glyph, I adjust the right vertical bar to give a small amount of space to the right of the glyph. This is the default spacing between the slots, but it’s kind of a art form to find the right spacing (it can also be easily changed later).

Go ahead and close the editor and save. And do it for the next glyph, and the next…

See you in an hour or so. Don’t forget to save frequently.

Create the font

Once all the glyphs are put into the font, I can create the font. I like OTF format over TTF, but either works. To generate the fonts, we use File / Generate Fonts.

Unless you’ve done this before, are lucky, or know what you are doing, chances are you’ll get an error message like this. I usually do, but most of the time, the problems are fixable. Control-E in the editor is good for finding errors. Moving points around and drawing fixes some of the other problems.

Eventually, you can plug at it and get through all of the errors. Don’t skip them, FontForge is telling you for a reason. Once you finish, you’ll have an OTF or TTF font wherever you saved it.

Testing it out

And since we’re finally at a point of seeing it in a word processor, we can use LibreOffice after installing the font into your system.

And… after all of these posts, I can finally show a couple names from my novels.

In the future

There is a lot here and things to do. I have a basic font, but the diacritics are not working nor is the accent. The next step will be how to get those working in the font and see if I can get the eastern version rendering properly.

I also have to tweak the kerning and spacing between the characters so it looks a bit more even on screen. For example, “Y” should be a bit further down and nestled underneath the vowel.

Well, this is a point where I need to stop for now. I have to work on Author Intrusion for a little bit.

Miwāfu Glyphs Redux - Vectors

Ocean Cuddle
It is very easy to copy SVG images from Inkscape into FontForge. The previous parts of creating a font for Miwāfu was to prepare an image suitable for importing into Inkscape.


This is going to be broken into multiple posts, mainly because there are a few distinct steps. I’ll add links to the entire set as I go, but for now, these are the ones I plan on creating:

Drawing the glyphs

Scanning and cleanup

Creating vector versions

Creating a basic font

Import the image into Inkscape

Again, this is a relatively simple process. Using the final image from the previous step, we import it into Inkscape as an image. It doesn’t matter if you link or embed, but I usually link to avoid bloating the SVG file.

Tracing the bitmap

Because I cleaned up the image in Gimp, it is easy to turn the raster image into a SVG image. Select the bitmap then choose Trace Bitmap from the menu.

There is a quirk after you click “OK” on this dialog. It works for a few moments and then looks like you have to click OK again. Just close the window.

Cleaning up the images

The resulting item looks just like an image. Just use control and an arrow key to move one out of the way and delete the image behind the vector version. Once you are down to one image, select the traced outline and use Break Apart (Control-K).

The resulting image will have each glyph as a separate image, but all of the loops will be filled in. To fix this, click on the filled-in bowl, then control-click on the outline. Use Subtract (Control-Minus) to remove the bowl from the outline.

Cleaning up individual glyphs

This is the next tedious part of the process. I started by throwing everything on a baseline, just to make it easier to scroll.

Then, starting on the left side, I go through each glyph and clean it up before moving the next. I was going with an easier approach, so I use Simplify Path (Control-L) to remove many of the control points and smooth out the lines. After doing that, I tried to remove other control points (F2 lets you see those) to create a simple glyph.

I took a couple passes going back and forth until I was pretty happy with the results. Then, I reorganized the glyphs again just to make it easier for creating the final arrangement.

After a bit more, I had this for the end of this step:

You may notice that the heights of the individual glyphs varies a lot. I did this for a few reasons, mainly for comprehension. I love Cherokee as a script, but it shows some aspects of being a constructed script. Everything has roughly the same height and it comes off as a block of text. I wanted something more flowing.

The bottom row has two versions because the lower set is the diacritic version (western) and the upper set is the inline (eastern).

In the future

One of the drawbacks of simplify path is that you lose a bit of the sharpness of the image. I would probably go with a different approach if I was creating the font again.

Also, if this was a non-handwriting font, I would be starting in Inkscape (or a C# program). I have an idea for a parametric font, but this “perfect” idea means that I will probably never finish it.

Miwāfu Glyphs Redux - Scanning

Ocean Cuddle
I don’t write out things by hand very often. The little imperfections always annoy me, which is why I’d rather create a font that write it out. That way, I can also use the font on the Fedran website to show characters in their native language.


This is going to be broken into multiple posts, mainly because there are a few distinct steps. I’ll add links to the entire set as I go, but for now, these are the ones I plan on creating:

Drawing the glyphs

Scanning and cleanup

Creating vector versions

Creating a basic font

Scanning the file

The process of scanning in hand-drawn images is fairly simple one. I have a Canon all-in-one printers/scanner which writes out scanned images as PDF to a SD card. I threw everything into a single PDF and then broke it out into individual PNG files using an overly complicated process.

I should have just scanned each page individually, but it was late and I wanted to go to bed.

Removing blue lines

The first thing I did was open the scanned images into Gimp. I use single window mode (from the Windows menu) because it plays better with my monitor.

The next is to create a white layer and put it below everything. This will let me use Cut instead of fill to remove elements.

After selecting the main layer again, select by color (right-click, Select, By Color…) and set the threshold to 40.0.

With those settings, just click on the blue line and cut (Control-X). Because we put a white layer behind it, it will delete to white instead of transparent.

After doing this a few times, I get a white background image with the glyphs nice and stark on the page.

Sharpen the images

Once I have the guide lines removed, I made the text easier to trace. The first thing is to convert the image into grayscale and back to RGB. This removes any errant blue lines and darkens everything black.

Once that is done, I jack up the contrast to deepen the black even more.

Smooth out the edges

The result is actually good enough for the next step for making a vector version. However, I ended up using the “Oilify” filter to smooth out the edges so the glyphs look reasonable even in Gimp. I like Oilify because it smooths out the rough edges of an image and gives a more newspaper printed appearance to the images.

The final result is a fairly dark glyph that is easily designed to be scanned.

Culling the herd

The final step was to go through all of the duplicated glyphs and find the best one of the lot. This was actually a couple hours of shifting images around, removing the ones that don’t quite fit, and trying to decide the right shapes to use. Once that was done, I had a single image with one of each glyph.

In the future

The blue lines I used were a little too dark, which increased the complexity of removing the trace lines. I would use a lighter shade next time.

I also didn’t need to use the oilify since I was scanning into the next step. The result is that the glyphs got a bit more blurred than needed, plus it distorted the shapes (which was magnified by other things I did later).

Miwāfu Glyphs Redux - Redrawing

Ocean Cuddle
My dad gave me a little bit of money for my birthday and, after many years of being reminded not to spend it on bills, I gladly went out and bought some DVDs and a set of calligraphy pens.

I’ve really been in the mood to create a font for my conlang lately. I’m pretty sure it was entirely because of this, which is a beautiful set of calligraphy for someone’s constructed language by someone far more talented than me. Even knowing they have higher skills, more artistic talent, and a more developed conlang doesn’t stop me from wanting to follow in their footsteps. I mean, the only way to get better at something like this is to actually do it.


This is going to be broken into multiple posts, mainly because there are a few distinct steps. I’ll add links to the entire set as I go, but for now, these are the ones I plan on creating:

Drawing the glyphs

Scanning and cleanup

Creating vector versions

Creating a basic font


I haven’t touched calligraphy in a very long time. My mother used to have some pens that I would occasionally play with. I didn’t expect much coming back to it, I didn’t have the muscle memory or the skill.

But, I do remember the joy of trying to get curved, balanced lines. And that part is what I was looking for (and got).

Starting with the old

Back in 2012, I came up with a set of glyphs that I was pretty happy with at the time. However, in the two years since, they felt off but I couldn’t figure out why. Trying to draw them out by hand helped me figure out the flaws: they were created on a computer.

A calligraphy pen is kept at a steady angle for the entire character. The glyphs I created were just put together the way I thought looked good on the computer. More importantly, they had shapes that were easy to draw in Inkscape instead of written on the page.

When I actually tried to draw them, my hand refused to move in the ways needed to match the screen. Plus, it didn’t feel “balanced” to me. So, I decided to draw the glyphs until I came up with a more natural version.

I started with a cheap fountain pen but later switched to a marker-style pen. I found that I like the marker version slightly better, mainly for coverage, but neither compare to my precious Pentel A55 pencil which is completely unsuited for this endeavor.

Below are the progression of the images starting with the old versions. You can probably guess that this was done over time (a week) with random bits of plain white paper.

Coming up with the new

As you might tell from the above images, I played around a lot with the feel but started with the old ones. Mostly, it was changing the shape and arrangement while keeping the shapes distinct enough that they couldn’t easily be confused with the other. The reason there were so many different variants was because I kept drawing it to see if it was a weakness in my muscles or a difficulty in the shape. Frequently, it was a combination of both.

Eventually, I came up with a new set of glyphs that felt pretty good to actually draw by hand. Around page five of my tests, I started to organize my symbols instead of just randomly drawing on the page.

I even made a few attempts to write names in it (mostly character names). On the next image was my attempt, though there was some discussions with a friend at the writing group about different scripts in our world (he’s a former military translator and a micro-polyglot).

One cool thing came out of here is a bit of world-building. There are two ways of putting in the vowels, diacritics or succeeding. Since I’ve always said that Miwāfu’s script was created by researchers and missionaries from Tarsan, the original language used diacritics. And since the desert folk hate agreeing with anything, the eastern part of the desert rebuked the diacritics and went with their own way of writing vowels.

Practice sheets

Once I thought I was done with the glyphs, I banged up a quick practice sheet in Inkscape using blue lines and printed off a few copies. Then, with my trusty new calligraphy marker, I just spent a few days drawing in boxes, working each one until it felt good but also looked “mostly right.”

I say “thought” because I still ended up changing fonts after drawing them a few dozen times.

In the end, I figured I had a pretty good set of glyphs of various quality. I scanned them in and then promptly went to bed. Mainly because the next step requires a lot of thinking.

In the future

The biggest thing about these glyphs and my effort is simply practice. I haven’t used calligraphy pens enough to be good at them, nor can I do the little swashes and flairs that I see others doing. This is obviously something I can improve, but it is a matter of time and desire.

R5-D4 Plots

Ocean Cuddle
It is amazing how a single conversation can set off ripples that can affect me years later. One of those was about Star Wars Episode I: The Phantom Menance.

A New Hope

Back in 1999, Lucas had just announced that R2-D2 would be in every movie along with C-3PO. This wasn’t received well by my circle of friends for many reasons. The main one is that none of us really liked R2 that much, but also because it was obvious that R2 was a cherished and loved character of Lucas, which means it would be depressingly important to the plot. Yeah, R2 is cute and everything, but I honestly consider his presence in episodes one through three to be as welcomed as Jar-Jar.

Now, somewhere in the endless debates that seems to inflict sci-fi fans when bits of information are leaked out about movies, a friend of mine (SW) made a little observation that I thought very little about.

SW wanted R5-D4 to be the astromech droid in the first three movies. R5 is the robot that Luke first picks out in A New Hope (he calls him “Red”), but when he rolls away from the Jawas, he shorts out.

His reason for wanting R5 is because it suddenly made a side character of a beloved movie important. It changes a little scene of a poor droid shorting out into something heartbreaking after finding out that it was critical to the events leading up to A New Hope.

I know R5’s story has continued on after it shorted out, including revealing the location of R2 and becoming a spy. I didn’t know about that until I wrote this, but I’m inclined to enjoy my version of his past instead of the current one.


The other part of my epiphany came from my commissions. A number of my commissioners (but one in particular) had me write stories that turned a few seconds of a movie or anime into a longer story. In one case, it was eight seconds into a ten thousand word story. In another, a two minute segment into a fifty thousand word novella.

The reason for such a short section is that they wanted to know how a bit or secondary character got into the scene. In effect, turning the presence of a background character into something more emotional. It changed the gravis of the scene since there was now a story behind it instead of “random person walks behind main character.”

I loved doing those commissions. I had so little to work with that I could come up with something large (and occasionally epic) that ended with a scene in the anime or movie.

In effect, the same hope that R5-D4 was the droid that fought for the Republic.

Buffy and Babylon 5

Related to these were two TV episodes. The first was a Babylon 5 episode that showed other events happening on the space station while the main characters were trying to save everyone.

The other was, The Zeppo, an episode of Buffy the Vampire Slayer. This awesome episode focus on Zander, but various scenes would show the rest of the group running around, fighting, or otherwise doing what they do but completely in the background.

Flight of the Scions

I’m currently planning on sticking with novels and stories set in Fedran for a while. The first novel, which is not published yet, was called Flight of the Scions. When I finished the “final” version, it was too large for editing and publication (220k words). One of the attempts to reduce the word count was to peel out a major secondary arc of Waryoni Garèo and his redemption. The result was large enough to be put into its own novel, Kin-Killer.

Splitting that into two novels meant that Kanéko’s story wouldn’t be able to explain what Garèo was doing while she was running for her life. She would see little bits and pieces, but never see the complete story. But, the same thing would happen during Kin-Killer while Garèo is trying to save her and being drawn into his own story.

I ended up liking the idea, though I don’t know if it would work. It is two novels happening at the same time, with characters interacting with each other constantly.

One reason I want to plot out the time and location of each chapter of my novels is because some of them are going to be happening in close proximity to each other.

The Plan

Somewhere down the line, I found a philosophy for Fedran. Each series is going to focus on a single character and will be written from their point of view. But, it won’t have neat endings or explanations. The POV character may never understand everything going on, but there may be another story that does explain it.

Kanéko never finds out why Garèo is so hurt before the climax of Flight. Garèo won’t understand how Kanéko grew up so fast in less than a week. Neither will ever know how Rutejìmo influenced their lives or how the events in Sand and Ash saved Meris and Ruben.

But, the reader will. And I think if I pull it off, it will be amazing. A bit character of one story is critical to another. A R5-D4 droid shorting out becomes heartbreaking.


When I was talking about this idea at work, one of my co-workers who is a Star Wars fan gave me a R5-D4 figure and the lovely post-it note on this post.

Mailing lists and social networking

Ocean Cuddle
A few days ago, in my random wandering of the Internet, I came up to a post on Indies Unlimited about blog sharing. I threw my two cents in, but I don’t write that much about getting published, so I figured I wouldn’t get a lot of posts.

It wasn’t until I saw other people’s responses (not to me) that I realized I don’t really have a way for people to “follow” me. More importantly, the ways I did have, I didn’t actually post on my website for anyone to follow me.

RSS/Atom Feeds

My preferred method of paying attention to any website (including authors and comics) is a RSS feed. I use NewsBlur for the bulk of my reading because it is a small developer, it replaced Google Reader nicely, and has most of the features I want.

Naturally, this is the one that I had set up from the beginning. I did break it into multiple feeds, so anyone who just wants to see my writing or programming posts can do so. Or look at everything.

Atom/RSS feed of all posts

Atom/RSS feed for writing only

Atom/RSS feed for programming only

I haven’t quite created feeds for every tag (so you could follow only Sand and Blood posts for example). I will, eventually, or if someone asks.

Mailing Lists

Well, mailing lists is kind of a stretch, but I don’t care for MailChimp. I do, however, use Google Groups for a couple of categories. It does the important part, sends emails, but doesn’t quite have the social and Big Brother views. For some reason, I don’t like when the link from a mass-mailing doesn’t show the actual link; Google Groups doesn’t mess with the links.

dmoonfire-announce (read only, writing announcements only, very low traffic since I don’t write that much)

dmoonfire-blog (read only, all blog posts)

dmoonfire (read/write, has all blog posts but you can respond and chat)


The other social network I use is Twitter. This happens to be my favorite one to use at the moment, mainly because it fits the way I think and interact. There are some Twitter-clones I’ll use eventually, but they aren’t there yet.

@dmoonfire (random saying, conversations, and a link to all blog posts)


I don’t use Facebook a lot, but I do have a fan site. It should be set up to automatically mirror any blog posts about writing to it.

D. Moonfire Fans (writing posts only)


I know that LiveJournal appears to be dead for most people, I still maintain a mirror of it. I think it is for a single person, but I just don’t have the heart to shut it down yet.

dmoonfire (all blog posts)


I just added this yesterday because I found a way of mirroring things from my blog. If you can’t guess, I prefer to have cross-posters for the bulk of the writing but respond individually on each network. Google+ has always been a messy thing, mainly because of the cross-posting, but I think I found a way.

+D. Moonfire Fans (writing posts only)


I love the idea of Diaspora, but sadly it really doesn’t have the market share for social networking. Not to mention, no cross-posting that I can set up which means I have to manually enter stuff… which means I don’t always do it.


I love to answer questions and chat. It doesn’t happen much, but regardless of the network, I love feedback, interaction, and just connecting. I think it is one of the important parts of being a fan and a creator.

This post’s photo, “Be Different,” is copyright (c) 2012 Raphael Love and made available under a Attribution 2.0 license.

Author Intrusion - Names

Ocean Cuddle
I was slowly making my way through the Markdown and DocBook file processing when I hit an interesting snag: names.

Author names are a strange thing. It would be easy to just stick with the Western approach, which is what Amazon uses in their KDP program: first and last name. Smashwords does the same but they add suffix. No mention of title, which some people really hang up on (I almost went through a Ph.D. program just so I could be Dr. Moonfire).

Complexity of names

The problem is that I work with Japanese people who have family name first and given name second. There are others too, I just happen to know Japanese culture a little better than most others. Most websites I know don’t actually handle this because they assume the first/last name approach.

You have some cultures where many people have two last names, one from the mother and one from the father.

The other interesting problem comes in with single name authors, let’s go with Madonna or Teller for examples. Some websites allow you to go without both names, but there are a lot that don’t. Google, for example, insists on something and NFN (No First Name) looks horrible when they say “Hello, NFN!”.

An interesting one is Goodreads. Goodreads lets you have an account with only one name, but you can’t sign up for a raffle without both names filled out.

There are also names that start with a lowercase character or have an apostrophe in the middle. Or a slew of other Unicode characters that most developers make assumptions that aren’t true.

This bothers me, but that shouldn’t be a surprise. One of the principals of Author Intrusion is “Author Know Best”. It means that the author knows what they are doing and we don’t tell them how to work. This includes how format their own name. If they want a Unicode symbol, that’s fine. I’ll probably draw the line at images for authors, simply because I don’t want to code that. I’m all for it, it’s just low in my priority list.

Solving the problem

Normally, I use DocBook for inspiration on handling things. I figured after so many decades, they’ve solved most of the problems. And, in this case, I think they have.

<othername role="middle">Robert Evans</othername>

There are no specific conventions for othername, but it’s better than most. It also lets me enter full names for the author and figure out how to format them later.

In my Markdown files, my author tag is usually a preferred name.

Author Intrusion - A black triangle CLI

Ocean Cuddle
Over the last week, I’ve been working on the current version of Author Intrusion. It can get pretty discouraging since there is so much to do, so I’m focusing on a single task at a time and building out along the way so I will hopefully get a complete project by the end.


One of the hardest things about coding is the GUI. There are so many things for getting events hooked up and the interface running smoothly. Being that GUIs are my weakest area of code, plus the state of the cross-platform .NET UI libraries is still a little weak, I’m going to work on other things.

I ended up deciding on project IO. For those who have read my blog in the post, you probably remember that I spend a lot of time working on automated the creation of ebooks and print from my source documents. Not to mention a lot of time working on creating a format that works the way I like to work.

That lead into my first goal: transforming a source project into another format. Eventually, this is going to lead into system used to create ODT, Microsoft Word, EPUB, MOBI, and everything else. Not to mention importing from other formats.

While I’m going to eventually have a GUI interface for it, I can also write a command-line interface (CLI) version which lets me get the functionality written without getting distracted by the GUI.


This weekend, I actually saw the beginning of my ideas show up. The initial framework for converting a Markdown file into DocBook 5 worked via the CLI.

$ aicli transform sample.markdown sample.xml

I went with aicli (Author Intrusion CLI) for the tool. The interface is inspired by Git with sub-commands and a somewhat flexible way of adding new tools.

The cool part is that the above command actually worked. It doesn’t look like much, but there weeks of effort to get to that point. It’s a black triangle moment in this development.


I arranged the file formats into, creatively enough, IBufferFormat objects. They are discovered via an IoC container (StructureMap) and represent a single type of input or output.

The initial ones to get the above code working were:

Markdown (input only)

DocBook (output only)

I’ll get these to be both input and output, that way anyone can use either Markdown or DocBook files for their primary project format. I’ll also use these for the output formats:



Libreoffice (ODT)

Microsoft Word (DOCX)

And it has options too!

Yeah, the other bit I like is the single configurable option.

$ aicli transform sample.markdown sample.xml -ORootElement=chapter

There may be more, but that puts me one step closer to replacing mfgames-creole docbook that I originally wrote for MfGames Writing Python.

Stupid obsessions

Ocean Cuddle
For the last few years, I’ve been pretty good about only focusing on projects that advance my long-term plans. However, there are occasionally little things that don’t really help me. The last few days was one of those projects. Recently, I switched over to Jekyll because WordPress was giving me a hard time. I worked on it for a few days, but stopped because I really needed to work on other things.

And then two days ago… oh, that was not the smartest thing to do. I wanted to fix a couple minor things, mainly breadcrumbs and navigation for posts. I figured it’d be a couple hours effort and I’d be done.

I managed to get breadcrumbs back in on the posts, navigation, and everything else that I planned on doing it. However, I had to write a lot of other programs and reinvent the wheel to get everything working together.


Somewhere in the middle of last night, I knew that I should have just let it go and used the old version. I have writing and programming to do, not obsess about getting annual and month archives on the site.

Around midnight, I even said “just put it down,” but I couldn’t. It was haunting me. I kept telling myself “just a few seconds until I’m done.” Of course, I knew that wasn’t true, but I had so much trouble putting it down.

This evening, I finally finished the coding on the site. I only fixed a few minor things, ones that no one will probably notice, but now I’m happier with the site. And I can let it go.

Jekyll and Ruby

I’ll admit, some of the obsession comes from solving problems. I don’t know Ruby very well (the language Jekyll is written in) and I was trying to just “get it working” which means I use Perl to prototype. Yeah, it isn’t the right way of doing it, but it’s the way I think and the time I was willing to put into it.

Sooner or later, I’ll have to learn how to write some of these features in Ruby and proper Jekyll plugins, but the Perl version seems to work for what I want, including all those breadcrumbs, collection gathering, and archives.

Now, I can do what I was suppose to do.