Welcome to the Family!

David Mack, Another reason to loathe Facebook:

Facebook, on its own initiative and without asking me first, changed my Official Author Page to a Community Page, a sort of public forum that anyone can create. This removes certain features, takes its content out of people’s newsfeeds, deprives me of official control over the page, and generally makes it sort of useless. It also makes it harder to distinguish from Facebook’s automatically generated info pages.

I might have restrained my response to an angry sigh and a shrug except for one thing. In the page’s top bar of information, they altered a key piece of information. It now reads “Community Page about David W. Mack” — complete with that link. That’s right: those morons at Facebook linked what had been MY OFFICIAL PAGE to one about the OTHER David Mack, the creator of Kabuki. And they did this FOR NO REASON. And left me NO MEANS OF FIXING IT.

This just highlights the importance of proper namespacing, in meatspace as well as cyberspace. As luck would have it, I am offering membership in the extremely rare “Goer” namespace, for a reasonable price…

Ideal Writing Conditions

When I attended Viable Paradise, Cory Doctorow warned us all in no uncertain terms about ritualizing the writing process. His message was that you needed to be able to write under any conditions. You couldn’t fall into the trap of having to smoke a cigarette, or drink a drink, or sit at your very special writing desk on your very special Writing Day just to get anything done.

Well, I’m working on the YUI 3 Cookbook this afternoon, and:

  • Chores are done (enough).
  • The boy is napping.
  • TRON: Legacy Reconfigured is playing.
  • My wife just brought me a cold beer, unasked.

Not that I want to set myself up so that this becomes the prerequisite state for writing. All I’m saying is, conditions sure as heck could be worse.

Version Control for Everybody

I once listened to a professional SF writer lecture about his craft. A wonderful fellow — highly competent, writes great stuff, and a super nice guy to boot. His lecture included all sorts of useful and insightful tips. But the part that stuck in my mind to this day was what he said around how he handled backing up his work in progress:

“I have a folders for each story. Every day, when I’m done writing, I click Save As and save my story as ‘name-of-story date.doc’. Then every few weeks, I burn my story folders to a new CD…”

When confronted with a complex software-related problem, “regular” people develop all sorts of rational responses and workarounds that give those of us in the software industry the vapors. Nothing captures the disconnect between software people and regular people better than Yishan Wong’s breakdown of what’s wrong with OpenID:

To answer the most immediate question of “isn’t having to register and log into many sites a big problem that everyone has?,” I will say this: No, it’s not. Regular normal people have a number of solutions to this problem. Here are some of them:

  • use the same username/password for multiple sites
  • use their browser’s ability to remember their password (enabled by default)
  • don’t register for the new site
  • don’t ever log in to the site
  • log in once, click “remember me”
  • click the back button on their browser and never come back to the site
  • maintain a list of user IDs and passwords in an offline document

These are all perfectly valid solutions that a regular user finds acceptable…

One of the tragic things about this disconnect is that Actual Good Ideas that software people take for granted end up taking decades to migrate out to regular people in a form that they can actually use. As an example, take backup — an absolutely critical feature that until fairly recently, regular people would implement (if at all) by occasionally remembering to burn some files to a CD. Pathetic. And by “pathetic,” I mean we the software industry, not the poor end-users.

Which brings us to version control. Version control is one of the few innovations in the field of software engineering that is an unalloyed good. Even a creaky, antiquated version control system is much better than having no version control at all.

Of course, version control systems are designed for software construction, which means they have tons of complicated features for nerds. Version control for regular people would look something like this:

  • It would work automatically on all of your documents.
  • It would save new versions for you in the background.
  • It would have a friendly interface for going back in time and retrieving old versions.

This is what Apple appears to be shipping in OS X Lion. A simple, friendly, OS-level versioning service for apps to hook into. In one master stroke, Apple has just granted millions of people the same power software engineers have enjoyed for years: the ability to author without fear. This is huge.

Granted, it took about three decades to get to this point, but still — this is a great moment for anyone who does creative work. And if you don’t use OS X, cheer up. Any operating system worth using will be implementing something similar very soon.

