WIP: Back In Action

That. Was. Painful.

Wednesday to Wednesday

I haven’t posted here in over eight days. And, my website said “Scheduled Maintenance” for a solid week. A little explanation may be in order.

In ramping up to my current challenge and looking ahead to the future, I realized two weeks ago that I want to keep my writing business simple, efficient, and focused on the production of new books. Early last week, I became fixated on the demands my website arrangement placed on my money, time, and most of all attention, for results that seemed debatable at best. Not for the first time, I found myself thinking of adopting a static website, generated by Jekyll or Hugo or Nikola, and it seemed that I could embrace maximum simplicity, efficiency, and focus with a simple switch to one of those generators. I identified my options and weighted my values among them, and it seemed that a static website was the clear winner.

So, in the middle of last week, I began to make the switch. I thought it would take me a day to change over, and two or three to get everything slick. After all, I used to code this site by hand, and I still make my own tools for making ebooks. How hard could it be?

That was a mistake.

Taking down the old website was easy, a couple hours, but I massively underestimated the time to create the new. Every time I answered a question, two more popped up. Success kept feeling like it was imminent, but it wasn’t. Day by day, a week went by.

The static website generators are not impossibly complicated, but they are different, and they require some learning, not hours, as I originally thought, but days. At least. What’s more, the code that I used to use to generate my static content has suffered terribly from bit rot, and though I could certainly get it running again, it would take days, at a minimum.

And you know what I’m not doing when I’m coding templates and generators? Of course you do.

What kept me going was the idea that I was creating something significantly better, and that giving up would make the whole thing a waste. What finally made me stop and go back to WordPress was the realization that my experience trying to change proved that the benefits of simplicity, flexibility, and freedom lay with WordPress. If the object is to have a website system that my daughter and wife can help me with—and it is—then the best answer, right now and maybe forever, is WordPress, not a static site generator.


Soon after midnight on Thursday, I began the change back. Though I had completely taken the site down, I estimated that it would take me only a couple hours to restore from backup. About fifteen hours later, I had most everything back in place.

The past week was a terrible mistake, but at least I learned something important about myself: Though I used to code websites by hand, and I happily made generators for creating website parts, I don’t want to do that again. Not ever.

I want to make books. And some other creative works.

But not website code. Never again. I am done.

So, thank Matt for WordPress. And everyone else who contributed to it and made the plugins and themes I use.

Meanwhile, About Those Deadlines …

I’d like to say that at least I kept my writing production on track, but I didn’t. And the Universe did not grant me an extension on the events that form my hard deadline.

So, I am way behind, much behinder than before.

I have adjusted my goals. They are more difficult, but nowhere near impossible, and still not the highest levels I’ve produced.

I need only to stay focused and work my plan.

Friday morning I begin again. With new wisdom about myself.

Wish me luck.

WIP: Lots of Upgrades

The great migration ended, and the upgrades begin.


When I stopped last night, my website had gone from a regular page down to a blank page, and then down to no response at all. So, my priority in the morning was to get that fixed. Thanks to the good techs at DreamHost, that went pretty smoothly. I spent the next few hours finishing the migration, shutting down the old host, and even adding SSL to my site. Sweet! Thanks, Let’s Encrypt!

After the late night and all that, I needed a long nap. By the time everything was finished, it was time to get my daughter from the bus stop and eat dinner.

In the evening, I got some good work done on what comes next.

Angel of Death

 [Cover of Angel of Death: A Victor Storm Novel by T.F. Torrey] I have decided to launch Angel of Death next Tuesday. I’ve been hoping to get it out quickly for some time, but I’d rather not launch it until I finish the other upgrades I’m doing around here. I have new covers for some books; I want to get some into wider distribution; I need to upgrade the descriptions for most of them, as well as my author bio, calls to action, and whatnot. Especially the whatnot.

So, it will be a lot of work, but I want to get the upgrades and launch the thing next Tuesday. Anyone waiting this long for the sequel to Winter Kills can last a few more days, I think. It did turn out to be a good book.

