Category: geek notes

  • RJ Geeky Explorations #18 (2026.10)

    See also: Previous  and Next (View all)

    Totally random, but here’s a David Letterman interview with programmer guru Grace Hopper. (YT) Here’s an inspiring 16 minute vid (YT) about Hopper and her other female contemporaries produced by Community actress Gillian Jacobs.

    Epub Production/CSS/

    hello

    WordPress and Security

    YT Tutorial about how to create a child theme. Surprisingly simple and useful. It was suggested here as a safer alternative to editing a theme file.

    Internet Tools

    Inside Out Library, a tool that lets you discover public domain images using keywords and image similarity.

    hello

    Font/Typography

    Pimp My Type (aka Oliver Schöndorfer) has a good introduction to the font matrix pairing system. Here’s a One-Click Font Pairing Generator. Here’s a great YT discussion with Indra Kupferschmid (YT) about pairing fonts, 3 effective ways to pair fonts, and seeing/pairing typefaces. His Pimp My Type Newsletter is something I always read — especially his Font Friday reviews of various free fonts.

    SuperHi YT channel has some good font vids. Getting started with variable fonts, adding web fonts with Google fonts,

    Docbook XML/XSLT

    Casual readers of this blog may not realize how deeply I have gotten into Docbook XML since 2010; Norman Walsh created Docbook in the 1990s to use for technical docs. Bob Stayton wrote these great Docbook XSLT stylesheets and user guide, and in the 2000s, another developer wrote a stylesheet outputting it to epub. Since 2010 I have learned everything about the Docbook XSLT stylesheets. The learning curve was pretty steep (and so was support for epub on the Kindle), but I figured everything out, and now it’s second nature for me. I have even used it to output static html websites (like this) which I think look first class.

    At the same time, Docbook XSLT was based on XSLT 1.0, an out-of-date standard, and its rendering of HTML and CSS was archaic (even if the basic XML ontology was sound). The actual XSLT code was complicated and above my pay grade — although I was able to do several XSLT tweaks in my customization layer. People had talked about rewriting the XSL to bring it up to date, but it never actually happened. That wasn’t a real problem because the 1.0 stylesheets worked perfectly fine, and I already knew its idiosyncrasies. Another strange thing that happened is that the Docbook mailing list disappeared, and now nobody was really seeking help in a very public way.

    Lo and behold, it now appears that Walsh has written the Docbook XSLT using XSLT 3.0, released it this year and seems to be updating it. It is called Docbook xslTNG , and I have been perusing the implementation instructions (quite complicated) and the enhanced functionality.

    I think I’m going to play around with it. I use Oxygen XML editor to make content and handle the transforms (even though I don’t actually use Oxygen’s own transformations to do it). The hardest part appears to be setting up the toolchain (I have never heard of Maven, Gradle, Ant, etc and am barely fluent in github). The XSLT 3.0 syntax seems hard to figure out, but I can probably do it.

    My main concern is epub output and making sure that I can re-create the XSLT customizations I did with the 1.0 XSLT in the 3.0 stylesheets. Recently I have gotten into using Docbook as a static site generator. I did it in my own funky (i.e., incompetent) way, and frankly some of the XHTML output no longer seems like proper code for mobile-friendly websites.

    Strangely, even though I come from a technical writing background, I have not used Docbook very often for technical manuals or structured content. On the other hand, I have used the ARTICLE and BOOK docbook element to output all kinds of web content and sometimes content both for epubs and web content. Ironically, while busy rewriting/documenting my process and templates for XSLT 1.0 projects, I happened to stumble upon the new 3.0 stylesheets. Discovering this may be jump for joy (and sigh about the extra learning I’d need to do).

    Again, there is something to be said for using the battle-tested old system (even if it’s more convoluted and requires more documentation on my part for my own projects). So I’m not totally onboard with switching to 3.0. On the other hand, I already know what Docbook is,what it can do and how a facelift could potentially make using it a lot easier than it used to be.

    Learning XSLT

    I have been trying to learn/relearn XSLT concepts to make it easier to figure out Docbook XSLTng

    Videos: What’s New in Oxygen 27 (that’s the Version I have). Intro to XSLT using Oxygen, Oxygen AI Positron for XML Editing, Oxygen Docs as Code, (also here) Markdown Support in Oxygen, (also here). My mind was blown that you could use its builtin AI Positron to explain XSLT code and even to generate XSLT code.

    Configuring Gmail

  • RJ Geeky Explorations #17 (2026.7)

    See also: Previous  and Next (View all)

    Windows/Powershell

    While exploring the magic of yt-dlp, I realize that I really need to become proficient in Windows PowerShell. I don’t know why I waited so long to do that.

    Epub/CSS/Web

    I have recently made a lot of progress on my epub template. Now comes the hard/fun part: writing css specifically for the web. Theoretically I have already done the hard stuff on several different websites (see the long interview I did with Texas author Clay Reynolds). I just need to collect all the things I learned into one common template using the same style classes from my epub file.

    Speaking of epub css, I had an interesting revelation. Previously my css to manage images on epub had meaningful functional names (i.e, top-chapter, full-page, . Eventually I realized that the context or the function of div + image mattered less than how wide I wanted the image to be on the display. So I changed my css classes to things like: div.image-float-right-50percent img and div.centered-image-35percent img (and variations of that).

    Suddenly everything was easier. In ebooks the only two things that matter for images are 1)what percent of the width should it occupy and 2)should it float or be centered as a block? At first, I thought I might need to do variations for float-right and float-left; maybe if I am designing a sophisticated interface or navigation aid, that would be necessary. But in most cases when you want to float something, you float it right. You could perhaps compile a list of float-left styles. But instead, I’m going to attach an id attribute to these HTML elements for those isolated cases so I don’t need to.

    The counterargument to using numerical styles is that the names for these styles might be inappropriate for generating html for the web. Generally CSS shouldn’t embed values in the nomenclature but merely refer to functionality. In ebooks you have a fixed image width, but in browsers, there are more possibilities. I fear that something like div.image-float-right-50percent might need to have a sliding percent depending on the viewport when viewed in a browser Then again, maybe the css characteristics for browsers will be the same for all 50% width.

    **

    Here’s ebookpbook, a full-services ebook/book production company (based in Austin). I’ve been browsing through the blog entries on book/ebook formatting for fun. Here’s a typography reference, DropCaps,how to turn off image compression in MS Word, Amazon image compression (which has always seemed to be the blackbox of kindle creation.

    I use a different workflow (mainly Docbook –> HTML +CSS –> EPUB), but I suppose it’s about time to adopt a single sourcing tool like Atticus. I have a robust epub template and enjoy the ability to customize my css for advanced formatting situations. But as a practical matter, it’s overkill for 90% of the ebooks out there where all you really need is a few nice themes.

    WordPress Databases and Hardening

    Now I am needing to improve website performance for WordPress and quickly! My hosting service is making me aware of my use of system resources, and I’ve had to optimize this website. I’ve also decided to focus more on WordPress security and backups. In the last two years the web has become a denser, more complex and dangerous place.

    Caching/Performance:

    Green Geeks blog. (Lots of good techie tutorials and webcasts).

    Green Geeks Webinars:

  • RJ Geeky Explorations #16 (2026.5)

    See also: Previous  and Next (View all)

    I’ve been focused on developing standard CSS for epubs as well as statically generated websites. Also, I hope to write an XML schema and write some XSLT transformations.

    Epub / CSS

    AI: Troubleshooting vertical gaps between HTML Elements.

    Two tools for creating/reading books with synced narration: Storyteller Platform and EPUB Media Overlay Editor (epub-moe) (Background).

    WordPress / Blogging / Webmastering

    Wow, i just realized that the default 2025 WP theme uses a font-style which is much too light for most readers. It’s somewhat hard to figure out where to make global changes to font in the theme.

    In WP-Admin, choose Appearance –> Editor –> Styles (under DESIGN) –> Typography.

    Then under Elements, select Text (or Headings, etc).

    Under the dropdown option, you can choose the variant of the font family which appeals to you for the font.

    Most WordPress themes come with two or three installed fonts (usually from Google Fonts). I’m not 100% sure, but I’m 98% sure that the installed fonts in WP themes are variable fonts (which can be customized on the fly — and are supported on most browsers, though not on ebook reading systems).

    For the 2025 theme, I was using Manrope font for text, but I was using the Regular variant (which is too light). All I had to do was switch from Regular to Medium and voila! That would change the variant of the font family globally to a darker and nicer Medium.

    AI Queries

    Here is Gemini’s answer about non-Kindle ebook platforms globally.

    Here is Gemini’s infuriating answer about why Google Play Books does not support break CSS (drives me crazy!)

    XML / XSLT

    Graphics/Multimedia

    YT dlp, a utility to help you download vids and audio from Youtube. There’s a web-based interface you can use, but I downloaded the command line program, used the presets to write my request and downloaded it locally fairly easily.

    I have been making some more literary elevator pitch vids.

    Are they better than when I started making them? Unsure, but I’m getting faster at making them.

    Up until now I spent a lot of time learning how to use Vegas Pro 19 and troubleshooting the idiosyncracies of the software on my middle-aged PC.

    I also used to spend a lot of time editing and moving clips into the right position so that the transitions didn’t look too terrible. You have to have a sense of timing and rhythm. Strangely, it’s easy to overedit out the pauses and breaks. I have to force myself to let things naturally. But you also have to sense which parts of the sequence is not accomplishing anything or dragging down the rest of the video.

    (Correction: While I generally agree that editing out the pauses of video looks awkward, you can easily edit the pauses of audio, and the resulting talk will be cleaner, cleaner and easier to follow Audio edits of speech are barely noticeable).

    I’m past that. Sure, occasionally I have problems, but I usually don’t spend much time on that. Here is what I spend a lot more time on:

    Writing the script. These elevator pitches have to be carefully scripted. First, they need to be reasonably interesting and succinct. Second, I usually am integrating several audio/video files into a single coherent script. It can be hard to do this and still keep the message coherent.

    Preparing the graphics. Perhaps other video editors make it easy to create graphics within the program. Eventually I realized that this was extremely tedious with Vegas Pro 19. It was much easier and faster to make slides using my preferred graphic program (Gimp for me) and then just import the finished graphic into Vegas Pro. For my last two vids, I ramped up my skill level a lot on Gimp (especially for the first and last slides). I do the credits almost entirely in Gimp. Sure, it may be nice to have video effects or animation, but is it really providing that much value?

    Selecting graphics to use as inserts. I learned quickly that the videos of myself are laughably bad and erratic. I need to do multiple takes and edit until I have the best take. Sure, I can edit out the crappy parts and if you juxtapose two clips together, it doesn’t look awful. But even though audio edits are almost invisible, video edits are still noticeable, and you should avoid these juxtapositions whenever possible. Instead, it’s better to go from a full size image to the start of the next clip. For that reason, it’s important to collect as many graphic inserts as you can.

    The challenge has to do with permissions and rights. I basically have no budget for clearance. If I put an image on my video for less than 2 seconds, a fair use case can plausibly be made. On the other hand, the last thing I need is a legal headache after production. Obviously it’s better to find no-cost media which are free to use in commercial contexts. But some kinds of media are highly unlikely to bring legal scrutiny. I’m almost at the point where I’d start subscribing to royalty-free media just to avoid the possibility of headaches.

    Decorations for Talking Heads. I use a lot of talking head shots of myself, and that quickly becomes tiresome unless you have inserts or cuts to something with more animation or motion.

    But you can liven a static video somewhat by adding graphics or text to the images. Vegas Pro has a Picture in Picture (PIP)video effect which allows you to add smaller graphics inside videos, and believe me, I have used this effect to the max! (By the way, I use this effect so much that I wonder why there isn’t an easier way to add it). Sometimes these PIPs are the only interesting thing about the video.

    Using/Making Transparent Images. Once you decide to overlay a lot of images over video, you face the problem of having to slice out the image out of the original graphic. You can’t be constantly overlaying rectangles of photos onto videos when all you need is a single element inside the rectangle.

    The end goal is to produce an image where only the element is visible and the rest of the picture is transparent. That means when you overlay the image onto the video, only the selected element will appear over the video. Note that images cannot be transparent if a)the image is a .jpg file or b)if the image in your editor lacks an alpha channel. So if you are manipulating the image in gimp, you probably need to be using an .xcf file (gimp’s native format) or a .png or .webp file.

    Therefore, I have had to learn a lot about how to slice portions of an image and add it to a video (or another graphic). Learning how to do this has probably been the hardest and most time-consuming part of using Gimp (my graphics tool). Here is the sequence of steps I have to do to slice an image out of a picture.

    1. Add an alpha channel to the original graphic.
    2. Figure out how to isolate/select the element you want from the original image. (More on that below)
    3. In Gimp, Turn on the Selection Window (under Windows) so that it appears in a dockable window.
    4. Use your selection method to select only the parts of the image that you want. (You may need to choose Select –> Invert to achieve that).
    5. Highlight the delete button to suck out the rest of the picture and leave it as transparent.
    6. Use Crop to reduce the size of your edited image even further.

    Selecting by Color. Probably the most common use case is removing the background of an image. If you are lucky, the contrast between the background and main element is clear. (If you generate the image from scratch using AI, all you need to tell AI to make the background of the image a certain solid color which you can easily remove).

    To do this, click the area of the background with the color, Select by Color and then press Delete. You might need to invert the colors.

    Alternatively, you can use the Path tool to draw around the borders of the element you want to select.

    1. Start adding a series of dots to surround the region you want to enclose. Be sure to add them consecutively (and right click to delete extra ones). Eventually the last place you want to place a dot is the first place you put a dot, so that will cause the region to be enclosed. (If it doesn’t connect smoothly, or if the dot goes off somewhere wild, you may need to delete dots or just start over). Press enter within the tool.
    2. Click delete (or Invert –> Delete) to delete the part outside the connected shape.

    In one case I had several regions which needed to be deleted. So I had to delete the regions one at a time. After you use the path tool to draw another shape around your second region, in path options, click SELECT FROM PATH.

    The key thing was making sure that the Selection Window is visible so you can verify that the second region is in fact highlighted along with the primary region. The selection window confirms which regions are being selected for deletion.

    Update: Select by Path is still a very clumsy way to make things transparent. But I found some of the paint tools like CLONE help smooth out imperfections of photographs.

    Removing a strip from the middle of an image and connecting everything back:

    1. Select the segment: Use the Rectangle Select Tool (R) to select the entire right segment.
    2. Cut it: Press Ctrl + X (or Cmd + X on Mac).
    3. Paste it: Press Ctrl + V (or Cmd + V on Mac). This creates a Floating Selection.
    4. Move it: Press M to activate the Move Tool. Click inside your pasted segment and drag it to the left until it abuts the left segment.
    5. Anchor it: Press Ctrl + H (or click the green anchor icon at the bottom of your Layers panel) to lock it back down into the main layer.
      In GIMP 3.2 for Windows 11, pressing Control + H acts as a toggle for your selection boundaries. It hides or shows the “marching ants” (the dotted lines) that outline your active selection. This lets you view your image clearly without those lines blocking your design.

    Honestly I have a hard time moving just the selected segment and then doing other functions (crop, clone, etc.). Some things I have noticed. If you are connecting two segments, one exists on a layer above the other; that may interfere with the ability to edit/overwrite portions of it. You can fix this by reordering the layer and/or checking the Sample merged option on Clone tool.

    Here’s another way to do it with Zealous Crop (I haven’t tried this before, but it makes sense)

    If the empty space between the segments is completely transparent (shows a gray checkerboard pattern), GIMP can do this instantly for you.

    1. Remove any active selections by pressing Shift + Ctrl + A.
    2. Go to the top menu and select Image > Zealous Crop.
    3. GIMP will automatically slice out the empty transparent strip and seamlessly snap the left and right segments together. [1, 2]

    I have noticed that despite cropping gimp will “remember” the deleted/hidden parts of the original image. I could not figure out why, so I ended up exporting from .xcf file to a .png file and/or flattening the image.

    Tips on Using Gimp’s Clone Tool

    1. After hitting the Clone tool, you should control-click on the region you want to start cloning.
    2. You can adjust the clone brush size to suit your needs (or even choose a different brush), but you can also change the angle of the clone tool. This makes it easier and smoother to overwrite diagonals.
    3. Sometimes Clone doesn’t work. To fix, Select None and/or change layer order.

    Set Up Your Target Layer (Best Practice)

    To keep your edit clean and non-destructive, you should clone onto a fresh, blank layer so you don’t overwrite your original artwork.

    • Step 1: Open your Layers Dialog (Ctrl + L).
    • Step 2: Click the Create a new layer icon at the bottom of the panel, name it “Cloned Elements”, and make sure it is filled with Transparency.
    • Step 3: Click this new blank layer to make it your active target layer. [1]

    3. Perform the Clone Action

  • RJ’s Geeky Explorations #15 (2026.02)

    See also: Previous  and Next (View all)

    Several topics are recurring in my geeky world. So maybe I should create sections for them! Generally this contains how-tos and technical discussions — not so much talk about the relationship between technology and society (which will go on my linkdump instead).

    WordPress / Blogging /Webmastering

    Ways to add a variable font in WordPress.

    Best 15 Google Fonts to use.

    Nielsen Group has lots of usability articles (haven’t looked at that site in over a decade!) I think I attended a great Nielsen workshop in 2001. The topics they cover are very commercial/corporate, but occasionally they can teach me a trick or two. Negative Impact of Mobile-First Web Design on Desktop, Here’s a (very usable) index of Articles and Videos. Here’s all their articles about navigation and writing for the web.

    Wow, I was looking up how to clone a page/post on WordPress. The Net tells me that there are plugins that let you do it with the click of a button. But there is an easier way: Open the page, select Code Editor (top right). Then in that same dropdown, under Tools select Copy All Blocks.

    AI/Gemini/Online Consciousness

    I tried Google AI Pro for two months. I used it mainly for Nano Banana and for the ability to use it to make short animated videos (you can see 2 such animations in this book video; look at 0:31 seconds and 1:09 ) Although I was generally happy with the videos I was able to produce, it was only after several tries, and I was surprised at how often Gemini either ignored or violated my instructions. I generally started with a sketch created by Nano Banana and suggested simple movements. Sora would generally go overboard with the animation or have elements hiccup and lose consistency or position. Most of the movements from the video were created by special effects on Vegas Pro.

    I had only subscribed for 2 months (for $20) with the intent to cancel after that. Strangely, Google cancelled my storage plan, so after the AI plan expired, I had no backup storage. Luckily (and perhaps not coincidentally), after the introductory rate expired, Google now had a Google AI Plus plan for $50/year which included 200gig of storage (which I was paying $30 for).

    I am going gaga over the Token Wisdom podcast which is one of the most interesting podcasts I have ever encountered. Frankly I can’t make head or tail or it. A man named Khayyam Wakil (who is a futurist/venture capitalist/scientist/who knows) writes these articles — or maybe he just collects interesting articles into an online notebook (Google’s NotebookLM) . The podcasts consist of interesting discussions between a male and female about recent postings by Wakil. It is full of nuggets and cool insights. But as I listened further, these things became apparent:

    • the podcasters/voice talent seemed to go gaga over Wakil’s genius or insights.
    • their voices seemed highly professional and pleasant to listen to. The podcast patter was informal and conversational. While listening, I started thinking — how do they script this? How do they edit it?
    • the podcast episodes never identified the speakers and the liner notes don’t mention anything about the production.
    • The Token Wisdom website has tons of postings that are half-articles/half-memes.

    Eventually it sank in that this podcast (and maybe the material) might actually be entirely computer-generated. I know that companies like elevenlabs were improving voice-to-speech; I don’t doubt that Khayyam Wakil actually existed (or that some brilliant human must have selected the concepts or texts that form the basis of the episode). I just never imagined that the transcript and voices could be generated in such a way to convey informality and fun.

    The Token Wisdom website was unhelpful. It had a lot of source material, but never talked about the podcast itself. Clues began to emerge. On the person’s Linkedin Site, he made a post about how he used Google’s NotebookLM and used Documents to Speech to produce something podcast-like, Then on his website, he talked about learning about and even mastering ElevenLabs Pro (a cutting edge service for converting text to audio).

    Robert’s EPUB/CSS Template

    Lately I’ve been working on a master css file to use for all my epub files. Up to now, I’ve assembled various styles which I re-use often, but frankly, some of the css is redundant and not well-documented. Also, my epub production processes uses docbook xml and XSLT. One quirky thing is that you need to use XSLT to create css classes, so that means preparing your styles in advance.

    For this I hope to make a sample epub file which showcases all the important CSS and templates. Most of this is already done, but I just need to make some code examples and document it in an ebook. In the meantime, I am learning some new things about css, epub, etc.

    Here’ a long discussion about epub pagination in Readium. Here’s a long discussion about page breaks and Apple books.

    Graphics/Gimp

    hello

    Audio/Video/Miscellaneous

  • RJ’s Geeky Explorations #14 (AI/Gemini)

    See also: Previous  and Next (View all)

    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.

    (20 credits for Veo 3.1)

    Nano Banana Resources,

    Subreddits: Bard, GeminiAI,

    Useful threads: Convert old b/w photos into recent-looking color photos.

    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.

    Fortunately I have found good documentation about this feature (finally). What is KeyFraming: How to Use Keyframe Animation.

    Other good introductory docs on the Vegas website: Making Video Montages with Slideshow Creator, Using Chroma Key Effects and Green Screen, Text Animation, Transitions, Video Effects,

    Holy cow! Vegas Pro had a built in Video Capture capability and I had no idea.

    Here’s a decent video demonstration of the Ken Burns effect.