Publishing in Standard Manuscript Format with Sphinx, reST, and Sffms LaTeX

Although it’s the Year of our Lord 2011, and we are blessed with no end of advanced publishing technology, many fiction writers practice their craft something along these lines:

  1. Open Microsoft Word or Libre Office.
  2. Type some stuff.
  3. At the end of the writing session, click “Save As” and save your file as "Title_of_Story Todays_Date.doc"
  4. Occasionally, when you remember, burn all your story files to a CD.

Some writers are a little nerdier. They might use a specialized writing tool such as Scrivener or Ulysses. They might have automated backup set up. Or they might use an online word processor such as Zoho Docs and Google Docs which provide “free” offsite storage and version control.

But what if you’re a really nerdy writer? Nerdy enough to want to author in an open plain text format? Nerdy enough to want to check your files into a real version control system? Nerdy enough to run diff and sed and perform other text-munging feats of strength?

It all sounds promising, but there’s one major obstacle standing in your way: Standard Manuscript Format. Double spaced, 12pt monospace, one-inch margins, a running header with the author and title, you know the drill. This exacting print-ready format is easy to produce with a word processor, but if you want to stay outside of that world, you’re in for some serious pain. So what to do?

  • Give up and use Word.
  • Wait for the current generation of publishers and editors and all the people they have trained to die.
  • Other.

I choose… “Other!”

Using Sffms

When it comes to exacting typesetting, nothing beats LaTeX. And it just so happens that M. C. DeMarco has designed a LaTeX document class named sffms that outputs Standard Manuscript Format.

DeMarco has documented sffms to the point where you can use sffms without actually knowing much about LaTeX itself. There’s a bunch of config-y header-y stuff at the top of the file. Paragraphs look like paragraphs. Occasionally you need to add a special command like chapter{In Which Stuff Happens} to create a chapter break, or emph{Look out!} for emphasis. You run the thing through latex and then pdflatex, and out comes a beautifully typeset manuscript complete with wordcount. You have to watch out for reserved LaTeX characters, but quite honestly, authoring a story in LaTeX is easier and cleaner than, say, hand authoring the same thing in HTML. It’s all quite civilized.

The one wrinkle is that the LaTeX toolchain really only works for print. All the TeX to HTML conversion tools I’ve tried are ancient and horrible. They’re particularly bad with sffms, which has some differences from a “normal” LaTeX article that trip up the ordinary HTML converters.

So if all you want to do is submit manuscripts to publishers, you are golden with LaTeX and sffms. But if you want anything even remotely reasonable to post to the web, you’ll need to roll your own converter. Or read on.

Using Sphinx and reST

LaTeX is a great technology. But for a humane plain text format that converts nicely to HTML, we have to move forward in time a couple of decades. reStructuredText (aka reST) is a lightweight markup language developed by the Python community for technical documentation. Sphinx is a builder tool that transforms reStructuredText into different target output formats.

The nice thing about authoring in reST is that the source files are even cleaner-looking than LaTeX (let alone an angle brackety language). Paragraphs are paragraphs. Chapter headings are titles with underlines. Emphasized text is text surrounded by asterisks. Even if the entire Python documentation toolchain disappears, even if you’re looking at your story’s source files decades from now, your work will still be perfectly readable as plain text.

For the fiction writer, what Sphinx brings to the table is solid, easy to use HTML production. If you don’t like the built-in HTML templates, it’s straightforward to hack your own. Sphinx also produces EPUB out of the box, as should all writing tools worthy of your consideration. So to recap: reST is a really nice source format, while Sphinx provides you with lots of power and control over how the HTML and EPUB output looks. Looking good so far!

Sphinx also produces LaTeX output. The problem with Sphinx’s LaTeX output is that — surprise! — it’s designed to typeset a nice looking technical manual, not a novel. The results look nothing like Standard Manuscript Format. Ah, well.