WIP: The Great Migration

Budgeted: one hour. Spent: wow.


Again arose early-ish and did my morning routine. I’m pretty sure that would work better if I could turn the corner and fully work my morning plan. Rising “early-ish” seems to take away at least two hours of good productivity every day. I will change that this week.

Because my old web host was expiring in a few hours, my first task of the day was to migrate my website to the new host. I had slated that for one hour, because some of the work was already done, and it isn’t usually that much work in the first place. Unfortunately, the work was beset with little glitches, and it wound up taking all day. I had agreed to run a poker tournament in the evening, and the migration problems had demoted my website from a “scheduled maintenance” page to just a blank page during that time. I worked on it for several more hours after that, and by the time I went to sleep the server wasn’t responding at all, making the blank page look pretty good.

It stinks that I lost the whole day to the problems, but I recognize that if I was really working my morning plan I still would have gotten some good writing done.

I need to get on that.

WIP: Ending and Beginning


I spent the morning working on my website, making sure all the pieces were in place after the move (they weren’t). By the time I got done, it was sleek and fast and literally better than ever before. Pressable is turning out to be an excellent host with excellent value. There are some things I’d like to see different and better (backups you can see and restore, the ability to manage your own DNS records on their system, and staging site names that can be reused, for instance), but it is already great service at a great value. Nonetheless, I’m still not sure that I like giving up knowledge and control of the security, caching, and backups of the site. The idea of having my web presence structured such that I can host it on any server that provides no more than PHP and MySQL is very appealing. Being locked in isn’t.

In the afternoon I ran a poker tournament. Running the tournament provides most of the fun of playing, and much better socializing, but with with less guilt because, rather than cost, it pays more than winning. Sweet!

Unfortunately, it’s also rather physically exhausting. When I got home in the evening, I felt too tired to do anything except nap. But, after several hours, isn’t it just sleeping?

Late at night, I got up and got to work. I wasted too much time checking whether NearlyFreeSpeech.net would be good enough for my site using Cloudflare as a CDN. I reaffirmed that all of Pressable’s optimizations amount to a mere half-second quicker loading time. So, I’ll have to think about whether the trade-off is worth it.

Finally, when I could procrastinate no longer, I got to my writing projects.

Angel of Death

 [Cover of Angel of Death: A Victor Storm Novel by T.F. Torrey] There are only ten or so scenes left to complete for the book. The major thread of scenes left to complete is the reflowed class sequence, and that’s what I worked on. I felt rather dumb researching the philosophy of ethics this late in the game, but I would have felt dumber if what I wrote was wrong. I made good progress, but not quite as much as I would have liked.

I wanted to get more done, but I had to move on to my next project.

Vampires Versus Comicon

 [Cover of Vampires Versus Comicon: A Novel by T.F. Torrey] That’s right, it’s Comicon time again! Vance and Allison are back, and this year, fortunately, Comicon is 100% free of the zombie menace. Unfortunately, with everyone looking out for zombies, no one is noticing the vampires. No one, that is, except Vance and Allison.

Well, it’s hard to notice them, because vampires aren’t real, right?

Except now, thanks to yet another government research project to weaponize science, they are!

I aim for Vampires Versus Comicon to be 60,000+ words, and done in time for Comicon. Right now, I have most of the characters: Nicholas, Lidia, and others (who lived) return from last time. I have some funny and absurd subplots and a general idea of how vampires might work. However, I also have a distinct lack of plot points, no real idea of what an ending might look like, and a big problem of how the characters can be allowed to kill people who nobody believes are really vampires.

I also have ten days or left to get it all worked out and done.


For tonight, I worked on the beginning sequence of scenes, trying to figure out what is happening while the vampire threat is building, and trying to make that interesting. Zombies Versus Comicon was plotted in a straight Scene-Sequel progression, and that worked out really well. My thinking has evolved away from that somewhat lately, but I’d like to do that again for this book if I can.

Ultimately, this summary of what I did might be longer than what I accomplished on the book, but I still feel good about it.

