12/16/2022 08:03pm Blog Entry
So I've written a novel in Manuskript. Sixty-two thousand words later, I think I'm in a position to talk about it a little more authoritatively.
Manuskript is reasonably stable. It crashes from time to time (I had a poorly behaved font, which I think was the underlying cause) and I've yet to lose data, unlike Scrivener, although there was a close call, and I had to renumber all the scenes in The Silent Dust's metadata at one point to fix a crashing corruption of the file. At least I could.
Markdown turns out to be a delight to write in. Not only is it faster than type/select/shape and the styles horror of WYSIWIG editors, it's machine readable. This means that Pandoc can translate my novel into an ebook or typeset it in LaTeX right now, at least, once I get the templates set up. I can also translate the novel into a perfectly acceptable .docx file so the folks in my writing critique group (Armadillos! Yay!) can comment on it easily. Do I have to apply the changes to the novel manually? Yes.
Manuskript runs equally well on my Mac and my Linux box. It runs adequately on my Raspberry Pi 4, more on that later.
If you came from Scrivener, Manuskript will be familiar to you. Folders of folders with scenes in individual documents at the deepest level. Compile the documents to their final format.
If you've used Microsoft Word, or any of the other WYSIWYG editors, you know that getting text out of a word processor format into another format can be very painful. Even Microsoft isn't consistent from their mac .docx files to the windows ones. Libreoffice does better, and Pandoc is fairly brilliant about translating from one format to another, but I'm tired of dealing with silly proprietary formats that hide all the formatting and make such a mess of it. This started in the 1970s with Wordstar, and it's been downhill ever since.
At the very least, you should always be able to grab a copy of Manuskript and open your files. There's no company that decides to turn your favorite word processor into a 'software service', or simply go out of business. I've had both. Done with that.
Best in Breed:
For what it does, Manuskript is the best software out there. It's as good as Scrivener, arguably more stable than Scrivener has been historically, and it runs on all my platforms. And it's free.
The good ideas, poorly implimented:
Side Data: Manuskript has ways to store character sketches, world information, timelines, all kinds of stuff like that. Unfortunately, each one is stored in a different format, and there's no way to make a global set for a series of books. It desperately needs a database behind it, and it hasn't got one.
Text editors are hard. I get it. But for reasons unknown, the Manuskript editor will, after a while, lose its ability to select a point in the text. Inserts are done at the end of the file, and cut and paste doesn't work at all. This is maddening.
Search/Replace: The search function works. It's a new addition, and it's ok. I'd like to be able to select between local (this document) and project-wide, but I can't. There is no replace. The easiest way to do search and replace in Manuskript is to save the file to the un-zipped version of the file format, and open the directory that results in MS Visual Studio Code, which has a brilliant global search and replace. I fear for the metadata every time I do that, however.
Great idea. Gather the files and feed them to Pandoc. But there's no way to feed only one scene to Pandoc, nor can you easily pass flags to Pandoc. If the file format you want to compile to isn't already in the compiler's menu, you're on your own, more or less.
Oh God, the file format. Hidden away in the neat .zip file is a dog's breakfast of markdown files, JSON, YAML, XML, and heaven only knows what else. Metadata is scattered all over the place. You can get at everything, and none of it will make a basic text editor choke, but it's a mess to try and piece things back together if something breaks. Been there, done that.
The metadata system is, to be charitable, not Manuskript's strongest suit. Even the order of chapters or scenes in chapters is stored in metadata, and if that one number gets corrupted, two documents can wind up with the same order number. If they do, one or both of them will disappear.
If you look at how Manuskript works, it's really a web app running through a QT webview. While I get it, this makes it whole lot easier to render markdown as rich text/html, and it handles all the really messy issues of text shaping, layout, font handling, and so on, it also means that you have a titanic binary blob that is almost a whole web browser. This murders performance on Raspberry Pis, and the damn thing isn't stable. One misbehaving font should generate errors, maybe even make a document unreadable. It should not crash the entire application every time you change the margins. News flash, it does.
Manuskript has a versioning system. They recommend right in the instructions that you not turn it on. So I haven't.
I've been fairly vocal in my disdain for Python over the years. Yes, part of this is ignorance—I don't know Python at all. Part of it is that the idea of whitespace in a program having programmatic meaning makes me itch. Yes, I know there are special editors that take care of that for you. My point is it shouldn't exist. The big problems with Python in this case are 1. It's slow. Manuskript is somewhat marginal to use on a Raspberry Pi 4 with 8GiB of memory. This is embarrassing. Python is also very much a second-class citizen on the mac, where Apple dutifully breaks the python environment routinely. Just getting Manuskript running on the mac sometimes takes me hours. I see in the pull requests on the Manuskript github repo that they have someone doing a proper MacOS build with a proper bundle and everything, but it isn't in the distributions yet.
Best in Breed:
There are so many good ideas in Manuskript, and so many markdown editors out there are nicer and more stable but are missing functionality I use every day that it's very frustrating.
I'm starting another novel in Manuskript. It's good enough. It has its foibles, as I've tried to make plain above, but as I've also said, it's the best in breed for novel writing, as far as I'm concerned. Does it frustrate me terribly at times? Yes, yes it does.
Am I dusting off my programming skills to try and write something better? Yesss, but nobody should hold their breath on that ever being finished. I have a language, a gui library, and a database picked. That's it so far.
Mostly what I've accomplished so far is to become much more in tune with how big a project this is, and how hard some parts of it are. Also that I haven't seriously studied code in over 30 years, and GUIs are a pain in the ass to write code for. I've picked on Manuskript a lot in the text above, and I think I'm being fair. That said, I used it anyway, and will continue using it anyway for the foreseeable future.
12/16/2022 07:14pm Blog Entry
For a long time, I've been reluctant to depict people too far from my own cultural/ethnic stock in my novels, for fear of getting the details wrong, and making essentially a 'blackface' character—an unintentionally (in my case) racist parody. I really try not to offend people accidentally with my work, and making a character like that would be a humiliating failure on my part.
An online friend of mine (Dale, lookin' at you here,) who is Black, set me straight. He said he would much rather see someone try and not necessarily get the 'details' right than not see characters who looked like himself at all. The implication was that the 'details' that worry me so much assume a monolithic culture of a given minority that isn't really there.
It's taken me a while to digest this.
But I'm trying. The protagonist of the novel I just finished, The Silent Dust, and indeed the whole series, is Nina Cohen. She's Jewish, born in Romania a very long time ago, and her family came to the United States when she was 14. It's part of the plot, part of the character, so I picked her background for her. As the series is set in a fictional city in Minnesota, however, the question of 'what do all the people around Nina look like?' became critical. In The Silent Dust, I tried to keep an even hand. A lot of the characters came out White. I don't think that's necessarily a problem, given the demographics of Minnesota, but darn it, I want to be fair. I keep thinking about what Dale said.
For Dead of Winter, I've a new method. I took the demographics for St. Paul, Minnesota, and made a chart. For any character I don't have a good reason to make them any given ethnicity, I get out my much-worn D&D percentile dice, and roll against that chart. Now, my book will reflect reality. There's a fifty-one percent chance any given character not already assigned an ethnicity will be White. There's a seven percent chance they'll be mixed-race. Culturally, all the characters I know about so far except Nina herself are Minnesotans, the way I remember them from when I lived there. One of the main characters is Black. One is of mixed ethnicity. Is it a challenge for me? Yes it is. But hey. Without challenges, one does not grow, right?
Does this mean I'm writing again? It does.
The Silent Dust is complete. I'm in the process of my final edit. The Dead of Winter is started. They're paranormal detective stories. Above all, the stories are small. Nobody's saving the world, particularly, it's just a poltergeist in an abandoned human body trying to make a living using her abilities to solve difficult cases. There's a lot of humor involved, but I'm trying to write well constructed mysteries, and "because it's funny" is not a good solution to a mystery, in my opinion. The humor is part of the telling of the story. It doesn't control it.
What about the other projects?
Right now, I'm kind of done with steampunk. I came in late, and it seems like the genre is dying out. Also, the other steampunk stories I've read really haven't been to my taste, so it's kind of hard to want to chase that audience further. Brass and Steel: Inferno's sales were disappointing, to say the least, so there's that, too, and that book took me five years to write. I don't want any more five year missions. that result in epic 'save the world' plots. I lose touch with the characters over that kind of time, and good sequels are practically impossible.
What about cyberpunk?
I still love cyberpunk. I still love reading it, it still fires my imagination, and it's very likely I'll revisit cyberpunk at some point. The LookingGlass world is probably a dead end at this point. We now live in the timeline I was talking about when I wrote it.
10/28/2022 02:38pm Book Review
Bacchanal - Zero stars.
09/25/2022 01:33pm Blog Entry
09/11/2022 05:57pm Blog Entry
Back in July, you may recall I mentioned Shadow wasn't the athlete he was when he was younger.
My concerns turned out to be well founded. His age wasn't really the cause. This became clear this past week or so, when Shadow fairly abruptly stopped grooming himself, practically stopped eating, and started drooling. A lot.
We were hoping this would prove to be a dental issue. Old cats have them, but on close examination by the vet, he had no dental issues visible, and no gag reflex, and his pupils weren't reactive, although he could see. On careful examination, and only the second time in our awesome vet's 20some years of experience, the diagnosis was myasthenia gravis.
Shadow wasn't the easiest cat we've had. (That would be Oreo, who's been gone for some years now.) He was not the brightest cat we've had. (Also Oreo). In fact, Shadow was kind of dumb, and didn't like being picked up or held as an adult. He was soft, with a shiny black almost-long-haired cat with little white spots on his belly. He was big, a 14-16 pounder with truly enormous paws. Not as big as the aforementioned Oreo, who was as long but much broader and at least two pounds heavier, but still, a substantial cat. He was gentle, and he loved to be near us and to cadge pets and scratches, until he'd had his fill. Even then, he wouldn't go far. He loved to talk, in his Siamese voice, and would answer when spoken to. He loved to supervise contractors when he was younger. We have infrared photos from when we had our house scanned to find out where all the cold air was coming in. One image has a cat-shaped hotspot and is titled "Shadow, inspecting the window."
I'm writing a new book, so I was spending a lot of time at my desk where his cat bed still is, and in the last couple months, his favorite thing in the world, after being plied with Temptations Purrrrr.ee cat treat paste, was to lie in his cat bed and wrap his arms my foot while I petted him very lightly with my toes. I had misgivings about his health since July, so I was more than happy to indulge him and spend time with my little furry buddy.
The treatment for myasthenia gravis in cats can arrest the progression of the disease, but not undo the effects. Also, despite decades of experience with cats, we had never successfully pilled Shadow or given him any medication of any kind. We were certain this would shorten his life. Ultimately it didn't. We both agreed that keeping Shadow alive in the state he was in was not good quality of life, so we had him put down on Friday.
I held him while he was being put down, and once the tranquilizers took effect, he seemed to like that. There was no clear point where his life ended, really. He was on a big dose of tranquilizer, so his tongue was hanging out and he'd lost consciousness before the vet gave him the surgical anesthetic. He quietly stopped breathing, and his heart eventually also stopped.
I miss the cat. I miss the conversations I miss having a cat nearby at all times. I miss this cat. Sunny, our remaining cat, is mixed between wondering where her brother has gotten to and taking full advantage of the fact that he's not around, but she's a very different cat, and she's M's, not mine. Although she likes me just fine.
We've been talking about taking on a kitten. It won't be the same, of course. Shadow was more than a generic cat, and can't be replaced, but whoever the new cat turns out to be will fill the generic cat-shaped hole presently in my life. There are aspects of Shadow's personality I truly won't miss, but he was a good kitty, and he was my boy, and I was his human.
So farewell, Shadow. I hope you're in a better place, and I hope you'll still remember who I am when I reach the end of my own time. There are some really nice people there, your buddy Oreo is there, lots of other cats, and even a dog. You'll fit right in.
07/11/2022 06:28pm Blog Entry
If you ever think we don't need a national healthcare system, spend some time in an emergency vet hospital. Idiot cat Shadow apparently biffed a landing and was limping, so we took him in to be checked out. (He's fine, just not the athlete he was when he was younger.) There was a man there with a dog who seemed to have had a stroke, and had no money. They were telling him how to apply for a CareCredit (healthcare credit card) while the dog was suffering. If the idea of having to do that with a (human) family member doesn't leave you disgusted and incensed, then I suspect we have nothing further to discuss. It's bad enough with pets.
05/07/2022 05:26pm Book Review
Ten Gentle Opportunities - Five stars.
Full disclosure: Jeff is an old and dear friend, and I was there when he workshopped parts of this book back in 2011. Also, I read this book when it came out. Why I did not manage to review it then, I have no idea.
In any case, read this book. It's a riot. Jeff isn't known for his comic writing, but he's //good// at it. As others have pointed out, there are three worlds going on here: Stypek's world, where magic works, Brandon Romero's world, where it doesn't (more or less), and the Tooniverse, a strange, Second-Life like universe where AIs socialize when they're not working. The novel starts out as Stypek's story, as he rips off a high level mage by cheating at cards. He escapes through mayhem and magic (Jeff is //good// at mayhem)) into Brandon's world, where his skills as a magic hacker translate quickly into skills at computer hacking... but the focus of the story has changed.
Brandon is primarily concerned with getting a revolutionary copier assembly facility working. Instead of merely moving copiers across the floor in two dimensions during assembly, the new design uses all three dimensions of the assembly space by //throwing// assemblies through the air. If that sounds like a recipe for mayhem, rest assured. It is. Controlling this is Simple Simon, the AI, who is the main character in the Tooniverse.
The story is told in three separate worlds, until all three of those worlds collide, and all our main characters come together as an ensemble cast (some more literally than others) as Stypek's nemesis comes looking for him.
The thing is, Jeff pulls this complex story mechanism off because his characters are believable, even the AIs, who are //strange//. (Jeff is also good at aliens, especially AIs) You care about them, and most of them are likable, though some are gruff in spots. When the final showdown happens (much mayhem) it's not just exciting for mayhem's sake, it's nerve wracking because some of these characters could get grievously hurt or killed, or at least lose their jobs (which for the AIs is essentially the same thing.) All the characters have a role, all of them are in danger, and they all use their unique skills and natures to try to stay alive and protect their friends.
For the TL:DR crowd, here's my review. Read it. It's good. Humor, science fiction, and fantasy.
05/07/2022 05:24pm Book Review
The Girl in the Spider's Web (Millennium, #4) - One star.
Larsson's original books suffered in the second and third from over-explaining Salander. Lagercrantz's abomination takes this to a whole new level of bad, trivializing the dangerous, wounded, strong woman of the original novel (Girl with the Dragon Tattoo) into a second rate comic book character. I couldn't finish it, and I donated the book rather than have it around.
04/11/2020 05:03pm Book Review
Drumlin Circus / On Gossamer Wings - Five stars.
Full Disclosure: I /wrote/ the On Gossamer Wings side of this book, and I was probably no more than the third person to read Drumlin Circus, after Jeff himself, and probably his wife. So I'm not a disinterested party here.
That said, let me talk about Drumlin Circus first. Jeff writes a /tight/ short novel. From the opening fanfare when Simon Kassel is first noticing something odd in the bleachers to the end when, well, everything disintegrates into total, entertaining mayhem, the pacing is tight, the dialogue is snappy, the people interesting, and the ideas. Good heavens the ideas. I'm intimately acquainted with this universe, so it takes me a moment to step back and boggle at the sheer volume of ideas. A blown FTL jump leaves colonists on a completely unknown world on the wrong side of the galaxy. There are machines there that can, if you know a drum pattern to give them, make pretty much anything. And everyone has an agenda, from the Institute to the Grange, to the Tears, to the Circus, to the very things the thingmakers make. Truly boggling, and Jeff pulls it off with aplomb. In the past, I've said Jeff writes old school science fiction, and while I meant that as a compliment, I have to say he pulls off new school just as well. I liked Kassel. I liked Lizzie, the Tear witch who is his on-again off-again girlfriend.I liked her boss, the Mother Exalted. More than that, I felt like i knew them, and I kept wanting to give them faces of people I knew because Jeff has fleshed them out as people so very well. And far from the utopia a planet with mild weather, low population, and replicators seems like it ought to be, Valinor (the Drumlin World) seethes with conflict, as people pursue, contest, and fight over different visions for the future of humanity there. Even if I didn't have a stake in this book. Even if I didn't have a novella of my own on the back side of this book, I'd recommend it highly on the strength of Drumlin Circus alone.
On Gossamer Wings, like I said, is my story, so I can talk a little more freely about its creation. Jeff invited me to write in his world several years ago. It wasn't until the idea for On Gossamer Wings popped into my head, nearly full fledged, and wanted a world where flight did not exist, and where Natalie could invent it without also being a machinist genius and a materials science genius, and frankly more geniuses stacked up than were really believable. The story idea /begged/ to be in Jeff's world. Rural? I can do that. Late 19th century technology? I can do that, albeit with much research. (For pete's sake, I had to research /underwear/ to finish that story. Think about it. Elastic is 20th century science.) Tragic story? That's what I had in mind. And as I sat down to write the first few lines, I thought, "Channel Steinbeck. It's that kind of story." I think it worked quite well. The most challenging parts were Natalie's lines and the ending. Natalie doesn't /speak/. She doesn't have human language at all, really. Working up all the gestures for when she was communicating with someone else and then describing them clearly but without repeating myself was tricky. And the ending, of course, was hard to write. By the end of the story, I /liked/ Natalie. I wanted so badly for her to succeed and live happily ever after. But the story needed, with equal urgency, a different ending than that. An ending nobody wanted, but that every step along the way of the story led to, one link in the chain after the other.
About the book format: This book, like the old Ace Doubles before it, has two stores. Drumlin Circus begins with the front cover - the one without the barcode - and runs to the middle of the book. Flip it over to the back - note the barcode hiding in the cover art - and you'll see completely different cover art, and the /front/ of the second story, On Gossamer Wings, is there. Because English is read left to right, with the book "upside down," the second story is rightside up and reads normally, ending in the middle. The ebook is more conventional, mostly because when we built it, there was no nice way that was well supported by ereaders to give access from the "cover" of the ebook to any particular page inside. So the ebook version is much more like a normal anthology, with only two stories, and combined cover art.