But wait a second:

  1. sffms LaTeX is designed to typeset documents into Standard Manuscript Format… but its HTML output is unacceptable.
  2. Sphinx and reST have great HTML facilities… but its LaTeX output is unacceptable.

Hmmm…

Someone Got sffms Peanut Butter in My reST Chocolate!

So it turns out that it’s not terribly difficult to write a Sphinx extension, even if you are a Bear of Very Little Brain who hardly knows a lick of Python. Now available for public consumption: the sffms Sphinx extension. And yes, the source code is available on github.

To use this extension:

  • You must be able to install LaTeX with the sffms document class included.
  • You must be able to install Python and Sphinx.
  • You must be comfortable editing configuration files and running commands on the command line.

There is also very little documentation other than some comments in example files (though I’m working on that). In other words, this extension is for software engineers who also like to write fiction. Preferably software engineers who have used Sphinx before, and who have lots of patience.

You don’t have to be familiar with the sffms LaTeX class, but reading DeMarco’s original documentation might help you wrap your head around what sffms actually can do. My extension currently exposes almost all the knobs that are available in the sffms LaTeX class. For example, you can set sffms_frenchspacing = True in your Sphinx conf.py, which injects a frenchspacing command in the resulting LaTeX output.

If you want to kick the tires, here is a sketchy outline of what to do:

  1. Install LaTeX with the sffms LaTeX class.
  2. Verify that you can run latex successfully on one of DeMarco’s example stories.
  3. Install Python 2.x (if necessary), followed by the Sphinx and sffms Python packages.
  4. Verify that you can do a vanilla Sphinx doc build. You can use sphinx-quickstart to create a test Sphinx document. Try creating a PDF manual of your test document.
  5. Download the skeleton short story and skeleton novel from GitHub. (These artifacts are not currently included in the sffms package itself, but they should be).
  6. cd into one of the skeleton directories and run sphinx-build -b sffms . _build.
  7. cd into _build/sffms and run latex index.tex — twice.
  8. Run pdflatex index.tex. View the resulting PDF.
  9. Go back to the story directory and start playing around with the Sphinx conf.py file. The configuration file contains all the available sffms configuration options with comments. The file also contains some minimal options for Sphinx in general. These other options are uncommented and you can ignore them if you are just working with sffms LaTeX output.

The next order of business is to write some real documentation. Beyond that, I welcome any bug reports or suggestions for feature enhancements. I am neither a professional programmer nor very experienced with Python, so any help you can provide would be very… helpful. Thanks!

A Feeble Translation of Brennu-Njal’s Saga

This translation is the final project from my Old Norse self-study sessions with Lucy. I went with a section from Njal’s Saga, specifically the part about stealing and cheese (section 48). This seemed appropriate, given our study material. I got up to the point where Melkolf returns to Hallgerd.

As you can see, I was in way over my head. I really only ever got the hang of present tense and masculine forms. And plurals, sort of. There were a few bits that I could almost make out, but mostly I was hunting through my copy of An Introduction to Old Norse for vocabulary words, stringing them together, and hoping each passage would somehow unscramble itself into English. I missed some words, but the thing that really got me into trouble was my poor understanding of Old Norse grammar and syntax. You’ll see there are places where I completely lost track of who was doing what to whom, and my translation just wandered off in a completely wrong direction. Anyway, without further ado…

My Translation of Njal’s Saga (48. kafli)

Gunnar rode to the Thing around summer, but before he lodged for the night, he saw a great force of men from the east. Gunnar offered to let them lodge for the night there, [since??] they were going to the Thing also. They declared [they would do it by hand??] Now he rode to the Thing. Njall was at the Thing and in his compound. The Thing was quiet.

Now Hallgerd came to speak with a thrall, Melkolf: “I have a brave mission for you,” she said. “You must go to Kirkjubae.”

“And why must I go there?” he said.

“Thereafter, you must steal two horses and food, butter and cheese, and you must set fire to the shed, and take care to [something about a message, and no one would have expected what had happened].”

The thrall spoke: “I have been wicked, but I have never been a thief.”