And it’s a lot of fun.

Daily Results

  • New fiction words: ~1500
  • Scenes completed: ~3
  • Chapters completed: ~2
  • Covers completed: 0
  • New weblog words: 675

I’ve got to write, write like the wind, to be free again.

WIP: Bradbury’s Wings and Chekhov’s Gun


In the morning, my daughter kept my parents entertained for me, and I got some good work in. In the afternoon, I got more good work in, then she took a nap, which let me get even more good work in. In the evening, we went to an art show at Puente (yes, the famous Puente), where we bought T-shirts (Film the Police), then I got some more work done. I had not gotten all my planned work done, so I wanted to work through the night, but, alas, I slept. It’s better to get up early anyway, I think.

Unfortunately, again, most of my energy for the day was exhausted trying to get my managed WordPress site working.

Managed WordPress at Pressable, Part 2

It turns out that Pressable has been having lots of glitches due to their datacenter move. The problems remained, and I didn’t hear from anyone at Pressable, until late afternoon, and not until I contacted them. By that point, I had already set up and tested Cloudflare at my former host, and staying wouldn’t have killed me.

In the late afternoon, there was a burst of activity, an admin page was found to be “stuck” in the cache (which I could have fixed if I’d thought of it), and my site was declared fixed. Okay. The daily backup to VaultPress had finished running, so I set the site at my former host to Undergoing Maintenance and started the routine to “restore” the latest backup from VaultPress to Pressable. That said that it worked, and it seemed to have copied the latest data, but it did not appear to have touched the plugins or themes. No matter, the post data looked good, so I installed the remaining missing plugins by hand, made sure everything looked complete, and switched that site to be the live one.

And, immediately, I saw that it was going to leave my e-mail broken. The Pressable system won’t let you configure the e-mail settings until you switch your DNS to them. A reasonable analogy is that their system requires you to jump off the cliff and build your wings on the way down. I like Bradbury’s advice in general, but I didn’t want to do it with Pressable’s support, which doesn’t work overnight and is slim on weekends. I was able to get back on the metaphorical cliff by changing my DNS to point back at Cloudflare, then make the new site live again by pointing Cloudflare at Pressable. This isn’t ideal, because it bypasses the MaxCDN setup built into Pressable (or adds an extra hop, I’m not sure which). Pressable’s system has no provision for setting the MX records unless you’re using one of their three integrated hosts, and I’m not. Their help pages say to open a support ticket to ask a service agent to do that for you. I did that. The agent replied to me to say that my DNS was not pointed at Pressable, so if I wanted my MX records changed, I’d have to do it at Cloudflare. I quickly replied with an “of course, I know that,” message that pointed out I don’t want my e-mail bouncing while Pressable’s support gets around to setting up (and fixing, most likely) my MX record, and I know they can do that before I make the change, so please do that. I got no reply.

When my website was hosted at NearlyFreeSpeech.Net alone, WebPageTest.org reported a first-page load time of 8-10 seconds, and Google’s PageSpeed Insights gave it a score of about 36/100 for Mobile and 45/100 for Desktop.

When I added Cloudflare as a CDN, WebPageTest.org reported a first-page load time of 4-6 seconds, and Google’s PageSpeed Insights gave it a score of about 36/100 for Mobile and 45/100 for Desktop.

When I changed to Pressable’s hyper-optimized WordPress hosting for my site, keeping Cloudflare as the CDN, WebPageTest.org reported a first-page load time of 3-4 seconds, and Google’s PageSpeed Insights gave it a score of about 36/100 for Mobile and 45/100 for Desktop.

Apparently, having Cloudflare as the CDN makes moving to Pressable nearly irrelevant.

(Update: I had forgotten to turn on Pressable’s caching mechanism. After I did, page load speed dropped to 2-3 seconds. So, Pressable’s tuned server’s appear to be 2-3 times faster than untuned servers.)

And Google’s PageSpeed Insights isn’t going to be happy until I recode other people’s plugins to minify the JavaScript and CSS, which is never going to happen.

