MfGames Culture work, Reviews, and other plans

So, lately I've been feeling pretty bad about not blogging about anything besides my weekly fantasy serial, Sand and Ash. But, I'm hitting some interesting points on a side project and wanted to take a break to talk about it.


There are two topics I don't post a lot about here: work and family.

Work is, well, it is easier to keep my personal life separate from my professional one (though having a last name of Moonfire makes that difficult in general), but I usually don't do anything besides mention how much I'm working. I love my job, even with the occasional long hours and challenges, but I don't think this is the right place to talk about it.

Family is in the same boat. I have a family, they are important, but I don't think this is the venue for speaking about things besides high-level items. In this case, we've had plague slowly working its way through the household which makes it hard to find time to do something secondary like writing a post.

Which makes it difficult when I have a conflict of priorities. A long time ago, I had been sitting in a doctors office while paging through a Reader's Digest when I came up to an inspirational quote that stuck with me: You have time in your life for only three things.

Well, I have those three things: Family, Work, and Writing. Almost every single side project I have is writing something or writing programs to support my writing. However, those takes a side burner when work is getting overwhelming or there is plague.


Like many readers and writers, I have a large “to read” stack of books. I also have a large “to review” since writing a review, be it good or bad, is the best way to support authors (well, and game writers too). A few weeks ago, I thought I'd work on my to review pile by writing one review a day.

Well, that didn't work.

After three weeks of trying, I wrote ten reviews (two, four, and four). Any more than four and I get burned out. So, it looks like I have a cap there. I don't know how well I'm doing, or if they are good reviews, but at least I'm writing and posting them.

I'm probably going to aim for a review a week, though, given how much time it takes. I'm not a great review writer, mainly because I probably focus on things that I want to get out of reviewers. Plus, I'm occasionally critical of stuff, including my friend's writing.

MfGames Culture

The biggest project I've worked on the last month or so is MfGames Culture*. I started this on a lark because I wanted something “easy” (hah!) to write and finish, something that would give me a feeling of success to handle a low-level depression that has been haunting me.

* Most of my libraries are prefixed with “MfGames” (Moonfire Games) because I don't like naming collisions.

The problem with Culture is that I'm terrible at estimates. Seriously, I am such an optimist about it that I've gotten written up about it at work. The problem is that I can do it in the time I want, I'm just scattered with family, work, and interruptions that it takes twenty times as long as it would otherwise.

But, that's the nature of my life.


I previously spent a month working on a C# version of MfGames Culture but I stalled out. This time, I decided to write a Typescript (Javascript) version to support Author Intrusion since I'm working on a Javascript version of that. Culture has also been something that I've been meaning to write for a while.

My primary goals for the library are:

  • To create an API for handling my fantasy calendars (which are not based on Gregorian).
  • To have the ability to sort every chapter in every novel or story in chronological order.
  • To create a time line of events in my world. Ideally, this would be one of those fancy HTML5 scrolling one but I'd be happy with a vertical list of every event that happened in the world.

The long term goal is being able to automatically create a video that shows the events of my world when and where they are happening. I think this would be pretty cool.


Now, the whole reason I wanted to post this blog post. I have an example that someone can play with, a fiddle that allows you to see the library actually in action.

What the fiddle lets you do is change the calendar and see the results in real time. So, if you decide that January is only 25 days, then change it and see the results.

There isn't a lot of documentation on it (see below), but I'm hoping to work on that.

This actually is the first time I've written a Javascript library from end to end, but it uses my data files and library to populate a culture and a calendar. I think it is pretty cool.

Remaining Tasks

In the C# version, I had two calendars for the en-US culture: the Gregorian calendar and the duodecimal (base-12) for hours and minutes. I still need to convert and merge that into the new system.

Since I decided to switch over to JSON for the source file, I also need to update the C# library to also handle that. At the moment, that code is bit-rotted because I think JSON ended up being a more generic file format for supporting both desk and web clients.

I also need the ability to handle time spans, the time between two calendar instants.

Documentation. Oh, how I hate documenting, but I'm trying to get better at doing so.


The reason I'm working on this library still remains true. It is difficult to find any programming library that handles an arbitrary (one that isn't Gregorian) calendar system. If a fantasy or sci-fi author wants to have a base-10, base-13, or some other system, it is difficult to create something that can be easily parsed or formatted.

With Author Intrusion, I want to be able to have the date and time of a chapter written up in the metadata and have it automatically translate or format it. That way, I can say “sort chapters chronologically” or see how much time is between two chapters.


Finishing up anything is the hard. While I got the basics of the library done, there is still a lot to finish. So, my current plans is to spend the rest of November working on the library before doing a writing project in December.

Not to mention, December is Lexember so I'm doing to be working on building up more works for Miwāfu, the constructed language for my fantasy world.