“Hear [something],” Hallgerd said. “You will be given good [something] where you have [both?] been thieves and [something], and you must not dare to defy me or else I’ll have you put to death.”

He thought [he was aware?] [something] if he did not go. That night he took two horses and set fire to the sheds of Kirkjubae. A hound was [not good to him?] and leapt at him [something]. Afterwards, he finished in front of the sheds and loaded up the two horses with food, killing the hound and burning it. He carried it up to Ranga. Then he broke [something?] and took his knife and [something]. He lay down by his knife. Then he [something] to come to Hlidarendi. He had lost his knife, but did not dare return for it. Now he returned to Hallgerd in the morning. She [recieved him?] gladly [something] his journey.

Penguin Translation of Njal’s Saga (48. kafli)

Gunnar rode to the Thing that summer. A great number of men from Sida in the east had been staying at his farm, and he invited them to stay again when they rode home from the Thing. They said they would, and they rode off to the Thing. Njal was there too, with his sons. The Thing was a quiet one.

Now to tell of Hallgerd, back at Hlidarendi: she spoke to the slave Melkolf and said, “I’ve thought of a task for you. You’re to go to Kirkjubaer.”

“What should I do there?” he said.

“You’re to steal food from them, enough butter and cheese for two horses to carry. Then set fire to the storage shed, and they’ll all think it was carelessness, and no one will suspect that anything was stolen.”

The slave said, “I’ve been bad, but I’ve never been a thief.”

“Listen to you!” she said. “You make yourself out to be so good, when you’ve been not only a thief but a murderer. Don’t you dare refuse this errand, or I’ll have you killed.”

He was quite sure that she would do this if he did not go. That night he took two horses and put pack-saddle pads on them and went to Kirkjubaer. The dog knew him and did not bark, but instead ran up to him and fawned on him. He went to the storage shed and opened it and loaded the two horses with food, and then set fire to the shed and killed the dog.

He returned along the Ranga river. There his shoe-string broke and he took his knife and repaired it, but left his knife and belt lying there. He went all the way to Hlidarendi and then noticed that the knife was missing, but did not dare go back. He turned the food over to Hallgerd. She was pleased.

Dvergarnir ok Grautinn

I’m very late posting this, but here is the little story I wrote for Old Norse homework with Lucy. Lucy’s story was about evil men, betrayal, and haunted islands. Mine is about… dwarves and porridge.

If you don’t know Old Norse, try puzzling out what the story means anyway — you might get farther than you think. If you do know Old Norse (or Modern Icelandic, or really any Scandinavian language), I apologize in advance for all the horrible grammar and usage errors. 🙂

Tomorrow, Lucy and I meet up to go over our respective translations of a section of Brennu-Njals Saga. Which section? Why, the one about thievery and cheese, of course! Wish us luck.


Luciusr ok Evanr eru svangir, ok vilja graut. Fjalarr er konungr ok dvergr. Fjalarr Konungr ok dvergarnir hefir graut goĂ°an.

Luciusr ok Evanr brátt finna dvergarnir. Luciusr segir, “Heill, Fjalarr Konungr! Ăľit eruĂ° svangir, ok viliĂ° graut.”

Evanr segir, “Ek hefi hatt gylltan. Hvart vilt Ăľu hefir hattinn gylltan?”

Fjalarr er reiĂ°r ok segir, “Ăľit eigi takiĂ° grautinn.”

Nú Luciusr tekr grautinn. Lucius ok Evanr flýjið.

Fjalarr kallar, “Ăľjofar! Ragir Ăľjofar! Dvergarnir, foeri mer brand!”

Luciusr ok Evanr hjæja ok segja, “NĂş vit hefiĂ° graut ok brátt eigi svangir!”

In Which Mur Lafferty and I Singlehandedly Save the Publishing Industry

As everyone knows, the publishing industry is in trouble. Like a drunken author stumbling across a campus quad, groping for enough saucy anecdotes about teen co-eds to fill out one last priapic literary novel, so too is the publishing industry groping for solutions to shrinking margins and an increasingly distracted public.