Other page speed checkers report my site now loading in under two seconds, which is good, but I wonder what the mean by “loading”. Those times are only a little longer than what WebPageTest.org reports as the speed of the first byte, which can not be, for my site, anyway, considered loaded. But I forgot to check with them after turning on Cloudflare at NearlyFreeSpeech.Net.

Apart from page speed, the other plans I have for my site make Pressable a good choice. Even a few seconds better is a big difference for web pages. Plus, having a team keeping an eye on the security of the site and available to provide assistance whenever I get stuck with a plugin or something will be a big help, at least once in a while. I want things to work out at Pressable.

Anyway, this is way off track for this website, but maybe someone will find the data useful.

Angel of Death

 [Cover of Angel of Death: A Victor Storm Novel by T.F. Torrey] Stop me if you’ve heard this one before. I was working on this today, and it took longer than I thought it would. I know, right?!

I got a lot of good work done on Angel of Death today, but not all the work I wanted. I can’t really say that I sidetracked myself by deciding to change hosts, because that’s all part of what I want need to get done in the next couple weeks. It’s important.

Despite not finishing, I’m happy with what I did get done. Some parts that were weird before now fit in. The classes were reflowed nicely. And though I still haven’t used Chekhov’s crossbow pistol, everything else is tied up.

Unfortunately, things are going to get even worse for the next thirteen days. My next project can not be delayed any longer, and I have to start it tomorrow (and write like the wind). Angel of Death must also be finished, but it has to be in addition to the other work.

I jumped off this cliff a while ago. I need to get these wings built.

Daily Results

  • New fiction words: ~2000
  • Scenes completed: ~4
  • Chapters completed: ~4
  • Covers completed: 0
  • New weblog words: 1075

If I can’t keep better track of these numbers, I should stop reporting them.

WIP: I’d Be Embarrassed


My daughter is a wonderful little person, and I love spending days with her. She is so smart and creative. She’s awesome! And I got to spend all of today with her again. I’m so lucky. (Not being sarcastic.)

Almost my entire working day was sucked up trying to get the managed WordPress site working. Spoiler alert: their system is still not right.

Managed WordPress at Pressable

I had hoped that the remaining fixes would be easy and quick, and I’d have the site migrated first thing in the morning. Instead, the new installation doesn’t work, and they don’t know why, except that it might be because they are moving datacenters. The glitches in the site are random-looking, and while the ones I know of are annoying but not critical, I have no idea what other ones exist that I don’t know about. The people at VaultPress got their system fixed, but the people at Pressable still have no idea what is going on or how to fix it. They tried off and on throughout the day, and in the end still came up with nothing. Along the way, I had to give up on completing the move and back out the changes I’d made. I doubt this is representative of the quality of their service, but still, if I was on their end of this case, I’d be embarrassed.

Once again, I’m hoping that it will get resolved tomorrow, but I’m less confident than before.

Angel of Death

 [Cover of Angel of Death: A Victor Storm Novel by T.F. Torrey] I worked out some of the weirdness today. I had scenes that didn’t seem to fit anything, but today I figured out what they were doing. Turns out they were important! And I need a couple more of them. I’ve arranged a large chunk of dedicated time tomorrow, and I expect (and need) to have the book finished.

Daily Results

  • New fiction words: 0
  • Scenes completed: 0
  • Chapters completed: 0
  • Covers completed: 0
  • New weblog words: 325

Tomorrow. Period.

WIP: I Stepped In It This Time


Again I spent the day with my daughter. Soon she will be in school every day, and I will miss her. I didn’t get much done during the day, but it wasn’t her fault.

Managed WordPress

At the web host I’ve had for a long time, my WordPress website currently loads in 6-10 seconds. And that’s without my planned expansions. 1-3 seconds is acceptable. 10 seconds is too slow. (Probably, but that’s another story.)

So, I’ve been researching managed WordPress services. If I can get optimized servers and specialized security and managed backups and spam protection and easy SSL for only little more than twice what I currently pay, that seems like a good deal.

