Okay, I signed up for two months of Google AI Plus. That includes access to multimedia tools like Veo, Whisk and Nano Banana. I’m quickly learning about how to use those tools.
Nano Banana Pro uses Gemini 3 under the hood to translate your prompt into something the image generator understands.
Let me say at the outset that I don’t like the shiny gorgeous perfect people inserted in most videos, or the chunky animated figures. I’d prefer something minimal that looks less like photographs than a minimal comic.
The big challenge seems to be using your monthly credits strategically. Even with the pro account you have 1000 credits which you can waste on vid generation.
I like the Whisk interface which uses a Subject/Scene/Style interface.
Also, OpenArt creates an interface for generating prompts for each platform. Free 40 credits, $14 month for 4000 credits.
Sony Vegas
I generally find Vegas to be powerful and useful, but I cannot for the life of me figure out how to pan and scan images (i.e., the Ken Burns effect). I know approximately how it’s done; I know what part of the interfaces are supposed to control it, but I’ve never actually figured out how to make it work properly. Unfortunately the docs are pretty lousy, and the helper vids on YouTube which demonstrate how to do it always leave out a few steps (and rarely show what the finished video actually does). The vids spend a lot of time clicking through things on the interface, but we don’t often see what all that clicking actually does. This week I am going to focus specifically on keyframe animation. It shouldn’t be that hard, but I haven’t found good guides on the subject.
Up to now I have been politely indifferent to Facebook — everything it is, and all the problems associated with it. I signed up in 2007, but I didn’t start posting there until summer 2008. For about a decade, I posted things there 5 or 6 times a week, and I managed 2 groups and 5 special interest pages. From about 2018 onward, I posted less frequently — maybe 3 or 4 times a week. More than a decade ago, Facebook changed its algorithm so that people who liked Pages would never see its content unless page owners paid to “boost” these pages. That caused many artists and content creators to move away from Facebook or depend less on it to reach fans. Some have moved onto another Meta property (Instagram), while others have increased their presence on LinkedIn or TikTok. Geekier types like myself have moved to Mastodon and Bluesky and maybe other sites. (For a while I was an active participant on several StackExchange and Reddit discussion boards, but now I mainly just lurk there).
This year I probably checked Facebook once or twice a day and post there once or twice a week. Earlier this week, I tried using Facebook’s tool to export my data out of FB (which I used to do every year or so). Immediately when I pressed the Submit button to initiate this process, Facebook surprised me by suspending my account and removing all my FB content from the site. At this point, I paid very careful attention to what was going on. Was I on the correct facebook.com domain? I have always been extremely scrupulous about using Facebook and maintaining browser security. I keep my passwords safe in a password locker and use relatively complex passwords.
Facebook asked me to “appeal” the decision by uploading a recent photo of myself. So I did:
After I uploaded this photo, I received this message:
Five days later, I am still waiting and had time to reflect on what Facebook has been doing to me and the world. I don’t like it at all.
I’m guessing that eventually the suspension will be lifted and Facebook will provide no explanation. Why should it?
Why have I continued to use Facebook?
First, because that’s where many older and less tech-savvy users are.
Second, some of my friends overseas are there, and it’s often easier to reach them through Facebook than elsewhere. I wish more people had personal websites where they can be reached. I wish it were easier to locate the emails of people I haven’t seen in a long time, and I wish places like linkedin made it easier to contact people who were not already connections.
Third, some content creators (and especially musicians) post updates on Facebook and nowhere else. Some social groups post events and activities on Facebook — and nowhere else.
Fourth, (I admit it), it is occasionally fun to lurk and read content by people I hardly know.
Fifth, family and friends have posted photos on Facebook — and nowhere else.
Sixth, I follow very closely wall posts by about 20 people on Facebook. Many of these people are or were bloggers (and post their content elsewhere), but one or two friends post content on Facebook — and nowhere else.
Seventh, as I mentioned before, I maintain some 2 or 3 low traffic pages for authors. I don’t use them often, but once in a blue moon, I need to post something on it.
Eighth, occasionally old friends use Facebook to contact me out of the blue, and that is often wonderful.
Nine, I do enjoy some of Facebook’s photo management, tagging, etc. It’s pretty easy to post a few nice personal photos and get likes and comments from people.
Tenth, for a while I used Facebook as a way to feel the political pulse of friends and family. Over the last few years, this is no longer true, often because Facebook serves so much slop that it’s hard to tell what people really believe these days.
Eleventh, as a publisher and author, I often promote some of my ebooks and creative projects (as well as creative things by actual friends). Frankly, this has been the easiest way to inform many people — even though FB buries a lot of content, and I doubt that friends see many of those links.
Twelfth, it’s a good way to learn when friends or families have died or have had serious illness.
Why I am motivated not to use Facebook
First, I have long been aware of how Facebook violates privacy and resells user data to the highest bidder.
Second, I am aware of how Facebook ads are becoming more unavoidable.
Third, in the last two years or so, my Facebook feed has been flooded with posts by unknown people and organizations. I remain suspicious of anything which Facebook has decided to feed me. Often it’s celebrity news or whatever I happen to be doing research on. Facebook often just creeps me out. Sure, I may like Seinfeld and Star Trek, but that doesn’t mean I love constantly receiving “news” from all sorts of random “people” on these topics. 95% of my motivation for going on Facebook is to learn what my friends are getting excited about, not to read the things that Facebook has decided I should be interested in.
Fourth, in the last five years I have been seeing overall decline in engagement from my Facebook friends. Facebook has not only been clogging the feed with garbage, but clogging it so much that actual friends who might be interested in my posts rarely have the opportunity to view them.
For social media, the biggest switching cost isn’t learning the ins and outs of a new app or generating a new password: it’s the communities, family members, friends, and customers you lose when you switch away. Leaving aside the complexity of adding friends back in on a new service, there’s the even harder business of getting all those people to leave at the same time as you and go to the same place….
…
This enshittification was made possible by high switching costs. The vast communities who’d been brought in by network effects were so valuable that users couldn’t afford to quit, because that would mean giving up on important personal, professional, commercial, and romantic ties. And just to make sure that users didn’t sneak away, Facebook aggressively litigated against upstarts that made it possible to stay in touch with your friends without using its services. Twitter consistently whittled away at its API support, neutering it in ways that made it harder and harder to leave Twitter without giving up the value it gave you.
When switching costs are high, services can be changed in ways that you dislike without losing your business. The higher the switching costs, the more a company can abuse you, because it knows that as bad as they’ve made things for you, you’d have to endure worse if you left.
This enshittification process is pretty widespread and inescapable. Despite this, it still was worthwhile for me to repost my content onto Facebook. Until now.
Where to Find Online Content by Robert Nagle (Hint: Not Facebook!)
In a way, Facebook is nothing more than a blogging platform for dummies. If you subtract the privacy issues and advertising and generated content, it’s actually an easy and user-friendly way to blog.
But I post my stuff at several places. Here they are, ranked from most important to least important.
My idiotprogrammer blog. Almost all my content originates in megaposts on my blog. It consists of 20% personal stuff, 20% political stuff, 20% promoting my stuff and 40% cultural blogging (music, books, movies, etc). I even add to things I posted over a decade ago (such as this, this, this and this). My blog contains lots of things I never bothered to post on social media. I have been blogging there for 24+ years! BTW, the most recent posts are usually a mess.
Mastodon. Now my favorite site, although almost none of my meatspace friends are on it. About 70% of my posts is culture blogging, 10% is self-promotional, 10% is political, 10% is personal. About 95% of my posts were originally posted on my blog.
Blue Sky. This has more users (and more phantom users), but essentially I just repost the same things that I post on Mastodon. I like Blue Sky less because it has a smaller maximum character count than Mastodon.
Robert’s Roundup newsletter (sent by email). About four times a year I send out a newsletter with highlights from my blog and publishing information.
Facebook. I mostly repost the same things I post on Mastodon, except that I occasionally post personal photos and slightly more political posts.
Video platforms. I have started posting book-related things on YouTube. At some point I may have a modest presence on video platforms once the Tik Tok situation is clarified.
Instagram. Despite the popularity, I post rarely on Instagram because it is overrun by ads and spam, it is not easy to browse through and it is cluttered with short meaningless vids. Plus, most of its functionality requires that you use the phone app. I am reluctant to use any of the Meta phone apps for various reasons. No, thank you, I’ll use only my browser.
Life after Facebook
I didn’t expect to be forced out of Facebook and my content obliterated. Also, I never expected to be unable to view Facebook’s content. It really makes me mad.
Perhaps Facebook will eventually restore my account and my access, but from my point of view, the damage has already been done.
Like I said, I haven’t used Facebook much in the last 3 or 4 years. But I have used it often to look up people, communicate with people whose emails I didn’t have.
But now I assume that Facebook can randomly destroy your account and its content — and there’s nothing you can do about it.
From now on, why should I trust Facebook about anything?
Post-Script: Facebook’s Lie about Downloading your Personal Data
Facebook suspended my account immediately after using its export tool to export personal data onto my local device. My best guess is that this action triggered some bug — even though I have used the same export tool about once a year without incident.
When Facebook announced about 10 years ago that it had created a tool to export personal data onto your computer, I was relieved and ecstatic. I could back up my data and keep a local copy for reference. The zip file was about 300-600MB, and I made this backup about once a year. I
After my appeal was filed, I noticed that the dropdown box on the right side of my suspended account still had a button for suspended users to download your information. But the only info it let you download was your basic demographic data — not your posts or photos or list of friends or comments. That was worse than useless.
Here are some screengrabs from globalstats about web traffic. This data aggregates data from the previous year (as of June 2025). It’s hard to say how representative this data is of general traffic. and frankly I’m not sure how they define screen resolution. I find it hard to believe that the 2nd/3rd/4th leading screen resolutions are all below 400×800 for United States visitors and pretty much 1st through 6th place for global traffic. I would have liked to see data about mobile phone ownership in the US and specifically screen resolutions of specific phones.
The most shocking thing is the low statistics about tablet users across the world. I suspect that avid readers like myself use a tablet more frequently than the average person. Of my Internet usage, it’s 50% on desktop, 45% on tablet and 5% on mobile phone. Of course, I’m talking mainly about reading and surfing, but on my tablet, I have always done gigantic editing jobs on my tablet. Ebook and PDF apps allow you to highlight and note certain sections of text which I can use for editing on my desktop. With the Kindle app, you can even email what you’ve highlighted and annotated from the actual text. I simply upload epubs I want to edit to Kindle Personal Docs, input the changes on my desktop and (the most important step!) confirm that the changes have successfully been made by comparing the revised text against the annotations I made on my tablet.
Summarized from AI: Below is a snapshot of approximate global mobile-browser usage broken down by device category and browser. Estimates assume ~5.56 billion monthly Internet users (all devices) and apply June 2025 Statcounter mobile browser shares. These figures help prioritize testing on:
Samsung Internet, Opera Mini, UC Browser and stock Android browser for fringe coverage
Chrome on Android devices (covers ~70 % of mobile traffic)
This post will be boring. It is merely a list of my favorite free and open source tools for Windows desktop. I started this in mid-July and am just throwing things on the page. (Will tidy up over time).
I’m good at asking technical questions like this, and the answer frankly surprised me (and revealed how behind my CSS skills are). (It was in reference for this 10 part interview. I am okay at web and accessibility testing, but I do most of it on my own devices (Win 11, Samsung tablet, android phone), and didn’t have easy access to iPhones. Yes, I knew it was sub-optimal, but I didn’t know what was wrong or an easy way to devise a fix for it. (And of course Copilot solved it in 5 seconds!)
I like having the ability to make an occasional static HTML site. You’re in complete control and can often make human-readable code. When I try to troubleshoot WordPress for example, I find the CSS mostly unfathomable. I’m sure it makes sense for developers (especially those with tools to combine everything into the right interface), but I don’t have time to figure those things out except in rare cases.
My Docbook files generate clean HTML code, so I often can do my own CSS (without working about dynamic code, java script, etc). I remember the utter shock I experienced about 5 years ago when I saw the data about what percent of my site visitors were on mobile phones. I quickly schooled myself in responsive design, but I lacked an ability to test things fully.
I would love a free solution to this device emulator problem, but for the moment I am using LambdaTest to test on iphone emulators. Worked like a charm! (I had to pay $9 per month or 7 dollars for an annual rate, but it was well worth the money).
Here’s the thing about AI-guided expertise. Often, AI gives great accurate information and sometimes it is very tailored. On the other hand, a solution may be more than what you need or introduce its own problems. It could also be out of date. So I spend a lot of time preparing a question to ask and a lot of time trying to understand the answer. Even if AI’s answer is correct, you the human may not understand the rationale behind it. Such as: is this solution a hack or a best practice? What dependencies do you create when you implement this solution?
So for $9, I have the ability to ramp up my CSS knowledge and test my existing static web pages better than I used to. Horray!
Update: I redid the style sheet and combined it into a single file.
Previous version had 2 files: 736 lines + 258 lines. The new file (just one) has 560 lines total (Admittedly, I cleaned it up a little and removed cruft). When I added the link, I see that I have 50-75 lines of cruft I could also delete– maybe I will eventually.
TAKE MY SURVEY: When you go online, what percent of your time on the Internet is spent using a)desktop/laptop, b)tablet and c)mobile phone? My percents are a)50%, b)45% and c)5%. Apparently (According to Statcounter) this is much different from the rest of the world. Worldwide, 35% come from desktops/laptop, 63% of traffic comes from mobile phones, and 1.6 come from tablets. For Europe and USA, 44% come from desktop/laptop, 53% come from mobile phones and 2.3% come from tablets. I have a great mobile phone with a decent display, but it is cumbersome to do a lot of reading on it (and my middle-aged eyesight makes me continually wish the font was bigger).
I learned something strange and semi-important and not-obvious.
If on a PC you put a download link to a file (like an epub file) on a web page, both Edge and Chrome will block the user from downloading it directly unless it is an https file.
It’s funny because my domain is already secure and Edge/Chrome show that to be true.
The user can eventually override this to download an http link, but it is not that easy for many users.
In other words, from now on, every download link must start with:
I’ve been fiddling more with WordPress. It’s super easy to create WordPress instances, but a bear trying to integrate the different websites and mixing static HTML with blogs. Also, I have a few WP websites running older themes which are not mobile-friendly, and only in 2023 or so did I start working with mobile-friendly themes. (Yes, I am embarrassed).
I’m pretty good at using Gutenberg and designing functional and easy-to-navigate pages. I’m not so much at making everything pretty (as the home page on my website demonstrates). I’ve gotten more experience using WP’s block editor and block themes, but I haven’t tried anything daring really. For this site I’m using only the default 2023 theme. On this blog it sucks (yes, I’ll admit that!) , but I’ve made it look relatively decent on another site.
Here are some notes I’ve compiled with trying to implement the 2024 theme on another site.
How to add Javascript properly on wordpress sites. The short answer is to download a WP plugin like WP Code which inserts headers and footers. I’m reluctant to add another plugin, but this separates the customizations from the theme files.
I’ve been tinkering with the 2024 theme, and frankly it’s harder to get the design elements just right. With the block editor you can do a lot of sophisticated things just through the interface, but there are so many moving parts that it’s easy to drown in complexity. I get how patterns and parts work; it’s just hard putting them together in the right manner. Fortunately WordPress.org has some killer video tutorials for Content Creation. My goal is to move my static Personville Press site over to wordpress, but the key was removing a lot of the bloggy elements and making it easy to add book pages and related content. Stay tuned.
Update. I seem to be getting the hang of it. Part of the problem is that I didn’t/don’t properly understand what part you need to modify for a template or pattern which you plan to re-use. It can be very complicated — especially for the 2024 and 2025 themes which have a lot of “templates” which you can apply and just change as you wish. Template is used differently in different places. Another problem is that it’s better to create your own template parts for headers and footers, and then put them into the page and post defaults.
Mailing List Woes
For the last few years I’ve been promising/threatening to make an email newsletter. Several things keep getting in the way, and to be honest, it has been a low priority for me.
One thing I admire about substack, wordpress.com and other places is how they have fused the newsletter with the blog. Unfortunately these things aren’t practical for self-hosted wordpress websites. I have an idea about the work involved; I just don’t want to do it.
Authors are strongly encouraged to use mailing lists to maintain contact with readers. Everyone says to do that. But it’s hard to be so devoted to it when email subscribers are minimal. Also, there are email management websites that can handle a lot of the backend for you. But they are a recurring cost, and I usually can’t afford it. As a result, my newsletters tend to be amateurish and prone to the whims of the third party service.
A few years ago I signed up for Mailerlite (because it had been recommended by several places). Setup was somewhat complicated, and verifying the sender’s domain turned out to be very complicated. Eventually I figured everything out. It quickly became obvious that the main clientele of these places were not authors sending out occasional newsletters but Internet marketers trying to sell goods. Mailerlite’s toolset was geared mainly to promotional emails for the purpose of selling stuff. It was overkill for what I wanted to do, but I could manage. Besides they had a free plan that seemed to service my modest needs.
Fast forward 1 or 2 years later. Apparently Mailerlite just erased my marketing campaigns and email signup page due to lack of use. Mailerlite even lost a list of the small number of people who had faithfully signed up for my mailing list. I ahd to begin the process all over again. For perhaps as long as a year, I had a newsletter signup form which didn’t work at all. (Here’s the bad one and here’s the one I just threw together).
So I started again from scratch. It wasn’t that hard, just tedious.
Wow, it’s been a while since I’ve done a geek-oriented post. Frankly, I don’t become interested in geek stuff until I encounter a reason to want to care about it. I’ve found two subjects to geek out about: chatbots and open-source animation software. I don’t expect really to become highly conversant in these tools, but I hope that in the next few weeks I can create simple animations.
I don’t know how seriously I’m interested in chatbots, but I am doing research for a story, and also I have been trying some out for the purpose of story creation (Just at the experimental stage, but…).
Author and blogger David Rothman talks about how to install a chatbot for your book. Basically you set up a free AI account (ChatGPT), install a wordpress plugin that connect to an AI engine, set up a third party database service, upload your book as a pdf with your wp plugin, do a lot of preliminary testing and embed the chatbot on your blog.
This chart separates the different functions of conversational AI (Source).
A lot of the introductions are clickbaity rankings of platforms; they seem to cover dev tools and platforms and front end tools more than the actual technology. I don’t see much documentation about how to customize NLP.
Open Source Animation Software (Blender)
I’ve been trying to make a simple 2D animation graphic in my VegasPro editor, and I was encountering all kinds of difficulties. I was going to ask a technical question about it on a subreddit, then had a lightbulb moment. Surely there are better tools to do this that I can just import into VegasPro.
Several free/open source tools exist to do that. After reading this reddit comment, I realize that all roads lead to Blender. Let me repeat that I am not a graphics guy and certainly not a video guy, so even being mildly productive will be a stretch, but I really really need to do some simple things. So begins my journey…
(Update: I looked at a 2d animation tutorial, and it might be overkill for what is essentially an animated sideshow).
Video Production for Bookish People
I’ll be putting together some video shorts for book publicity. Aside from making short animations, I have many of the tools I need, thank goodness.
For video production I’ll be using my OnePlus11 phone. ($500)
For editing I’ll be using Sony Vegas 19, Audacity and Gimp. The Vegas upgrade license cost 200$, but frankly DaVinci Resolve might might a good free alternative.
For simple animation, I’ll be using the free Blender software.
For lavalier microphones I’ll be using 2 Pack Lavalier Microphone USB C ($24)
For phone mount, I’m using the Metal Phone Tripod Mount 3 Cold Shoes & Arca Port.
For flexible tripod for phone, I’ll be using JOBY GorillaPod Compact Tripod Kit with Ballhead for Mirrorless Cameras up to 2.2 lbs. ($30)
For backup audio, I’ll be using my 4 year old Samsung Lite tablet (unreliable and no microphone) and Marantz audiorecorder + Shure Microphone (ancient, but reliable, even though I have to tape the damn memory card door shut)
First, an underlying nasty problem is that my Google Drive Windows app has been crashing. (So if I try to save to it, it throws up an error message). That might aggravate the sluggishness. Fortunately all I need to do is to kill the phantom process and restart the app.
Second, I have changed all my default download locations so that downloads get sent automatically to my Downloads directory. That saves a lot of time especially on Chrome (though it’s inconvenient to have to sort them and move them elsewhere).
Third, in Win Explorer I’ve been drilling down into directories on the left panel — not the right — and that seems to proceed more quickly.
Fourth, I now see that Windows Explorer lets you open in new tabs — showing more than one view in a single instance. It still can be slow, but it’s faster than two instances or doing everything in a single window.
Fifth, I delay the task of moving things from one directory to another so I can do it all in one batch. If I do it after a fresh boot, it is particularly fast.
Sixth, I’ve been searching for a way to extract multiple zip files simultaneously, and I think I’ve found the best solution (good on all platforms): 7 Zip This also appears to save time.
Seventh I’ve noticed that certain websites tax system resources more quickly than others. For some reason it’s worse on Chrome, so I generally divide things among three different browsers. Generally web pages that need constant updating of state have better performance on Edge than Chrome.
Finally I’ve been more inclined to restart Windows if I see things are getting too sluggish.
But every so often (maybe once a month or two) I end up confronting a technical issue which I absolutely must solve, and I cannot find the answer on the web. People say that half of being an IT guy is being able to use search engines to find the information you need. I generally agree, but sometimes the problem is very odd or maybe you don’t know exactly what problem you are seeing or even if you are using the incorrect terminology. Also, search engines are not as helpful for advanced geeks. Almost all the problems you encounter are complex and have an unusual set of circumstances that no forum thread is going to replicate exactly.
Partly the problem is having too many sources of information and being unable to winnow the relevant information. Sometimes postings on user forums are just not relevant. Sometimes you just lack enough information or smarts to understand the answer when it is staring right at you. Yes, I admit it: personal stupidity is often the primary barrier to a solution.
Describing the Problem: A Messy OCR Conversion
Recently I have been using a book scanner (CZUR ET18Pro) which scans the page and then uses the Abby Finereader engine (but NOT the actual software) to handle OCR conversions. It generally works great for books, but not great for scans of journal articles apparently. The scan can be converted into text pretty accurately, but you have two more issues: First, CZUR puts the text content for each page into a separate frame object. Second, some pages (such as pages of a journal) don’t have enough spaces between paragraphs, causing CZUR to insert paragraph marks at the end of EVERY line. (So if a paragraph has 6 different lines, instead of having 1 paragraph mark at the end, it has 6 different paragraph marks).
About the frames problem, I was quickly able to find a solution from the search engines. You could manually remove each frame or you could run a simple VB script to globally remove these frames using (like here or here) .
The second problem — paragraph marks after every line of text is a pretty hard one. I spent days figuring it out. I have two possible solutions: either I manually adjust all the line breaks or I must come up with a way to clean up these OCR documents.
Manually adjusting the line breaks is tedious, but not terribly hard. I just have lots of pages to do; ideally I would have a way to globally clean up these documents with MS Word’s Find and Replace. I’ve certainly used Find and Replace for documentations — even for complex substitutions. But I need to write some find/replaces that won’t cause any further damage and do it in a way that is easy to repeat.
Ultimately I know that I’m going to have to search for a single paragraph mark and replace it with nothing. That is the Big Substitution — and also the potentially most destructive. The trick is protecting the paragraph marks which you want to be there. But how? You should convert these instances to a temporary value which are immune to the Big Substitution — and then after the substitutions are complete, you can convert this temporary value back to a good paragraph mark.
Also, the order is important. If you get the order wrong, you may create extra work.
Microsoft Office offers some powerful functionality for Search/Replace. Indeed Word offers a limited number of preset search parameters. The first question: Do I “enable wildcards” in the search box?
I quickly realized that enabling wildcards offered more options for text processing. It included a lot of syntax for regular expressions. It still is complicated to write your strings to replace, but the big stumbling block is: how do you search for paragraph marks when wildcards are enabled?
Curiously, this is not documented on the MS Word documentation. Here is the magical voodoo answer from this great article:
You may wish to identify a character string by means of a paragraph mark ¶. The normal search string for this would be ^p. ^p does not work in wildcard search strings! It must, however, be used in replace strings, but when searching, you must use the substitute code ^13.
You read that right: When searching, you must use wildcards and use ^13. But when you are trying to reintroduce paragraph marks into the MS Word file, you must not use wildcards and instead use ^p.
Another gotcha I noticed is that if you remove too many paragraph returns, it will corrupt the files. Instead of getting a clean substitution, the MS Word file is totally blank except for a giant mishapen blob of dark lines and dots.
Here is the series of steps I devised.
Correct the obvious scanning errors, most of which will be highlighted. Usually they are hyphenated words which are broken up into two separate lines.
With wildcards turned on, you will need to manually search for optional hyphenation
Goal: remove optional hyphenation
Find: ^-^13
Replace (leave blank)
Manually or Globally? Globally. (this operation works pretty accurately)
Comment: Do this first because it messes up the substitutions later. Warning: this will not uncover some of the hyphenated words which were broken into separate lines.
Remove MS page breaks (some of these were accidentally added). Make sure to uncheck Use Wildcards for this find/replace. If it is easier, you can just copy the wildcard in the Find section.
Goal: remove all page breaks
Find:^m
Replace (leave blank)
Manually or Globally? Globally
Comment: Uncheck Wildcards and choose Page Breaks from the dropdown under “Special”
Remove MS section breaks.
Goal: remove all page breaks/section breaks
Find:^b
Replace (leave blank)
Manually or Globally? Globally
Comment: Comment: Uncheck Wildcards and choose Section Breaks from the dropdown under “Special”
Page through the entire chapter and add an para mark + $sectionbreak$ whenever there should be a thematic section break.
Manually page through the chapter and convert para marks followed by a capital I (Often it just so happens that the word I starts a line without it necessarily being the start of a new paragraph. You need to manually use Find/Replace to make sure you are doing only when I is the beginning of a new paragraph. You substitute these instances with $realparagraph$I Yes, that is an actual capital I after the $ sign
Goal: find/replace all new para + I
Find:^13I
Replace$realparagraph$I
Manually or Globally? Manually
Comment:
Now search for every time a para mark is followed by a capital letter. Note that the capital I is not included in this range of values
Goal: search for all new line paragraphs except capital Is
Find: (^13)([ABCDEFGHJKLMNOPQRSTUVXYZ"“])
Replace:$realparagraph$ \2
Manually or globally? Globally. It still will correct some things wrongly, but you can fix these.
Comment: Find has grouped the two terms with parentheses which allow you to reference them in the Replace statement (Note the \2 with the space before the backslash. I included a regular quote and beginning smart quote in the Find statement, but I think only one of them actually worked in my document. There are a number of false positives, so I recommend doing this manually.
Now for the Big Substitution. Eliminate all single instance of a paragraph return at the end of a line
Goal: Eliminate all single instances of a para return
Find:([!^13])^13([!^13])
Replace\1 \2
Manually or Globally? Globally (but Have that Ctl-Z ready!)
Comment: This searches for three elements where the middle element is a paragraph return, but the preceding or succeeding element is NOT a paragraph return. (The ! means “not”; the parenthesis will group things into element 1 and element 2 which are referenced in the replace statement. This step is very tricky. The Find statement prevents MS word from removing every paragraph return — just the ones at the end of the line. I can’t understand why the Find statement requirements 3 (instead of 2) elements, but somehow it never seems to yield satisfying results.
Now you will reintroduce paragraph marks where they are supposed to be
Goal: Substitute the holder $realparagraph$ with an actual paragraph return. You must turn off Wildcards!
Find:$realparagraph$
Replace: ^p
Manually or Globally? Globally
Comment:
Now you will add extra spaces (in the form of paragraph returns around the section breaks.
Goal: Add extra space around section breaks. You must turn off Wildcards!
Find:$sectionbreak$
Replace: ^p$sectionbreak$^p
Manually or Globally? Globally
Comment: When I have finished cleaning the MS Word version, I actually use a cut-paste operation to import them into Docbook XML using the Author mode of XML Oxygen editor. I will be replacing the $sectionbreak$ into custom html code, so I don’t need to convert them here. I just want it easy to see where the section breaks are.
There you have it. I tested this thoroughly on my test file. Over the next week I’ll do it with different files. Maybe I’ll uncover some anomalies or extra steps, but this is probably enough (I’m guessing).
Regular visitors may have noticed that I have changed my blogging theme. I don’t know; I think this is a temporary thing. I actually did this with no real purpose — aside from stripping the older Thesis theme and the book widgets which I put on the right sidebar. I liked featuring indie ebooks and recommended links and alternative navigation paths, but I had a come-to-Jesus moment 2 years ago when my Google analytics revealed (to my astonishment) that over 50% of my site visitors were viewing it on a mobile device. Here’s what it shows for last year:
Visitor Breakdown, 3/2022 to 2/2023
The sidebar stuff only worked on big screens, and it probably was distracting. The Thesis theme (which I have been been using for more than a decade) has always looked pretty great and serves a mobile-friendly theme. So I can’t really complain about it. But I wanted to update the look a bit — so I jumped right in and installed the default WordPress 2023 theme.
The default theme is minimal indeed, and the front page uses a magazine-style layout of posts (which I don’t like, but I can at least modify it). Also, it messes up my navigation and headings. Apparently this theme lets you modify the block elements using the realtime style editor. That’s good, but has a fairly complex interface in WordPress, so it was always a problem figuring out how (and where) to modify it.
Front-page looks awful — and in fact I don’t even like the thumbnail view. Ideally I would like to create a composite front page consisting of both the latest posts and some static content for navigation. I have always had a fondness for the long front page consisting of 5-10 full posts, but perhaps it’s time to move away from that.
One advantage of the sidebar is that you can create navigation aids; one of my favorites sidebar widget contained my most popular posts. I don’t mind creating manual navigation to call attention aids to certain landing pages. On the other hand, it would be nice to have these elements persist regardless of what web page you landed on.
For about a decade, blogs occupied a privileged place on Google search results (and thus the Internet). Google spidered through them and noticed that they were noncommercial and tended to point to “good links.” Eventually big corporations figured out how to game search engine optimization, and indeed sometimes blogs themselves were gaming SEO with keywords, link farms, etc. At that point blogs started to fade away in search results, and indeed search engines were starting to become mostly useless. Eventually SEO mattered less than popularity on social media and what order in the endless scroll the algorithms of mobile apps are using.
How do people discover web content? Who knows?! Who cares!? But it’s clear that content developers can’t rely on big tech companies to help people learn about their content. Site owners have to do that themselves. Perhaps social media uses algorithms to help people find engaging content, but content creators have no input about that. Better tagging and labeling can do wonders, but ultimately site owners have to hard code enough browsing paths for the user to follow.
Ironically, preparing for my upcoming ebook Non-crappy Things from my Blog will force me to improve the findability of fun blog content no one knows about. Stay tuned for that.
Links
For this month I will be collecting links about WordPress, CSS, typography and Git.
I’ve currently investigating an overall slowdown of my PC. Can’t figure it out. Most of the behavior occurs in Chrome (because that’s where I spend most of my time) and in Windows Explorer. Everything just slows down, and latency issues cause keystroke mistakes to multiply. Some symptoms:
Malwarebytes scans reveal nothing. Nothing is unusual on Task Manager.
I thought Grammarly was interfering with browser behavior — maybe adblock plus. I still haven’t decided. Killing Chrome doesn’t seem to solve the problem (sometimes it improves it).
Edit windows in browsers tend to have the biggest problems.
Hard drive has enough space.
Switching Windows causes the most problems. (I do this often).
A reboot solves the problem completely.
Facebook/Amazon/Google Docs often have the worst problems
I only use Windows Defender for Virus protection. I don’t run Outlook.
No unusual devices.
Also: I have a known video driver issue which sometimes messes up display of videos in full size.
One problem is that I always keep too many damn windows and browser tabs open. I can’t help myself. Sometimes when things get too sluggish, that causes me to open even more damn windows so I have something to look at while waiting for the PC to settle down. Possible culprits:
Crypto-mining
Syncing with Google Drive/Dropbox. Google Drive seems to mess up Windows Explorer often.
Additional observations:
I notice a huge amount of sluggishness on the URL bar in Chrome when Google Search is the default search engine. Restarting the browser often will fix this effect.
WordPress Links
Wow, I swear there are hundreds of articles online about how to choose WordPress themes and practically none that offer useful information. Almost all are clickbait with generic recommendations (“Choose a simple theme” “Don’t choose a bloated theme” and “Make sure it is compatible with your WP Plugins” etc). I want to know what features are available and what features I really want.
WordPress really has a complex ecosystem, and it’s a struggle finding basic information. I will try to include the most useful:
Update 1: Even though there’s a learning curve involved, I think I will stick to the 2023 theme and learn it backwards and forwards. Besides being free, it has some nice defaults and variants — plus it is a good way to learn about its deeper features. The good thing about it is that it’s mostly GUI-based, so I mostly don’t have to mess with CSS and Php. But I want to figure out if it’s easy or possible to use breakpoints for my customizations.
Wow, I’ve been learning a lot of stuff. Here’s my journal of how my learning is proceeding:
4/28 The hardest part is configuring the headings. For the life of me, I can’t figure it out.
4/28. I’m limiting myself to editing the 2023 theme in the style editor (for now anyway). I’ve learned that using LocalWP is a very good way to work on a private test site rather than doing it publicly. (Don’t know how to export my customizations for now.
4/30. It is really hard figuring out where to edit templates. Aha, you have to edit list view on the templates. Aha, the purple things are template parts or reusable blocks. Here is a list of all the theme blocks.
5/2. Breakthrough. I’ve been learning about the Layout features of blocks. I had accidentally turned off Inner blocks use content width. Unless you do that, blocks inside the header, main, and footer templates will be misaligned. Also the dimensions property in the Block Style interface is hard to grok. Basically they hide individual aspects of Dimensions unless you click the + sign (for more Dimensions options). Dimensions are really important when designing a page. Also, I’ve noticed that many block properties have a slider interface where you select 1-5 depending on what you want. At first, this really annoyed me, but I’m warming up to the idea. The key idea is that the WordPress people (or maybe the WP themers) are limiting the customizable properties for layout …and indeed all properties. Sometimes this seems wrong or inconsistent, but it’s also simplifying the design process for geek wannabees like myself.
5/6. Wow, I have really had a hard time with the limitations of the site editor. Particularly with header and footer, it’s hard positioning two elements on a row so that the left element is left justified and the right element (or elements) is right-justified. To solve that, I ended up adding a Row, then adding two columns inside that row and then justifying both columns separately. You can control spacing and margins and font size, but you can’t set max-width=”200 pixels” or something like that. Also, I was playing around with the Media + Text block. It’s hard to edit the height; the key thing (I learned) was inserting the image first and then resizing the image width immediately before adding the text part. (Once the text part is added, you lose the ability to resize the image).
5/8. I’ve become used to using page templates for everything (including for the site home). But if I use pages instead of posts, how do I create archive-type pages to land to? Query Loop Block is your friend. So far I’ve learned that to create your own archive, it’s best to create a basically blank template page (titled “Rj-archive” ) and then when you create a page, 1)choose the RJ-archive template as the template. 2)While adding content to this page, insert a query-loop block.
5/10. It can be hard to figure out where to edit something. So I’ve prepared this list:
Front Page — Use a specific page
Headings/Footers — I would create a separate template part, but then when it’s in good format, I would add it to the default heading part. You can always wipe it clean if worse comes to worse.
Archive of Posts (or Posts by Category) — I would create a page and then customize it by Adding a Query Loop Block.
Archive of Posts by Category. You should NOT select one of the preformatted query loop blocks. Instead you should choose a blank template, and then, unselect the option to use template archive. That allows you to filter by category/date/author.
Author Bio. There’s a block for that. You should add it manually to every post (I think).
5/14. Here’s a useful guide about adding custom html by using the Custom HTML block. Here’s some options about how to add a paypal button to your blog. UPDATE: Turns out I didn’t need to intall a WP-plugin. I just used a button wizard on Paypal and added the code into the Custom HTML block.
5/16. Learning all about SMTP mailers, contact forms, etc. Complicated to set up.
5/25. Setting up a custom Archives of Posts is really really hard.
5/26. Ok, I cheated. Instead of creating a query loop from scratch, I just selected one of the pre-existing outputs from my theme (and then customized that).
To create custom templates, you need to 1.create a custom heading template part with a different name, 2. create a custom template Page and then add the custom heading template part. (Have to wonder — how to set the custom template as a default). Aha, it looks like you should ultimately be importing for customization blocks into the templates named Page and Post rather than creating separate page templates (I think).
There is something called a Style Book — which is hard to reach. I’ve figured out how to find it: Edit Template (or template part) –> At the top bar choose the Yin/Yang Style icon. When you do, a new Style block will appear directly underneath. Click the eyeball icon. That will let you view all the blocks all at once, styled in their unique way.
If you have modified a very important template, how do you restore it to its pristine state? Answer: Go to Manage All Templates (Or Manage All Template Parts), click the 3 dots to reveal a new option: Clear Customizations option.
I haven’t been maintaining this column for a while but I’ve been learning a lot of new things.
I’ve been enjoying the CSS videos of Kevin Powell. Which units to use (I’ve never heard of ch), mastering css layouts, combinators, etc. Basically I’ve been using a small subset of CSS supported in epubs, and it was refreshing (I guess) to do some css for some static pages I was creating here and here. I have been growing more and more alarmed at the rapid increase in surfing from mobile devices (and I’m not talking about tablets!). So designing for responsiveness has taken higher priority (except for this blog, whose facelift I keep putting off). Some revelations
Designers have been talking about browser widths, talking about 60-70 ch, which shocked me a bit. (I ended up using 75). Also, designers have talked about font-size in the 1.8 rem range which also kind of shocked me. (I assumed wrongly that it was more along the lines of 1.0 rem). I actually used media queries for smaller displays, which worked fine overall, except for this one page where the long URLs seemed to force the font-size to revert to their lowest value.
For the generated HTML output from Docbook, I had to tweak the navigation controls using better CSS. (I didn’t want to try anything fancy on XSLT unless absolutely necessary). For example on this page, I changed one of the top titles to color: white to hide it and div.navfooter tr:nth-child(2) td:nth-child(2) to target the 2nd row of navigation.
Docbook has some built in parameters for XSLT which I know how to use. I was able to tweak the META tags in the headers to include Google Analytics tracking scripts.
Speaking of which, I was appalled at how often Amazon URLs and Google tracking scripts get flagged as invalid HTML (Amazon because they use lots of ampersands in URLs, Google because they don’t give values to some of their attributes).
I learned a little bit about web caching. When updating and testing my websites, I had the damnest time flushing my cache. I tried all sorts of browser steps, then moved onto different devices, and then different ISPs — and I still couldn’t view the latest CSS! After a quick email to my hosting service, I learned that you can purge cache directly from Cloudflare — which I did. Suddenly everything worked like magic.
Horray! I now have another monthly category of microposts for Geekstuff to fill with content. To make it easier on myself, it will cover 2 months instead of 1.
I have skipped doing this for several months now. I have been overwhelmed. I always find geeky stuff, but I never have time to make note of them — and then I end up forgetting about them.
Ended up buying another Bluetooth speaker because my other one only works for 10 minutes! I ended up buying a JBL Flip 6 for $99 (Here’s a review and another and a review video). Several notable features: USB-C port, waterproof, extra tweeter, rubber feet, 8 hours use, equalizer configurable through a mobile app, 20 watts,
I’m really intrigued by open source static site generators (SSG). Here’s HUGO. Sounds good — I guess, but the deployment details sound complicated; you can rsync via conventional webhosting, but most of the instructions are for cloud-based providers and github. Hey, am I being too old-skool by using conventional web hosting? Gotta investigate that. Update: I still want to try it out once, but the templating code looks a bit too hairy and not very human readable. Most of all, I want the resulting output code to be easy to decipher.
Trouble with mice!: I can’t understand it. A few weeks ago I was working away from home and my mouse became unusable. I finally bought a wireless mouse, which is good (I guess) but it doesn’t register the click immediately especially on chrome. Why must everything be so difficult?
Let me gripe about Google Sites. I made a website for a friend 8 years ago and used Google Sites (against my better judgment) to build the website. Google Sites has a wysiwig tool and several templates that are ok, but not particularly great. The main benefit of using it was to make it easier for the site owner (a nontechnical person) to make edits.
8 years later, I am asked to edit the site again. Normally, that’s no problem, right? Except that Google Sites changed its website management software (in a major way) and automatically migrated the old sites to the new system.
Last month I decided to buy the latest Paperwhite. I’m buying it mainly for testing purposes — though I hope to use it more than previous Paperwhites. I bought the 2020 Paperwhite and was underwhelmed.
Michael Muchmore has a review of Vegas Pro. I’m debating upgrading to version 19. Apparently, based on googling, it appears that Davinci Resolve’s has a lot of mindshare; they have a free and premium version, but they also sell a lot of specific DaVinci specific equipment.
About 6 months ago I learned that my knowledge of CSS is really outdated. I took pride in being able to do media queries and responsive design with CSS 3, but I had really fallen behind on grids and flexboxes and even units of measurement. It doesn’t matter so much in the limited formatting world of ebooks, but a major deal if you’re doing static HTML or even some templates for content management systems. Una Kravets has some interesting and helpful overviews of new developments.
Wow, recently Google notified me that its Backup and Restore Windows program in its Google One service has been updated (i.e., it’s going to be retired). Fine, fine, fine. I’ll do it; I just need to configure it properly. And it’s a big deal because most of my personal content is saved onto Google Drive after Dropbox became prohibitively expensive. I pay $30 annually for 200 gigs of cloud storage. (Dropbox only has as 2 TB plan and manages versions for only 30 days — which is practically the same as Google One).
Basically you were confronted with two tasks: Do you want to mirror the G drive on your local machine or do you want to stream it? I actually create a lot of content on Google Docs, but I’ve also been using it for file backup. The answer turned out to be that I really wanted to stream my drive (which meant that most content resides on the cloud, except directories you specify). You do that by right-clicking on the local directory and selecting Offline Access –> Available Offline.
After thinking about it, I can appreciate the better features in this arrangement. Being able to keep mirrored directories on your local directory was unwieldy — particularly true if you’re using one of those Chromebook with limited local storage. Synchronization proceeds as it did before, but there are some scenarios I haven’t really contemplated: what happens if you need extra space on your laptop and want to delete content from a directory which you’ve arranged to be available for offline use. I’m assuming that changing it from Available offline to Online only will safely delete the local copy, but I’d have to test that out first.
During the migration, my local content appeared the same as before. Everything fine, right? Not so fast. It turns out I had two different local paths:
G:\My Drive\1local (new path)
C:\Users\idiot\Google Drive\1local (old path)
1local was a root level directory which I created to contain all stuff I wanted locally. G is a virtual drive which really doesn’t exist on the physical drive — but contains a listing of all directories and files (which are available even if you check the properties tab — the number of files and directory size is as before).
To my horror, I realize that I still had multiple files open in text editors which were stored on the C drive rather than the G drive. Also, I had pinned several Google directories from the C drive to my Quick Links.. Don’t want to do that!
Even though I didn’t quite remember when I did the software migration, but I searched all my files in my C drive Google Drive path for this week and last. Luckily, I hadn’t edited a lot of things and could manually verify which files were in my new virtual G drive. I caught a few recent saves which were not in my G drive, so I simply copied them over to G.
Now the big question. Google is asking: Do you want to remove your old Google Drive folder? Delete all my files?? I’m not confident to do it just yet. I need to test some things, and then I’ll let you know.
I’ve been testing a drupal website this week. One of the hardest things about drupal is figuring out what to learn. I am no developer, but would regard myself as a site implementer or planner. Part of the challenge is just figuring out all the moving parts of drupal core. Then, it’s using the core features to develop a website that does what you want it to do. Then you have to figure out what external plugins you absolutely need and how to customize those things. Then you have to figure out look-and-feel issues, usability, security and maintainability.
When I installed wordpress for the first time in 2003, it was fairly straightforward: mysql + php. Frankly I’m amazed that this blog has remained on wordpress for as long as it did. I took a lot of things for granted about WordPress — that its upgrades were easy, that I didn’t need to learn many features and that I wouldn’t need to install many plugins. I’m using a mobile-friendly theme that I actually paid for, but frankly, it was a shock to learn a few years ago that a majority of my
One of the hardest challenges is figuring out what the current status of drupal is — not just the core, but the plugins.
What Drupal Needs
In many ways a project like Drupal offers an abundance of documentation. But there’s one thing that web projects like Drupal just never seem to do.
It’s nice that Drupal has a lot of functionality, and I do appreciate the walkthroughs via screenshots and screencasts. What the docs never seem to do is explain why a feature is useful.
I can usually figure out the how, I just can’t figure out the why.
When using a CMS, you start out with business needs and try to figure out how you can solve these business needs using a tool like Drupal. Take for example taxonomies (which I basically understand, but not as a Drupal content type). How does creating a taxonomy help a site? Why would a user need this? (At this point, I still do not know, although that is not a super difficult task).