Well, fear not, publishing industry! I bring you… the future. Publishing 3.0! Publishing for Teh Internets generation! Publishing with Rounded Corners and Pastel Colors!

Afternoon of the CyberMonkeys: An Interactive Collaborative Twitterfic Publication (with special guest star: Mur Lafferty)

Note that this new super-advanced format has some drawbacks:

  • The posts are in reverse time order. This means that the best way to read Afternoon of the CyberMonkeys is to click the link, immediately scroll down, and start reading from bottom to top.
  • If at some point in the future I decide to change my Twitter favorites for any reason, the story will be destroyed.
  • Unlike works of fiction on physical paper, Twitterfic works are subject to “Failwhales” and other Web 2.0-style mishaps.
  • The story isn’t very good.
  • There is still no revenue model.

But these are minor bugs that I’m sure we can all work around.

Mur Lafferty Interview: Playing for Keeps

One of the great pleasures of attending Viable Paradise X was meeting the people — and one of my favorite experiences was meeting the powerfully talented and wickedly funny Mur Lafferty. We bonded almost immediately — “Oh, you like Lore Sjoberg’s Bjork Song? Hey I was just chatting with Lore a few hours ago!” — and perhaps because of this, Mur was kind enough to show me the complete draft of the novel she was workshopping, a piece about arrogant superheroes, manipulative villains, and the folks with “unwanted” powers that fall in between. Happily, that draft became the novel Playing for Keeps — first released as a free PDF and podcast, and now going on sale in printed form this summer from Swarm Press. Mur and I spoke recently about workshops, her novel, and writing in the superhero genre.

Evan: I’ll start with the question I’ve been meaning to ask for a while, about time management. I mean, okay, you’ve got your blog, your Suicide Girls column, podcasts, Twitter, interviews, conventions, the Pink Tornado… oh and then there’s this “writing thing.” I mean, at this point you’re basically Cory Doctorow with more and better hair. Seriously, how do you fit it all in?

Mur: Hah! None of those things, even the Pink Tornado, who’s in school or day camp during the day, has to be done ALL the time. My columns are once or twice a month. Podcasts take maybe 7 hours a week. conventions are maybe 15 days out of the year. So I prioritize and do what I can when I can.

Evan: You’re not one of those “Getting Things Done” / Zero Inbox nerds, are you?

Mur: Honestly, I feel like I procrastinate a lot, and wonder how productive I could be if I could focus more.

Evan: I bet Cory thinks that all the time.

Mur: And no, I couldn’t handle all the details with GTD. I do try to keep my emails down though.

Evan: Let’s talk about workshops. What do you think writers can realistically expect to get out of a workshop? And at what point in their career should a writer think about going?

Mur: What writers will get out of a workshop depends on how open they are to learning.

Evan: Do you feel that a lot of writers come to workshops not open to learning?

Mur: I think you need a certain balance in your confidence level to hit workshops — sure, you need talent, but it’s a personality thing as much as it’s a talent thing. First — yes, I haven’t been to many workshops, but I’ve read many anecdotes, and Wilhelm’s “Storyteller” that state that nearly every workshop will have an attendee who is there for validation, for someone to tell them that yes, indeed, they can write, well done, pat on the head. And when that doesn’t happen, they get discouraged or annoyed. So the happy medium in confidence level is you have to have enough confidence to think your work is good enough for critiquing, but you have to be humble enough to accept that you are there to learn what’s WRONG with your story so you can make it stronger. (And then again you have to have the confidence to believe that you can make it better after the workshop.)

Evan: Seems like a tall order. 🙂

Mur: Hah! Well yeah. I’m sure we all had ego blows at VP, regardless of the state of mind we arrived there with. I know I did. 🙂

Evan: Agreed — I was just astounded at how smart the people were, and how much they knew about all kinds of stuff where I was a total novice. I did want to get to Playing for Keeps, before you fall asleep. 🙂

Mur: Oh I’m with you. Go on. 🙂

