The Week Ending Saturday, October 6th, 2018
Sunday
I didn’t get to properly describe the event we went to last night. A family friend has an annual celebration for Michaelmas, which is a lesser-known Christian festival not celebrated by all denominations. There was a priest there to hold a prayer service, a priest of the Byzantine Catholic rite, as opposed to the Roman Catholic rite that is better-known in America. Grace knows a lot more about this subject than I do, but from my perspective, even though we got there late, it was very cool to observe and participate as well as we could; we had to flip around in a prayer book trying to figure out what was being sung, and it was in a pretty bad key for my voice, so I was struggling to sing outside my range, but we tried. It doesn’t help that I haven’t done any singing for a couple of years and my vocal machinery feels and sounds rusty.
After the service all the kids from several home-schooling families formed a big line and donned a cardboard dragon head and blankets, and became a dragon. Our friend Michael played his mandolin and led the dragon around his farmhouse until his son, dressed as St. Michael, slew it. Then we had a pot-luck dinner in their huge timber barn, an amazing building that dates back to 1900.
Many of the adults there were farmers of one sort or another, and I know next to nothing about that kind of work. Combine that with my general intraversion and it means I mostly hung out with Grace or wandered back and forth sort of listening in to conversations here and there. Our kids played with the other kids and had some kind of mock holy war. I’m not really sure what was going on but they all seemed to have a good time. I always enjoy just being out at the farm in Grass Lake. It’s a beautiful spot.
In the mail Saturday evening I got the car registration sticker for my Element, although we didn’t get the one for Grace’s Tahoe yet. A few days earlier I got a change of address sticker to put on my driver license. And there was also some kind of receipt showing that my voter registration had been changed and indicating that I should get a new card soon. I thought I was going to have to go in to a registrar during business hours so this was a pleasant surprise. So I will keep an eye out for that, and make sure that when I get the card, the online system shows that I am registered where I live, instead of in Saginaw.
I also got a box of one dozen CDs. I ordered them for myself and for the kids. They include some albums that I loved back when I was in high school or so:
- Sweet Dreams (Are Made of This) by Eurythmics
- Speaking in Tongues by Talking Heads
- Fables of the Reconstruction by R. E. M
- The 4-track EP Wide Awake in America by U2
I still want to get my hands on some more old tracks that were originally on U2 vinyl EP singles, “Pride (In the Name of Love)” and “The Unforgettable Fire.” These EPs were never released on CD, until recently, but you can now get them on the bonus disc of the deluxe version of the 25th anniversary edition. I had these tracks, like “Boomerang 1” and “Love Comes Tumbling,” on a cassette, recorded by a friend in high school, and I want to hear them again. I know they aren’t terrific; you can find them on YouTube. But I want them in my library. I wore the oxide off that tape. Those tracks were never released on CD, but you can now get them on the bonus disc of the deluxe version of the 25th anniversary edition of The Unforgettable Fire.
Most of The Unforgettable Fire, the album, did not originally and still does not sound very good to me, aside from the best-known tracks “A Sort of Homecoming,” “Pride (In the Name of Love),” and “Bad.” Listening in 2018, it seems like Eno’s influence is much too heavy on the rest of the tracks and most of them just don’t work well.
- The Singles 81>85 by Depeche Mode
That character between 81 and 85 is supposed to be a “greater than” sign, in case it didn’t work out when translated to whatever electronic device or print document you are looking at. The actual album covers use a > sign. Wikipedia uses a right arrow, “→,” in the title for the 81 to 85 collection, but not the 86 to 98 collection, which I already owned, although that CD’s cover uses the same > sign. So how do you “spell” the “official” title? And what is the authoritative source? Well, Depeche Mode’s web site shows an arrow, so we’ll go with it. And why do I spend so much time trying to get these details right? (Have you met me?)
I got a copy of:
- Disintegration by The Cure
That’s an album that I’ve sadly never heard but which gets great reviews; the albums I knew and loved by The Cure back in my vinyl days were Seventeen Seconds, Faith, and Pornography. Seventeen Seconds and Faith sound so consistent, they seem like they could form one long album. Things get much more aggressive and churning in Pornography. I heard later songs by The Cure when I was a radio disk jockey in college, and the album The Head on the Door came out. But I never really liked the later, more upbeat music. So I’m curious about Disintegration. The kids wanted to hear it because it is name-dropped in the 2015 movie Ant-Man.
I also got:
- The Nightmare Before Christmas (1993 film soundtrack)
I did not notice when I ordered it that the CD cover shown in the eBay listing was for the Italian version. So the CD I got is in Italian. The kids’ reaction to unexpectedly hearing the familiar songs in Italian was so funny, I am not even disappointed. Maybe they’ll learn to sing the songs in Italian. It’s the gift that keeps on giving, too — I asked Veronica to file it on the shelf, and she came to me a while later looking at the CD cover and asking if it should be fild under “Colonna,” “Sonora,” or “Originale.”
For Joshua I got:
- The Best of Simon and Garfunkel by Simon and Garfunkel (2010 Sony collection)
Although all he will play is “The Sound of Silence.” Over. And. Over. That, and “Sweet Dreams” from the Eurythmics CD, and the extended dance remix of “Sweet Dreams.” It’s driving me a little bonkers, to be honest. But I guess I’m glad that they like at least some songs. I hope they will proceed to listening to the whole albums.
I got some new CDs just for myself, too, which I don’t really expect anyone else to enjoy but me:
- Entertainment by Gang of Four
Gang of Four hit me like a freight train when I was about sixteen years old. I think the very first Gang of Four record I bought, at a Big Lots store if I recall correctly because it may have been water-damaged, was a four-song EP with only four tracks, “Outside the Trains Don’t Run on Time,” “He’d Send In the Army,” “It’s Her Factory,” and “Armalite Rifle.” I then found another EP with “To Hell With Poverty,” “Capital (It Fails Us Now),” “History’s Bunk!,” “Cheesburger,” and “What We All Want.” And then, some time later, Entertainment.
I think most of the tracks on those first two vinyl EPs I have on later CD collections, although I would have to look through them to be sure. In any case I found their absolutely uncompromising approach to minimalist music — really a thumb in the eye of the whole notion of rock-and-roll virtuosity, but technically virtuosic in its own way — and anti-war, anti-capitalist lyrics to be incredibly inspiring. It’s clichéd to talk about young punks (or post-punks, in this case) as “angry.” Gang of Four was angry, but righteously angry, and the attitude that still pours from these tracks is contagious, and still inspiring, a protest music for the end of capitalism. Entertainment and the other records I listed here were some of the records that were most formative of my tastes, although not, I should mention, the kind of music I actually play. Trying to cover Gang of Four songs just seems like it would be impossible, doomed to result in a sad, bad parody of the originals. But I’d still like to try someday.
- Arrival (Original Motion Picture Soundtrack) by Jóhann Jóhannson)
This is some of the coolest, most beautiful ambient music I’ve heard in recent years.
- Music Has the Right to Children by Boards of Canada
I haven’t listened yet.
- Nixon in China by John Adams with Libretto by Alice Goodman (Orchestra Of St. Luke’s, Edo De Waart, conducting)
I had already purchased that version of Nixon in China from the iTunes store, but I have been gradually replacing all my lossily-compressed purchased iTunes library tracks with losslessly-compressed tracks ripped from CD. It’s also just much easier for the kids to manage physical CDs. Supposedly with iTunes library sharing on our local network, I could play any of the tracks from my iTunes library using any device and program that can support the DAAP (Digital Audio Access) protocol, even something like an Android phone or laptop running Linux. But in practice, according to Wikipedia
Beginning with iTunes 4.2, Apple introduced authentication to DAAP sharing, meaning that the only clients that could connect to iTunes servers were other instances of iTunes. This was further modified in iTunes 4.5 to use a custom hashing algorithm, rather than the standard MD5 function used previously. Both authentication methods were successfully reverse engineered within months of release.[4]
With iTunes 7.0, a new ‘Client-DAAP-Validation’ header hash is needed when connecting to an iTunes 7.0 server. This does not affect third-party DAAP servers, but all current DAAP clients (including official iTunes before iTunes 7.0) will fail to connect to an iTunes 7.0 server, receiving a ‘403 Forbidden’ HTTP error. The iTunes 7.0 authentication traffic analysis seem to indicate that a certificate exchange is performed to calculate the hash sent in the ‘Client-DAAP-Validation’ header.
As of October 1, 2018, the iTunes 7.0+ DAAP authentication still hasn’t been reverse engineered, so no third-party application can stream from servers running iTunes software (from 7.x, all the way up to and including version 11.x).[5]
Fuckers.
I wasted an hour or so last night trying to get four different Android applications to connect to my iTunes library. iTunes running on Windows on my ThinkPad will do it. As far as I know there’s still no way to get my iPad to do it, even though it is an Apple device. This deliberate breaking of working functionality is one of the reasons I avoid purchasing any music from the iTunes store, and have not listed my current podcast with Apple.
Maybe there’s a third-party program that would serve my iTunes library via a version of DAAP that would actually work?
I’ll have to look into Firefly Media Server… although it doesn’t look too promising, with three forks. Two of them seem to be dead ends, with no updates in at least six years. This one seems to look more promising… possibly?
Today I wasn’t up bright and early. When I did get up, I made bacon and blueberry pancakes and they weren’t coming out well — it seemed like I just couldn’t get the temperature of our big pan right. So they’d be burned on the outside and liquid on the inside. After eating I felt the need for a nap, so I took a brief nap, and then just didn’t want to do anything, so I wasted several hours putzing around on Twitter until I drained my phone battery. Grace ran errands. When she got back we had a brief call with our realtor, who is still considering renting our old house in Saginaw and trying to write up a document proposing terms. I was twenty minutes late picking up Veronica, unfortunately. I stopped by Barnes and Noble to see if I could pick up a copy of A Tree Grows in Brooklyn by Betty Smith — she needs to read it for a book club, and very soon. But they closed at 8:00. I thought they were open until 9:00.
When we got home Grace was roasting a chicken but it was not going to be done for some time, so we decided to have sandwiches for dinner. While the chicken was roasting and we struggled to corral the children into getting the table set for dinner, she made some mayonnaise. So we had salad and sandwiches for dinner but it took so long to get everything ready that we could have eaten the chicken.
I posted a note on our podcast blog saying we just weren’t going to get a show out. This is frustrating and disappointing but we just couldn’t get it done.
When I went downstairs I tried to check my e-mail, and discovered that since Dreamhost had completed a server migration for e-mail users, my old account settings would no longer work. So I had to mess with that for a while. The Mac Mail application apparently couldn’t recover after changing account settings; it locked up and I had to kill it and restart it. This also means I have to help Grace change her e-mail client configuration. Fortunately I think Webmail still works, using our “vanity” site. I saw a note that Dreamhost advises people not to use their own web site names for Webmail, but to use webmail.dreamhost.com instead. This is the first I’ve heard of this, despite having filed numerous tickets with Dreamhost technical support about Webmail problems over the past few months.
…brief intermission while I stomp around the room and rain a shower of curses on DreamHost…
The kids managed to knock down and break a wooden wall hanging, a sculpture of a bird that our friend Joy put up. It was an old and fragile piece of wood, and it had broken in two places. Grace had asked the kids not to attempt to glue it without talking to me. Yesterday Sam ignored this and tried to glue it himself, and botched it up and made a mess. He used a clear Gorilla glue that is supposed to be set with water, rather than a white glue. He not only ignored Grace’s instructions to consult with me, but didn’t read the instructions on the bottle. The clear glue unfortunately doesn’t clean up with water, and he got it all over the sculpture. There really was no salvaging it, unfortunately; I’m not even sure what kind of solvent would clean it up. It was then all over my hands. And now there is some on my laptop.
When you have broken wood ends, you only really have one chance to glue the ends together cleanly, or the broken wood fibers won’t fit back together. If you have two breaks, you should repair them one at a time, rather than try to clamp two adjacent breaks, which are very likely to shift. The wood was brittle and old, so there was a good chance I wouldn’t have been to successfully glue it.
So I guess Sam was upset, because he had been hoping that he could fix it himself. I think he could use some experience doing some beginner wood shop projects. At least then he would start to get a feel for what he doesn’t know how to do.
After putting my laptop away, I discovered that the sheets and pillowcases and mattress pads I had put on the bed just stank. The sheets had come out of the washer and dryer all wadded up, with the mattress pads wrapped up inside the twisted-up sheets. They seemed dry but they must have been wet for a long time. So we wound up angrily stripping the bed and angrily sleeping on the bare mattress.
They we found out that one of the kids had had an accident in his bed, too.
We didn’t get much else done, and now it is 1:23 a.m. September has ended. It’s time to go to sleep. I’m going to be very tired in the morning but at least I’ll have some cool new music to listen to at work tomorrow. And maybe in a day or two we’ll be closer to working out a plan for the old house.
Monday
A few minutes after we had turned off the lights and were starting to fall asleep — about 2:00 a.m. — we heard the beep from our oven that indicates it has reached the requested temperature. I could not ignore this so I got up to go see who was using the oven. Our housemate or or housemate’s boyfriend had apparently put a McDonald’s pie and a frozen chicken pot pie in the oven, right on the wire rack, and turned on the oven. This is after two consecutive weekends in which I’ve had to spend hours of my limited free time scrubbing out the inside of the oven due to spills. Both of these things can and will boil over and drip. But the oven had just come up to temperature, so they had not started dripping yet. I angrily put them on a shit piss fuck cunt cocksucker motherfucker tits baking pan like we have asked them to use, over and over and over again.
This morning when I got up and out, the oven was off, the baking pan was still in the oven, the apple pie was gone, and the pot pie was a charred mess burnt all over the baking pan.
Grace had left the whole roasted chicken in the cast-iron dutch oven sitting on the stove overnight and I don’t know what to think about that. Especially since that, given the oven was on for at least a few hours, the extra heat from the oven was slightly warming the pots and pans on top of the stove. I hope we don’t have to throw out a whole roast chicken and vegetables.
It was strangely warm in the house last night and I need to check that our housemate has not turned the heat on. We have not turned the heat on and we have told her that we’re not ready to turn the heat on, because I need to get someone out to look at the system, which was leaking water all over the floor in the utility room. I want a couple of valves to be inspected and repaired or replaced, and the system probably needs to be flushed and refilled with water before we consider turning it on.
I don’t know what might happen if someone turned the system on while the radiator pipes didn’t have enough water in them, due to the leakage I’ve mentioned, but I’m pretty sure it can’t be good.
On my way out the door, I put the registration sticker on my license plate. So I shouldn’t be police-bait. We’re still waiting on the sticker for Grace’s car, though.
For breakfast I stopped at the Coffee House Creamery on Jackson Road and had a latte with almond milk, and a toasted cinnamon bagel with peanut butter. I am fixating on that free coffee as one good thing that happened today. See, there’s a good thing. All the rest might be going to hell and falling apart and outside of my control, but I got a free coffee drink.
On my lunch break, I went to Nicola’s books to pick up a copy of A Tree Grows in Brooklyn for Grace. I was happy to find that they had a copy in stock, because she needs one immediately. I had another bagel for lunch, an egg salad sandwich on a toasted asiago bagel with lettuce and tomato at Barry Bagels. Sandwiches last night, bagels today — I’ve got to lay off the carbs. I’ve been blowing up like Violet Beauregarde over the last few months, eating so much bread.
Formats, Formats, Formats
I’m trying to figure out a clean and simple way to use pandoc to convert these blog posts to… well, some downstream file format that I can use to generate a nice print version.
I don’t want to edit the downstream format. Or, if I must edit it, I want to edit it as little as possible. For one thing, I’ve got 40 separate Markdown files (and there will be 52 when I’m done with the year). I use them to generate HTML for the blog posts. If I make a correction in any of these upstream files — and I’m constantly making corrections as I edit this text, because it is hundreds of thousands of words long and there are a lot of things to fix, as I’m constantly noticing errors — I’ll want to re-generate the downstream file. When I do that, any changes I made manually to the downstream file will be overwritten, and I’ll have to make them again.
Basically, I want my writing workflow to look like a programming workflow. I might even use make. There should be one “canonical” version of the text, and then, downstream formats. The computer should handle the tedious work of generating all the derived presentation formats.
If possible, I don’t want to have to manually tag index entries in the downstream format. I’d like to be able to use some kind of tagging in the source Markdown file for all the index entries. Then I can just use something like OpenOffice to actually insert the index itself.
I’d also like to be able to control page breaks, in a specific way. I want page breaks between Markdown files. Specifically, I want page breaks before the content from each Markdown file starts, and these page breaks should make it so each blog post starts at the top of the next odd-numbered — that is, right-hand — page. Book chapters are usually formatted this way.
These things don’t seem like they should be that difficult. But the Markdown file format was not designed to encode index entries or page breaks, and the .docx and .odt each have limitations and make some things weirdly hard and complicated.
The documentation for pandoc shows how to insert raw XML data into downstream formats. can You insert a code block, and inside the code block, specify a format in brackets representing the downstream target format. If you’re not generating that target format, the contents of the code block are ignored. That’s great, because it means I can add stuff to my source files that will be included when I generate, say, an .odt file, but won’t be included when I generate some other format, like HTML. There’s an example that shows how to insert a page break into a downstream Microsoft Word .docx file. The page breaks aren’t included if you translate to some other format. I verified that this works, but the tags are highly specific to the .docx format, and it seems like other converters don’t work so well.
The example just inserts a basic page break, to make the text start at the top of the next page. It doesn’t do what I want with odd pages. In fact, it’s not clear to me that Microsoft Word can do what I want with page breaks, which seems crazy, so maybe I just haven’t found the trick yet.
OpenOffice seems to be able to handle even and odd (left and right) page breaks, but when I dig into the .odt file format, the specification specifically says it doesn’t support odd and even page breaks. That’s strange.
This also seems like something I ought to be able to do with styles. So, I’ve modified the default “Heading 1” style in a new OpenOffice Writer document, so that the modified style always includes a page break tied to a right-hand page. I’ve supposedly saved this as a template, and supposedly set this template as the default template. But this doesn’t seem to mean that these styles will be applied to a pandoc-generated .odt file when I open it. There’s also apparently a standard template that pandoc uses when it generates an .odt file. And supposedly a way to override it. I can’t figure out where the standard template lives. There’s a way to get pandoc to dump out the template. I exported that to a file and tried to get pandoc to use it, but it gave me an error about an invalid character, so some detail was wrong, there. The pandoc templates are on Github, so I downloaded the default template and tried using that. That seems to work. But the template format doesn’t seem to support changing paragraph styles. I tried making a simple .odt file and setting the paragraph style, and then looking at the generated files inside the .odt container, which is really a .zip file. When you do that, the styles file is modified, not the data file. But the pandoc template doesn’t have styles in it.
It seems like I have to find a way to either modify the template to do what I want, or get the template to use the styles that will do what I want.
I used to be fairly expert at Microsoft Word styles; I was a technical writer for a big documentation project. But that was .doc, not .docx. And as a once-upon-a-time web developer and Java developer I know a little about XML. But I never was really a front-end guy, or rather, I was a web developer before there really were separate front-end developers, and before CSS and all that fun. So I’ve never become expert on style sheets and especially not the ways in which these XML formats were adopted into word processors.
It’s a lot to figure out all at once, so I’ve been trying to create very simple examples and look at the generated files. But between templates and styles and other somewhat hidden and obscured behavior, it’s quite confusing. I did not want to have to take days and days to develop expertise in buried and semi-documented file formats. But I guess that’s my fate now, unless I want to try to become an expert in TeX instead.
On the pandoc-discuss Google Group, a kind stranger sent me an example piece of Lua filter code that can insert index entries into .docx files despite the complex formatting required. So maybe I need to go with .docx and automatic generation of index entries, because manually fixing page breaks is a lot easier than manually inserting index entries. Or maybe I can adapt his example to .odt. The pandoc command-line tool has a built-in Lua interpreter and Lua code can operate on the intermediate data structures it creates when transforming text from one format to the next. So just about any transformation should be possible.
I could consider migrating the whole year’s worth of writing from Markdown into some other format. But I don’t know what that format would be. And I’m really, really used to writing in Markdown.
Basically, if I’m going to turn this into some kind of book, I’m going to need all the help I can get, to make the workflow easier. I don’t want to have to manually mark up hundreds of index entries, when making any correction to the upstream Markdown files will result in regenerating the .docx or .odt files and wiping out all that work. I don’t want to have to manually adjust each page break in a 52-part document that is already over 300,000 words, especially since any edit might change the page break locations. So… I have to find some kind of solution. My formatting requirements like they should be all that hard.
Maybe the right way really would be to do all this in LaTex, the way real academic publishers do it. I should at least look into that possibility. But I keenly feel how every bit of free time I spend trying to get my tools working the way I want is time I can’t spend actually writing and editing. It’s all well and good to have to build one’s own lightsaber — when one is a young Jedi. Jedi knights don’t have day jobs and gaggles of children!
Tuesday
I got home quite late. It was very foggy when I left the office, so I decided to drive on surface streets through downtown. That seems safer when it’s foggy or icy, since traffic is moving quite a bit slower. But it also takes a lot longer.
When I got home the kitchen was quite trashed, and so was the family room, and the dining table. It was noise and chaos and I realized that I was immediately getting very frustrated and bothered by all this, probably in part because I was long overdue for a meal. I usually walk in the house with my hands full — with a bag and some papers and an armload of mail. I can’t put down my bag and go through the mail because there is literally no clean and dry surface available to put things down on, I find that maddening. I wanted to put down Grace’s book and open a package from Powell’s books and on two dining tables there was barely one spot where this was possible. And there were so many toys and other things on the floor that I couldn’t even walk around our family room.
The trash and recycling had not been taken out. Dinner was underway, but getting the kids to finish the basic chores like setting the table was taking forever. We ate very late. I think it was almost eleven. We had roast chicken and salad and an instant pot of rice, and some vegetables that had spent too long in the pot. Our housemate had made beans flavored with chili pepper. But the same thing happened as always seems to happen when she makes food from scratch — she didn’t like the results and wouldn’t eat it. She’s always talking about how she loves spicy food, but I guess the beans were too spicy for her. Grace and I didn’t find them too spicy. The kids did, but they’re kids.
I read Benjamin a story but the other kids still had chores. No one had run the dishwasher during the day, so it was still full of dirty dishes after the meal, and so we couldn’t load it. So the dish situation was backed up. Our housemate and the kids did get the kitchen situation improved a bit, but with a lot of work to do today. The cast iron dutch oven had sat wet for most of the day, and you can’t do that with cast iron. The interior is covered with rust. This will not really harm it; it’s superficial. But it takes a lot of labor to get it back into shape. To be specific, it will probably take a lot of my labor to get it back into shape.
I think our housemate eventually wound up scrubbing the burnt pot pie gunk off the baking pan, although it was her boyfriend who left it in the oven all night until it was a blackened mess.
Elanor was up way too late, and had a shrieking tantrum while Grace tried to get ready for bed. It was very late again, about 2:00 a.m. Grace was in the bathroom just a few feet away getting ready — whe was even visible, with the bathroom door standing open. But Elanor lost her baby mind and went into frightening full-on rage mode. She kept trying to crawl off the bed, but she was too worked up to do it the right way, feet-first. So after a couple of hard landings, I tried to comfort her and keep her on the bed, but she was having none of it. I thought we might have to call an exorcist. Jesus. I half-expected her to spray pea soup in my face. She held out until Grace came to bed. Then it was all over pretty quickly.
I have tried to get her used to the idea that sometimes if mom is not available, she’ll have to settle for dad. She and I had a good time at the farm on Sunday — I was carrying her around up in the air, and she was giggling and having a great time. But yesterday I was the antichrist, apparently, as far as she was concerned. I know I shouldn’t take it personally, when one of my kids wants mom and no one else. But it’s one of those times when parenting seems not just unrewarding, but like some kind of aversion therapy.
I got two books in the mail last night. I had ordered them from two Powell’s locations, but they must consolidate them and ship from one place, since they both came in the same package. They were two Michael Moorcock books, in the recent Michael Moorcock Collection Gollancz editions: Traveling to Utopia and The Nomad of Time.
I didn’t get any reading time to speak of last night, but this morning I had a very rushed breakfast at Harvest Moon Café and read a few pages of The Wrecks of Time, the first of three novels in Traveling to Utopia. So far it’s dated and sexist, but also quite funny.
Grace made a homemade shampoo yesterday, which I tried out this morning, so we’ll see how that works out.
More Formatting
So, I’m trying a very simple experiment. I created a new OpenOffice Writer file, with three paragraphs in it. Each paragraph just has one word in it. So the file just has three words. I modified the second paragraph with the Format/Paragraph dialog, and checked the checkbox to insert a break, and chose Type Page and Position Before from the drop-down menus, and checked the With Page Style checkbox, and chose Right Page from the drop-down menu, leaving the Page Number at zero. This is about the simplest example I can come up with.
There’s now a page break before the second paragraph. I save my file, calling it test_para_formatting.odt, and quit OpenOffice Writer. I haven’t touched a template or a style. Then I use 7-Zip to unzip the .odt file (it’s really a .zip file, containing a folder full of seven files and three folders, one of which contains nine more folders, and so on). But the interesting files are content.xml and styles.xml.
The actual relevant contents of content.xml is an unformatted mess, but if I format it as I see fit, I get this:
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<text:p text:style-name="Standard">one</text:p>
<text:p text:style-name="P1">two</text:p>
<text:p text:style-name="Standard">three</text:p>
</office:text>
</office:body>
I’m not sure what’s up with all that, but the second paragraph is represented by:
<text:p text:style-name="P1">two</text:p>
I never explicitly gave it a style, but apparently OpenOffice Writer gave it a style, named “P1.” But if I look in styles.xml I don’t see anything called “P1.” It’s actually in content.xml in a section called office:automatic-styles, right before office:body. The automatic styles section looks like this:
<office:automatic-styles>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="Right_20_Page">
<style:paragraph-properties style:page-number="auto"/>
</style:style>
</office:automatic-styles>
That doesn’t have anything about page breaks. But it refers to “Right_20_Page.” That seems to be defined in styles.xml as a master style:
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="Mpm1"/>
<style:master-page style:name="Right_20_Page" style:display-name="Right Page" style:page-layout-name="Mpm2"/>
</office:master-styles>
Which, in turn, seems to refer to a page layout name “Mpm2.” That seems to be defined as:
<style:page-layout style:name="Mpm2" style:page-usage="right">
<style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
<style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties>
<style:header-style/>
<style:footer-style/>
</style:page-layout>
That seems to be the bottom of this rabbit hole. There’s nothing at all about in any of this that uses the break-before property which is what I thought I needed to use. And I got myself quite confused yesterday since the OpenDocument-v1.2 specification says “In the OpenDocument XSL compatible namespace, the fo:break-before attribute does not support even-page, inherit and odd-page values.” It looks like OpenOffice Writer uses style:page-usage=“right” instead of the break-before attribute.
So now I’m wondering how I get my generated .odt files to use this page-usage attribute for paragraphs that have the Heading 1 style. Can I modify the default Heading 1 style to have this attribute?
I thought I did it, by modifying the Heading 1 style in a new blank document, saving it as a template, and then configuring OpenOffice Writer to use that file as custom template. When I launch OpenOffice Writer, or create a new blank document, I get that style for Heading 1, so the page breaks are just the way I want them. But there’s always a catch. When I use pandoc to generate an .odt file, and open that, the Heading 1 style doesn’t have that “right page” configuration.
Maybe it’s overridden somewhere?
If I unzip the generated .odt file, what do I see?
In styles.xml it does appear that there is a style with the display-name Heading 1. Maybe that’s overriding the Heading 1 style from the default template? It looks like this:
<style:style style:name="Heading_20_1"
style:display-name="Heading 1" style:family="paragraph"
style:parent-style-name="Heading"
style:next-style-name="Text_20_body"
style:default-outline-level="1" style:class="text">
<style:text-properties fo:font-size="115%"
fo:font-weight="bold" style:font-size-asian="115%"
style:font-weight-asian="bold" style:font-size-complex="115%"
style:font-weight-complex="bold" />
</style:style>
Hmmm. What happens if I try inserting that style:page-usage attribute?
style:page-usage="right"
and saving the styles.xml file, and zipping the folder back up, renaming it with the suffix .odt, and opening it with OpenOffice Writer again?
Hmmm. I get a warning message about how the file is corrupt and shouldn’t be trusted. There’s an option to let OpenOffice repair the file, but when I have it do that, it says it can’t repair the file. I guess it’s good that OpenOffice is looking our for me, or something.
Is this something I can fix by changing the template that pandoc uses to generate the .odt file? The standard one is here. But when I look at that, I see a number of styles that I think are for tables of contents, not headings. And I’m not even sure those are making it into the generated .docx file.
So let’s set this problem aside for now and see if I can do anything with generating index entries.
Generating Index Entries
It’s possible to write filter code in Lua and use it directly from pandoc without having to install any other language run-time environments or development tools. That’s a really cool feature. Let’s see if I can make it do something. On the pandoc-discuss list a user gave me some sample code that will do this for .docx files. But I want to make it work with .odt files, so I’ll start by creating a simple example of an OpenOffice Writer file with an index entry. If I select a word and add an index entry for that word, it looks like this:
<text:alphabetical-index-mark-start text:id="IMark165009928"/>two<text:alphabetical-index-mark-end text:id="IMark165009928"/>
That seems reasonably simple, with the exception of the text:id=“IMark165009928” bit. The [spec] indicates that there are some other optional attributes like text:key1 and text:main-entry, but I’m going to ignore those for now. The spec doesn’t say how the text:id attribute is interpreted; it just says it’s a string. I’m going to assume it should be unique. It looks like maybe I need something like a UUID.
After quite of bit of trial-and-error, I’ve got a Lua filter that looks like this:
-- A very simple UUID generator for producing numbers for index entries. We might need something better.
local random = math.random
local function uuid()
local template ='xxxxxyyyyy'
return string.gsub(template, '[xy]', function (c)
local v = (c == 'x') and random(0, 0xf) or random(8, 0xb)
return string.format('%x', v)
end)
end
function handle_span(span)
local spanType = span.classes[1]
if spanType == "i" then
if FORMAT == 'odt' then
local id_str = uuid()
local open_str = '<text:alphabetical-index-mark-start text:id=\"' .. id_str .. '\" />'
local close_str = '<text:alphabetical-index-mark-end text:id=\"' .. id_str .. '\" />'
return { pandoc.RawInline('opendocument', open_str .. pandoc.utils.stringify(span.content) .. close_str) }
else
return pandoc.Str(pandoc.utils.stringify(span.content))
end
end
end
local FILTER = {
{Span = handle_span}
}
return FILTER
And this seems to do the right thing. In my raw Markdown I can insert a link element like so:
[Lego Ninjago]{.i}
And the .odt will contain:
<text:alphabetical-index-mark-start text:id="093c999bba" />Lego Ninjago<text:alphabetical-index-mark-end text:id="093c999bba" />
But if I am not generating an .odt file, I’ll get a span like this:
<span class="i">Lego Ninjago</span>
Which seems to appear in rendered HTML as just ordinary text. So there’s one thing working!
Wednesday
During the day I received a scanned document from our realtor — a rough draft of a lease agreement. Really, it was a purchase agreement marked up with hand-written notes, but it should serve as a starting point for something we can give to our attorney, and say “here, draft this into a real lease agreement.” So Grace and I are pondering it now and wondering if we can make this work out.
After work on Tuesday I went to Costco for a few things: a big package of paper towels, a pot pie for dinner on Wednesday night, a couple of bags of oranges (the bananas weren’t ripe), some asparagus, more celery for Grace to juice, and some cookies for dessert. I got out the door for $82.66, which seems to me like evidence that we’re getting better and managing our grocery purchases and spreading them across two trips.
When I got home we had two checks from Liberty Mutual. So we have been reimbursed for the reversed “depreciation” of the amount they paid us for the damage to the family room ceiling. Like I’ve mentioned, Grace understands how that workds and I really don’t. What I understand, though, is that they were supposed to pay us this money many weeks ago and it took many weeks of calls and e-mail messages to eventually shake it loose.
For dinner we had lamb steaks and salad and cookies, and then things got busy with cleanup. The cookies were Danish waffle cookies, not too sweet, and the kids only ate half of them, leaving some more for their breakfast Wednesday morning.
The bedtime story was another few pages of the chapter called “The Council of Elrond,” from The Fellowship of the Ring. I am hoping we’ll be able to finish Fellowship by the end of the year, but this is a hard chapter to get through. It’s fascinating to me, but I think maybe it doesn’t engage the kids very much because there isn’t much action. There’s more action coming up, though, including a number of scenes that should be very recognizable from the movie, like the events in Lorien and Moria. But Veronica has apparently decided to boycott the stories altogether, Sam has been somewhat indifferent to them lately, and Joshua wants to read the stories himself — last night he had a meltdown because I wouldn’t let him read another story after we were done. So I have to plan some story time where he gets to read. Grace reminded me that he’s just trying to do what I do. I’ve told him he needs to work on slowing down and speaking clearly, and he actually has been doing that. So he should get to do some reading.
I had breakfast Wednesday morning at Harvest Moon Café again and this time I had gotten out early enough that I was able to finish my coffee and take a moment’s peace.
Blogging pretty much got away from me yesterday. I worked a little bit on some Lua code to process links in my Markdown documents. I have gotten a simple form of indexing working, but to be really useful the indexing needs a few more features. I’d like to be able to specify the text:main-entry attribute so that I can index variants of existing index entries. There are also things I’d like to be able to do with links; I’d like each Markdown document to have an index of links at the end that shows the actual web link. When I generate HTML, the links will be live. But when I generate a format designed to wind up in print form, the reader will just see a highlighted word or words where the hyperlink is; I’d like the reader to be able to search a list and find the actual link that he or she can type in if desired.
There’s a Lua example that shows how to extract the links from a Pandoc document and use a Lua table to has them and keep a count of the number of times each link is referenced. I want to do something more elaborate than that. I’m not entirely sure how I want the finished product to look. Maybe in the .odt format, the links would get a link number, or something like that. And then in a separate table at the end of the document they’d be arranged by number; each table row would show the link text and the URL. Although some URLs are not very convenient for printing — they can be very long, for example. So this is the kind of thing that might require some manual fix-up.
During my lunch hour I went to Meijer and deposited the checks from Liberty Mutual in the Huntington Bank ATM, and picked up a few items for lunches. I bought two Corelle bowls for cooking ramen noodles in the microwave — I don’t want to use paper bowls for this purpose. I also picked up some frozen burritos and several chocolate bars.
There’s a brand out now called Tony’s Chocolonely which claims to make chocolate from a supply chain that is entirely free of slave labor. I bought six of their brightly-colored packaged bars: two each of “extra dark chocolate 70%,” “dark almond sea salt 51%,” and “milk caramel sea salt.” These are huge bars: 6 ounces. I one of each kind home to try after dinner.
Why “Chocolonely?” According to their web site:
And because he felt like he was the only guy in the chocolate industry that cared about eradicating slavery from the industry, he named his chocolate “Chocolonely”. Get it? The chocolate industry was a lonely place for 100% slave free crusaders!
Well, OK then.
At work I was able to work with a couple of co-workers to test a LabVIEW application that I worked on a while back. I was happy to find that it mostly works. There was a problem with one of the test voltages, but it my co-worker Patrick opened up the homemade test fixture and tightened up some screw terminals. That fixed the problem, so it seems like that really was a hardware problem. There were some other minor bugs, having to do with failing to read the current state of front panel controls in event handlers. I created some new property nodes, which read values from the controls, and that fixed the problem. I still consider myself to be a bit unschooled in LabVIEW, and it remains sometimes inscrutably idiosyncratic to me.
We had a Costco pot pie for dinner, and after dinner we tried the dark almond sea salt and milk caramel sea salt chocolate bars.
Grace and I aren’t really fans of milk chocolate, but the milk chocolate tasted fine; it wasn’t filled with caramel, but rather flavored with “crunchy caramel” — what I’d actually call something more like a “toffee crunch” or “toffee crisp” bar. Our milk chocolate fans liked this one. Grace and I enjoyed the dark almond bar with sea salt much more. It reminded me of what a Hershey’s bar with almonds used to taste like, before their chocolate formulation went to hell. I’d rate this bar highly. There is one thing that is a little strange about the Tony’s bars: instead of being scored in a grid, so they can be easily broken up into consistently-sized chunks, they are molded into more arty geometric shapes with angles and curves. You can still break them up, but the pieces won’t be of consistent sizes and shapes.
According to their web site:
To us it doesn’t make sense for chocolate bars to be divided into chunks of equal sizes when there is so much inequality in the chocolate industry! The unevenly sized chunks of our 6oz bars are a palatable way of reminding our choco friends that the profits in the chocolate industry are unfairly divided.
Well, OK then.
After eating these huge bars, even with our whole family, everyone was full up on chocolate, so we left the 70% dark chocolate bar in the cupboard for Grace and the kids to taste on Thursday. 70% is getting into what I consider to be dark chocolate, although when I want a more serious hit of choclate for its mood-enhancing properties, I eat a few squares of 85%. Recently I’ve been enjoying Pascha brand organic 85% a lot.
We’re in a kind of strange purgatory between summer and fall; last night, we had to turn the air conditioning back on. It was cool outside, but not cool enough to keep heat from the oven from building up in the house. But then tonight it’s supposed to be in the forties.
Thursday
I’m a grown-ass man, allegedly, but with all that pot pie and chocolate last night, I managed to give myself a tummyache. My stomach was churning for hours. I spent some time talking about money issues and the proposed lease agreement for the old house, and that certainly didn’t help.
Despite a pretty promising start to the evening, it wasn’t a good night for sleeping, and I was quite late getting into work. Sometime during the night, Benjamin got in our bed. I didn’t notice until it was nearly light out and he was wiggling around. Grace woke up in a puddle because apparently he had an accident during the night. Our foam mattress from Costco is very far from waterproof. I don’t know if we’ll be able to get it dried out and deodorized. Elanor also had a bit of a difficult night and woke us up several times grousing and complaining. This was all not what we hoped when we got to bed last night — and we actually got to bed before midnight.
I read Benjamin a brief story. I’ve been reading him Little Critter storybooks by Mercer Mayer some nights, but I have not been mentioning these in the blog. After that Joshua read a few chapters from George’s Marvelous Medicine by Roald Dahl. I have not read this book before and while I am finding it funny, I am also finding it quite disturbing. The portrayal of George’s grandmother is really pretty horrifying, and seems quite ageist and misogynistic to me.
After the story I had just a little quiet time available to read a few more pages from The Wrecks of Time. So far I am finding this obviously dated science fiction novel to be really enjoyable — the story is flying along and this version of Moorcock’s multiverse cosmology is explained quickly in passing, without bogging down the story in infodumps. I swear that there’s also a shout-out to J. G. Ballard’s The Crystal World, as one of the variant earths, Earth 13, has turned to crystal. (It looks like this book was first published as a book in 1967, but serialized in 1965 and 1966; The Crystal World appeared in 1966, although Ballard wrote about a similar idea in his 1964 story “The Illuminated Man.” Come to think of it, maybe the influence went the other way?)
On my way out this morning I noticed more bits of trash in the yard — sauce cups from takeout food, papers, etc. Down at the end of our driveway, by Crane Road, I saw blowing around a page from the children’s book Don’t Let the Pigeon Drive the Bus. I wonder if some of this might have been scattered when the trash was picked up? But we certainly don’t have that excuse for the stuff in our yard. So I have asked Grace to give the kids a trash bag and tell them to make a careful walking inspection of our yard and our driveway down to and including part of Crane Road.
I had tea and pop-tarts for breakfast at the office. I tasted the Tony’s 70% dark chocolate bar at lunch time. It’s OK, but the texture is a little bit chalky. It’s not going to replace the Pascha bar in my affections anytime soon. If Tony’s releases a darker bar, I’ll be happy to taste it. So for now I can recommend the 51% dark almond bar with sea salt — I thought that was very good. The others were decent, but not great.
We had a rough money week. We spent more than usual on gas, due to some long drives, and on various other small things like hair care products: small things, but they add up. It also threw us off when I missed getting to Costco Friday night and had to run out to a few other places where some of our usual items like salad were at least twice as expensive per ounce. Big Costco packages really are saving us a non-trivial amount of money each week. Grace and I are now looking at this sum from Liberty Mutual and trying to figure out if we can spend some of it on things we’ve been putting off for a year or more: for example, getting our fireplaces inspected and getting a cord of wood delivered, so we can have regular fires this winter. I also want to set aside a little money now for holiday meals. And we may need another car seat. Things like that will eat up that extra money pretty quick.
Doctor Who series 11 will premiere in just a few days! It will be a short season, only ten episodes. I have purchased a “season pass” on the iTunes store, so we will probably watch the first one Monday night, assuming the kids can get through their chores.
Grace and I are considering going to see the Chapo Trap House crew next Thursday night in Detroit. Tickets are $25.00.
I was contemplating taking three kids to see They Might Be Giants on October 24th — but it looks like it is a 14-and-up show, strangely. None of the kids will be old enough, although Veronica will be just a few days from her fourteenth birthday, and I’d consider that close enough. Tickets are $40.00 each… I’m going to have to give that some serious thought. I’m kind of pissed — I thought this might be a great opportunity to take three of the kids to their first rock show.
The Shin Ramyun “Gourmet Spicy” noodles from Costco were in fact spicy enough to make my nose run!
Friday
Last night we had a pretty basic end-of-week meal: bagged salad, scrambled eggs, leftover beans, and one of the Tony’s 70% dark chocolate bars. Grace needed to get herself and the kids up and out early, so we set our alarms for 6:00 a.m. and did our best to get to bed before midnight. We came pretty close, although the kids were not fully quiet until a bit later.
Grace got up and out with everyone by about 8:00, which was no small achievement. I had a little quiet time to read and so I read a few more chapters in The Wrecks of Time. Previously I mentioned a shout-out to J. G. Ballard’s The Crystal World. Reading more, I think that Moorcock must have been reading a lot of Ballard at the time, because his characters are very Ballardian, especially in the way they lecture each other and show very flat affects. I also mentioned the sexism in this story. That has only expanded one of the ways that Faustaff knows that a female character is not a human is because, supposedly, all women involuntarily respond to him with sexual arousal. And so when he meets one who doesn’t, she’s clearly not human — although she invites him to have sex anyway. Elsewhere, the female characters seem to do little other than make the men sandwiches. This is really far from unusual in science fiction written by men in the 1960s, and so I’m pretty used to just grimacing at it and continuing on to find out what happens in the story, but I wouldn’t blame you a bit if you found it intolerable.
There are some amusing little puzzles to work out. Several characters have last names that start with “O” — Orelli and Ogg, who formerly worked for Faustaff but are now “salvagers.” I think we first meet these characters on Earth-15. “O” is the fifteenth letter of the alphabet. Make of that what you will.
The FerretBrain article on these lesser-known Moorcock books suggest that this novel, originally called The Rituals of Infinity, is one of his better books; it recommends this one, along with The Winds of Limbo (originally known as The Fireclown), The Shores of Death (originally known as The Twilight Man), and The Eternal Champion (“the novel, not the omnibus”). In the recent Gollancz Michael Moorcock collection books, The Winds of Limbo and The Shores of Death are in the omnibus Moorcock’s Multiverse, and The Eternal Champion (the novel) is found in The Eternal Champion (the omnibus), not to be confused with “The Eternal Champion” (the story), which is found in Elric: The Sleeping Sorceress. That’s all perfectly clear, right?
I can be hard to find copies of some of these books. My strategy has been to periodically look on both Alibris and eBay, and to not assume that the cataloging is good. Don’t assume that the publisher’s name is present. Broaden the search terms as much as possible, and search only on author’s last name and two or three words of the title. This will give you the best chance of finding the edition you want, although you may have to wade through hundreds of listings that match the broader search. I just found some inexpensive copies of The Eternal Champion and Moorcock’s Multiverse on eBay and ordered them, so we’ll see what shows up in a week or two!
I’ll head to Costco after work today. I need to do some deep-cleaning of the kitchen this weekend, and Grace and I need to get a podcast out.
Saturday
I left work relatively early and took a little time to myself to run some errands. I went to Sally’s Beauty Supply on Ann Arbor-Saline Road to get some nail files. (I do four nails on my right hand, rather than just cutting them off short like the rest of my nails, because I use them for finger-picking guitar). I then went a few doors down to Target and took a look at DVDs and shampoo. My hair is getting long enough that I need to put some effort into maintaining it, so I got some Neutrogena “anti-residue” shampoo. I used this years ago when I last had long hair. I think the last time I had really long hair might have been twenty years ago. But that was pretty much a mullet, shorter on top, and this time I’m just growing it all out.
I like to look periodically for movies on sale. I keep hoping to find a copy of Iron Man (the first one) marked down to $10.00, but that movie must continue to sell well so I haven’t seen it marked down that far. I considered buying a set of The X-Files Season 11, but I wasn’t sure if it was really any good. Reading some reviews today it sounds like a mixed bag, but then, The X Files was always a mixed bag, especially after the third season or so. I came across a DVD of Matilda for $5.00. The kids have been reading Roald Dahl recently and specifically asking me if I could get them the movie. So I did.
At Costco I managed to keep the price tage under $200.00. I got some more of the knockwurst, to eat with sauerkraut. I got a hunk of pot roast. Instead of an apple pie to go with our usual salmon, rice, and salad, I got a package of apple strudel. These were pretty good for store-bought pastry, but overly sweet, so we probably won’t get them again. I also got salad, eggs, Canadian bacon, the bacon we usually get, English muffins, and a few more of our regular foods.
Everyone was very tired last night so shortly after dinner we all pretty much just went to bed without a story (although I read half of a book, which I’ll describe below).
This morning I made toasted English muffins with butter in the broiler; half of them were topped with cheddar cheese. I also briefly fried half the slices of Canadian bacon and put them on a plate, and put the other half (a separate package) in the freezer for another time (probably next weekend). I made a giant plain omelette. This all went on the table as “assemble-them-yourselves” egg muffins. People who didn’t want cheese could choose the muffins that didn’t have melted cheese on them. Then they could assemble some combination of Canadian bacon and cooked egg. Our housemate and her boyfriend peeled and shredded potatoes for hash browns. I got Grace to come out and assist with that. So that was breakfast, along with a pot of black tea. We didn’t go to the Mother Loaf bakery today.
After breakfast and a little down time to digest, I wrangled pots and pans for a while. The Instant Pot needed a deep cleaning. The cast-iron dutch oven needed a deep cleaning to take off rust and give it a fresh coat of oil. This is all messy stuff and my hands were coated with black goo. The kids have been helpful but only so helpful; we have to follow up relentlessly, asking them again, and again, and again. All of them but Sam will default to just procrastinating to the point way beyond when the work was needed. It’s endlessly frustrating and at this point we just to continue to take it on faith that eventually they will learn how to do chores readily, when they are needed, without micro-management.
Fascism
We got a few more books in the mail last night. One is a nonfiction book, The Anatomy of Fascism by Robert Paxton. I learned of this book when Matt Christman of the Chapo Trap House podcasters released show #245, “The Monster Fash,” dated September 13th. It’s a solo recording in the mode of “Drunken History,” and about the actual history of the rise of fascism. It’s a necessary and very welcome counter to the narrative that fascism is fundamentally phenomenon of the left. This is one of the Chapo Trap House episodes that makes me glad I’m supporting them. I have listened to this show twice at work, and I feel like I actually learned something, especially about the history of Mussolini’s rise in Italy.
Anyway, I’m going to try to get this book read and discuss it on the podcast. We’ve had so little time to work on the podcast recently, though. And I will generally gravitate towards fiction, especially if there are “books about ideas” (that is, the kind of mind-bending science fiction that I love so much) on my to-read pile.
Speaking of Chapo Trap House, Grace and I have tickets to go see them do a live show in Detroit on Thursday evening. It’s a bit hard to get out on a weeknight like that, but Grace has arranged a sitter. I have listened to excerpts from a couple of their live shows, but I’m really not sure what it will be like. Grace does not listen to the podcast and so the various personalities and running gags and in-jokes won’t make a lot of sense to her. But we’ll do our best to have a fun night out. I just hope they don’t run too late; it’s a 45-minute drive from our house in Pittsfield township and we have a sitter through midnight.
Peter Watts
Peter Watt is not a fascist. I think Peter Watts would agree deeply with the late Ray Bradbury, who is reported to have said that he wasn’t trying to predict the future, but to prevent it — or rather, to prevent particular kinds of futures that he foresaw.
A number of years ago I became a Peter Watts fan, reading Starfish and the rest of his Rifters books, and I have looked forward to each new published book. Some time ago — ummm, it may have been nine or ten years ago at this point — I asked him if he would consider calling in to a podcast. He was generally agreeable. I should get in touch and see if he is still agreeable. Because I’d love to talk with him about his newest book.
His newest book is called The Freeze-Frame Revolution. When I start reading a new Peter Watts book, there is very little hope that I can do anything else but continue to read it until I’ve finished it. They always grab my attention from the first paragraph. This book is quite short. I think it’s just barely 50,000 words. He refers to it as a novella. The question as to its exact length might be significant when it comes to determining what awards it is eligible for. Anyway, it’s a really good, fast-paced science fiction novella or short novel. I read about half of it after dinner last night and the other half in the bathtub this morning.
The layout of the printed book is a little quirky. There’s some red ink involved and so some interstitial pages between sections of the novella feature artwork that has red in it. But throughout the text, every page or two or three, there’s a single character in red, while all the rest are in black.
At first I thought that maybe the red letters spelled something out, either in plaintext of code. I generally don’t have the patience for this sort of thing. I already put in a lot of work to intepret the texts I read; I don’t generally like the idea of having to do extra work to decode them. But I think the letters also do some other things, besides carrying a coded message. In “red letter edition” bibles, the words spoken by Jesus are printed in red ink — the color of blood — to hilight their particular status as allegedly his words, and not the words of anyone else, imbued with special authority, humanity, and sacrifice.
The whole story is about humans who live in a starship and are awake only every few thousand years. Visually, the lonely red letters help to convey a sense of the gaps of time that occur in the story in between the awakenings of our protagonist. Hidden messages, not encrypted messages (steganography, not cryptography) also are used by the mostly-hibernating humans to communicate with each other, so just the implication that there is a hidden text within the text gives extra resonance to these plot elements, making the reader feel like he or she has also been the recipient of a subversive hidden message.
In one characters pass a message that is hidden in dissonant eighth notes in a musical composition, rendered in the Bohlen-Pierce scale. That’s a real scale, and I was not familiar with it. It’s useful hear becaues two “tritaves” (not octaves) of a 13-step scale allow an easy encoding of the 26 letters of the alphabet. The humans are keeping their plans secret from the artificial intelligence they call the Chimp, that runs the ship. The Chimp has very good, but not perfect, surveillance of the ship, but he’s not quite as smart as the humans, and doesn’t necessarily have a human aesthetic sense. So the implication is that he wouldn’t be able to tell which notes are dissonant.
I wrote down the first few red letters and found that they spell out “I see you’ve found my eigth notes.” I haven’t picked out any more. I’ll leave it to you to find the rest. But I’ll also leave you with a question — to whom is the writer, our protagonist, addressing this steganographic message?
(This is my way of suggesting that Peter Watts’ stories are worth not just reading, but re-reading).
I’m not going to recount the whole story, because I don’t want to spoil it, and also because it’s vague — vague to the reader, and also vague to the characters. The ship’s actual mission, and the state of the galaxy outside the ship, is nebulous (heh heh, that’s a little interstellar-travel joke). The ship creates black holes, apparently both for its motive power and to open gates in a daisy-chain of wormholes; it is slowly traveling orbits of the galaxy in order to create a transit network, and to hook its daisy-chained routes into other networks, since it isn’t the only ship doing this. The technology is pretty advanced. So is the hibernation technology that allows the humans to sleep through most of the millions of years of their odyssey.
Watts doesn’t dwell very much on these technologies; the science fiction is a little less “hard” because this future is so distant. “Deep time” has long been one of my favorite science fiction tropes, and he convincingly raises some of the problems associated with slower-than-light travel across huge spans of time (without faster-than-light travel, every trajectory is timelike, rather than spacelike, meaning that it partakes of more “distance” in time, than in space.
But that’s all mostly just the setting. What makes this book work well is that this is really a human story, not a science lecture. And the humans on board have special status, granted a very strange kind of longevity — and a nearly godlike perspective — but they are fully human as well, with the vulnerability that implies. The origins of its mission, the state of human civilization outside the ship, and its eventual endgame are all occulted. Every once in a while the ship encounters a terrifying hint that there are other beings or technologies out there, haunting the wormhole network. But this isn’t any consolation to the crew in their isolation; the only safe course of action is to get as far away from these manifestations as possible, as quickly as possible.
The idea of a group of humans actually born and raised for a life of extreme isolation and extreme hazards is a theme in Watts’ writing going all the way back to Starfish. And so is the idea that such people might love this isolated work — in this book, people undergoing a diaspora in time even more than space — but also come to resent the way that each day, technology makes people easier to use, and sacrifice. The people in charge aren’t going to let little things like compassion and human weakness stand in the way of the mission. This is certainly not a new message in science fiction — for example, it’s one of the main themes in 2001: A Space Odyssey. But it’s a message that is more relevant each year in this hell-world timeline.
Anyway, go read The Freeze-Frame Revolution. Peter Watts deserves to be a much better-known author. It seems also like I haven’t been keeping up with his recent stories, some of them set in the same “Sunflower Cycle.” Two of them are in The New Space Opera 2 (the 2009 anthology) and Reach for Infinity (the 2014 anthology). I have both of those in storage and I don’t remember if I read those stories. Unfortunately The New Space Opera 2 is in the worst possible positions in my stacks of 140 or so boxes of books: buried in the bottom center of a palette stacked 3 boxes across, 3 boxes deep, and four boxes tall. I’ll have to decide if I’m up for tearing apart the whole palette to get to it. (And this is one of the reasons I’ve been hoping to get everything shelved!) Reach for Infinity is a little easier to get to — it’s on the front edge of a palette, only the third box down from the top, so I only have to remove two boxes to get to it. So I’ll pull that one out first. Maybe I’ll read that tonight while the kids watch Matilda.
Moderan
I got another book in, a book from the New York Review Books Classics series, called Moderan. This collects a number of long out-of-print satirical, dystopian stories by David R. Bunch.
He published at least 100 stories in science fiction magazines between 1957 and 1997, and nearly as many in literary magazines. No comprehensive David R. Bunch bibliography is known to exist; Bunch published almost exclusively in little magazines, digest-sized fiction magazines and fanzines, making a complete tally difficult (as the latter, particularly, are poorly indexed, and few indexes cover both the full range of little magazines and their more-commercial peers).
But some notable people knew of his work; Harlan Ellison included two of his stories in Dangerous Visions. I’m embarrassed to admit that while of course I’ve read Dangerous Visions and the follow-up volume Again, Dangerous Visions, I don’t recall either story, “Incident in Moderan” or “The Escaping.” I’m wondering if I will recognize them if I read them again.
“Satirical, dystopian” anything, whether on the lighter side or the darker, are squarely in my wheelhouse. So I’m really looking forward to checking out this collection.
I don’t have a copy of Dangerous Visions in my library currently, although I really should add one. I had old hardcover copies from the Science Fiction Book Club, back in the day, but they are long-gone, and I’ve been holding out until I can get a uniform edition of all three books (heh heh heh, that’s another little joke… unfortunately).
SERIOUSLY HARLAN ELLISON IS DEAD CAN WE FINALLY GET THE LAST BOOK NOW
ERR_CONNECTION_TIMED_OUT
Kerouac
As part of our subscription of the Library of America, we just got a new volume, a relatively skinny book called The Unknown Kerouac: Rare, Unpublished, and Newly Translated Writings, edited by Todd Tiechen. This book includes a couple of short novels that Kerouac apparently wrote in French, which have only recently been translated into English. I don’t know Kerouac’s work very well, having really only read On the Road. But apparently this volume mostly is made of scraps and leftovers. I am curious about the journals, though — I’m always interested in finding out how writers approach their journaling.
Kano
The Kano folks got back to me on Facebook, about my assertion that the Kano device was making HTTP requests to Facebook, as I determined when trying to use a proxy server. Apparently they overlooked my message for — how long? A year? I don’t even remember. I’m not even sure the Kano still works; I basically stopped using it since I couldn’t get the proxy server feature to work, leaving it open to whatever web site the kids wanted to access. If I can, I’ll get the proxy server set up again, and the Kano set up again, and see if I can get a clear log of these requests to send them.
Books, Music, Movies, and TV Mentioned This Week
- The Unknown Kerouac: Rare, Unpublished, and Newly Translated Writings by Jack Kerouac (editd by Todd Tiechen) (Library of America)
- The Anatomy of Fascism by Robert Paxton
- Moderan by David R. Bunch (New York Review Books Classics 2018 edition)
- The Freeze-Frame Revolution by Peter Watts (finished)
- George’s Marvelous Medicine by Roald Dahl (bedtime listening; Joshua’s been reading it out loud)
- The Wrecks of Time by Michael Moorcock (in progress; found in the omnibus volume Traveling to Utopia, Gollancz 2014)
- The Bloody Chamber by Angela Carter (in progress)
- The Fellowship of the Ring by J. R. R. Tolkien (bedtime reading in progress)
- Oryx and Crake by Margaret Atwood (in progress)
- Elric: The Moonbeam Roads (Gollancz, 2014) (omnibus volume containing 3 novels; finished the first, Daughter of Dreams)
Ypsilanti, Michigan
The Week Ending Saturday, October 6th, 2018
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.