Friday, December 16, 2022

Manuskript, Again

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.


The good:

Stability:

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:

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.

 

Cross-Platform: 

Manuskript runs equally well on my Mac and my Linux box. It runs adequately on my Raspberry Pi 4, more on that later.

 

Familair Workflow:

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. 


Human-readable files

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.


Open Source:

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. 

 

The editor:

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.

 

The Compiler:

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.

 ---


The Bad.

File Format: 

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.

 

Metadata:

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.

 

Renderer: 

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. 


Versioning:

Manuskript has a versioning system. They recommend right in the instructions that you not turn it on. So I haven't.


Python:

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.


---

Conclusion:

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.

The Ethnicity of Characters, and The New Novels

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.

 


Sunday, September 25, 2022

That New Cat Smell


 Meet Puma Purrman.


Sunny, our other cat, was not doing well as an only cat, in the wake of Shadow's death, so on Saturday, we went to the Castle Rock Dumb Friends facility to look at cats. Puma (then named Uma Purrman) was first on her list, and the volunteer said "Oh, perfect. She's a doll, I've been trying to find a home for her all day.


And she was. 


Affectionate, inquisitive, practically fearless (except for the dogs when they were looking in the window), with impeccable manners (soft paws, no biting). Also sleek and black, as I've come to prefer in cats. So we brought her home. She's about four months old, with great big paws and a very long tail. IT seems likely she's going to be a big kitty.


It's been a very long time since we had a kitten. 13 years or so, not coincidentally the length of Shadow's life, since he was the last kitten we had. Still getting used to that. Next steps, get the new cat inspection done, get her spay stitches out, and get her fully introduced to Sunny, who is very curious about her.


As I told her (like she listened. Cat.) I'm glad she's here. I wish Shadow could be here too, but he can't.


What, you don't talk to your cats?

Sunday, September 11, 2022

Farewell, Shadow

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.

Monday, July 11, 2022

Healthcare

 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.


-JRS

Blog Archive