Evan: About your villains — I think you did a great job showing them as attractive, but ultimately quite dangerous. In other words, you didn’t fall into the trap of showing them as faux “bad boys” — they were the real thing. Can you talk about how you constructed your villains?

Mur: Well, we’ve known for years in comic books (or any storytelling, really) that villains aren’t all: “LOOKIT ME, I’M EVIL” — and a good villain is someone who believes what they are doing is right, that they are the protags in their own story. And despite what side you fight on, good or evil, that may not change the fact that personally, you’re a charmer. Or a jackass. My villain Clever Jack is a charmer who, incidentally, was treated poorly. My hero, White Lightning, is a jackass who fights crime.

Evan: Exactly right. But I think your take was interesting, because yes, White Lightning is a huge jackass, and yes, Clever Jack is a charmer, but you didn’t take the easy way out. Clever Jack isn’t just a cool tough “bad” guy, he really does some bad things.

Mur: Ah, you mean I didn’t make him “misunderstood”?

Evan: Bingo! Yes. He is who he is.

Mur: Right. I will be playing with more concept of villains soon — people with powers that could be considered “bad” inherently, despite the personality behind them.

Evan: So… the guy who raises zombies from the dead … but wants to fight crime?

Mur: Hah! Something like that, yes. I had an argument with my husband once whether necromancy was inherently evil. There will be a third waver character introduced soon who nobody likes because his nickname is “The Earworm.”

Evan: One of the things that strikes me about the superhero genre is that if anything, it’s actually more self-aware and self-referential than plain old SF. Did you have any trepidation about writing a novel in this genre, and in particular, a novel that is really a commentary about the genre?

Mur: Oh yeah. I was terrified. I started then when there was ONE superhero novel (non-licensed) that I knew of: Nobody Gets The Girl by James Maxey. And it was James’ book that gave me the courage to try out this superhero story that was forming in my head and not stress about finding an artist to try writing comics. I mean, I thought I was writing for a genre that didn’t exist. But now that it’s coming out, there are countless books out. From The Notebooks of Dr. Brain by Minister Faust is a good one.

Evan: Perhaps at this point, there really is critical mass here — you’ve got the movies that are wildly successful, and so now there’s room for novel-style commentaries.

Mur: That’s what I’m hoping! 🙂

Evan: Last question about the construction of the book. What do you think were the largest changes you made in response to feedback from your peers and mentors? What made you go, “aha”?

Mur: Debra Doyle helped a lot — I had too many attacks from too many directions, so in rewrite I had the same number of attacks from fewer directions.

Evan: So, fight blocking.

Mur: Well, one villain brings in, shall we say, a new tool to use against the city. Doyle told me it was too much going on. So I had to change the tool, and bring in said tool much much later. And I think that worked.

Evan: “Too much going on” — I think that’s often the case in all the SFnal genres.

Mur: Yes! So that was a major structural change. Beyond that, it was a lot of surface stuff, one minor character changed sex, one changed race. Minor stuff like that.

Evan: Okay, I’ve got one last question for you. Hal Jordan, Guy Gardner, or Kyle Rayner?

Mur: John Stewart.

Evan: !!

Mur: I’ve totally lost you as a friend, haven’t I?

Evan: I’ll still post this interview. But I’m going to have to do some hard thinking.

Mur’s novel Playing for Keeps goes on sale August 25, 2008.

Why Learning Old Norse > English or French

  • ENGLISH: See Spot. See Spot run. Run, Spot, run!

  • FRENCH: Jean est Ă  Paris. Je voudrais un ticket de mĂ©tro. OĂą est ma tante avec du fromage?

  • OLD NORSE: Ă“láfr heitir konungr. Hann á brand. Heitir brandrinn Tyrfingr. Ăšlf sĂ©r Ă“láfr ok segir: “HĂ©r er Ăşlfr!”. Ă“láfr tekr brandinn ok vegr Ăşlfinn. En hĂ©r er ok ormr. Ă“láfr sĂ©r hann eigi. Ă“láf vegr ormrinn.

BONUS REASON: you get to study Old Norse with Lucy. English or French, not so much.