After a lot of research, I decided that DreamPress and Pressable seemed right for me, with Pressable narrowly winning out. Pressable also has a two-week trial period, and I have to move or give my current host more money in the next couple days. And while moving a WordPress site isn’t exactly trivial, I’ve done it before in only a couple hours. Going to a managed host is probably slick and speedy, right?

Well, it wasn’t for me. After twelve to sixteen hours of working and trying and trying and retrying, I finally had to give up. The new site just wasn’t working, as in, the code does not correctly save options and present the data of the site (and it still isn’t). That doesn’t work at all. I don’t know if it says bad things about Pressable or if it’s just a fluke, but it was neither fun nor productive. And there is still no end in sight.

Maybe it will be better tomorrow.

Angel of Death

 [Cover of Angel of Death: A Victor Storm Novel by T.F. Torrey] Despite my website woes, I did get some time spent on Angel of Death. I rewrote the transitional parts that had to be changed because the scenes are in a different order. That went well, but I also ran into a couple scenes that don’t seem to fit what the story had become, and I’m not sure what I’ll do with them. Also, some of the action at the end is not properly justified by the existing scenes, and I’ll have to do some work to fix that. I’m again hoping it will be done tomorrow, but I’m planning now to release it next Tuesday.

Daily Results

  • New fiction words: ?
  • Scenes completed: ?
  • Chapters completed: ?
  • Covers completed: 0
  • New weblog words: 400

Must go faster.

Writing In Public: Day 20

Saturday, February 20: Clearing the deck

Today I did the work to migrate the presentation of my books to the MyBookTable plugin. I thought it would be the work of an hour. I was way off.

Business: The Big Migration

The actual practice of presenting a collection of books is more complicated than it seems like it might be. Each book has its own metadata such as price, publication date, retailers, and so one, and for the most polished appearance these should be presented the same for each work. Each book also is related to others in a body of work, part of the same series, or on the same topic, for instance, and an ideal presentation should reflect a books place in the body of work, maybe with links to related works.

Tracking a book’s metadata is not difficult, but uniformly tracking the metadata of all books in a collection can be. Turning metadata into a presentation page for a book is not overly difficult, but if it is done manually, a growing collection is a growing burden. Maintaining interconnected links, however, is much work for even a small collection, and for a large collection it is a real burden.

The metadata for my books has long been kept in each work’s source file. Recently I have used Emacs lisp to turn that metadata into consistent presentation. However, as the collection grows and the presentation tries to be more inclusive, developing and maintaining the lisp code takes more and more time that would be better spent producing content.

Adopting the MyBookTable plugin for the presentation of my books will present my work in a more professional manner while freeing me to produce more works. On Saturday, both the improvement in presentation and the reduction in my own overhead seemed so great that it was worth interrupting progress to make the transition.

I thought that the migration would only take an hour or two. As always, however, some challenges came up (mostly with inconsistencies in my own records, further evidencing the need for the transition), and it wound up taking six or eight hours.

The result, however, is my best site ever. Ever. It is gorgeous and efficient and I can’t wait to get more and more projects done to put on display there. I have been privately worried that the super-secret projects I’m working on would be less successful than they could be (or flop altogether) because of the state of my website. Today that fear is obliterated. I can’t wait to get them complete and into this system.

Or, to quote a line from a classic movie, “Get ready for greatness, Lloyd.”

Writing: Spring Rains

The business and personal items of the day completely filled my schedule, left me exhausted, and completely shoved Spring Rains out of the picture. Normally I would lament that fact, but not today. My work today has put me in such a stronger position that it was worth the intrusion. After some rest, I’m champing at the bit to get Spring Rains done and out.

Total for the day:

  • Fiction words today: 0
  • Weblog words today: 600

I am so excited for what comes next.

I am also aware that my plans at the beginning of the week included lots of writing and none of this work. I hope this isn’t just a way of procrastination. It feels like jumping on an opportunity to make an improvement more than worth the interruption in my work, but I have to admit that it is possible that I’m just tricking myself.