Posts Below
6/14/2017 - Don't Put an Air Conditioner On Its Side, Back, or Upside-Down (Science)
5/27/2017 - Various plans and projects - funding welcome (Software)
4/18/2017 - Taxation should be totally banned (Finances)
4/18/2017 - Cow milk's flavor can be damaged by exposure to light (Food)
3/27/2017 - Salty XML Transformer v1.0 (Software)
3/14/2017 - The Mad Drummer (Music)
2/5/2017 - A simple Schematron demo for PHP 5.6.28 and Saxon/C 1.0.2 (Software)
2/3/2017 - How to get the Schematron Testing Framework (stf) to run in Lighthouse 64 Puppy Linux 6.02 Beta 2 (Software)
1/12/2017 - VUE: How to detach images from bubbles (also known as nodes) (Software)
1/8/2017 - GNU Emacs: Using helm-unicode; changing the font and font size only for helm-unicode; etc. (Emacs Lisp)
1/8/2017 - My slightly modified VUE: Visual Understanding Environment (Software)
12/19/2016 - Links: Music generated (or partly generated) by software (Music)
11/26/2016 - The renovated Puppy Linux Setup Kit will probably require PHP and PHP-GTK (Programming)
11/17/2016 - Always check ingredients lists, since you never know when a food company might add sucralose, or who knows what else (Food)
10/8/2016 - My nice, now "organized" room :-) (Journal)
9/21/2016 - Link: "It's Impossible to See all the Dots on this Optical Illusion at Once" (Science)
9/19/2016 - How to make Saxon/C into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8 (Puppy Linux)
9/1/2016 - The death of Star Trek actor Anton Yelchin was possibly a result of software-controlled car parts (Software)
8/26/2016 - Link: Free eBook Giveaway from Hay House Publishing (Books)
8/25/2016 - Zippable pillow protectors: better than plastic bags for organizing things (Self-Help)

Welcome to Astroblahhh.Com. This site, consisting of both blog and non-blog pages, features a gradually growing assortment of miscellaneous things on a variety of topics. I, the author of most of the stuff on this site, usually go by the name Apollia on the internet.

This blog was generated by the WordsPlatz blog software, which I wrote from scratch.


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down
Don't Put an Air Conditioner On Its Side, Back, or Upside-Down
Wednesday, June 14th, 2017
04:34:25 GMT


I had to get a new air conditioner recently. Unfortunately, I and others didn't notice that the new one's box said to "ALWAYS KEEP THIS SIDE UP" (the top side). So, it ended up resting on its side overnight.

I finally noticed that in the morning. I put it upright, and, since I naively assumed it having been on its side overnight probably wasn't that big a deal, we installed it some hours later.

It seems to cool my room well enough, but, I don't know yet how to judge if it's working as well as an 8,000 BTU air conditioner should in a room of whatever size my room is. And even though it didn't make any bad-sounding noises when I first started it (nor anytime after that), I started to wonder if maybe it ought to be working even better.

So, I searched the web, and was dismayed to find that putting air conditioners or refrigerators on their side, back, or upside down is generally considered a bad idea.

I'm not at all clear on what the actual scientific facts here are, like how long an air conditioner actually needs to be left upright before running it, to fix whatever goes awry from it being positioned wrong. This air conditioner's manual says nothing on the subject (unless I missed something).

However, I see now that the box says "DO NOT PLACE UNIT ON ITS SIDE. IF UNIT IS ON ITS SIDE, PLACE UPRIGHT AND WAIT 2 HOURS BEFORE STARTING." I'm relieved to know that at least I accidentally followed the latter instructions.

Anyway, just thought I'd point out my naive mistake of leaving my new air conditioner on its side, in case pointing this out might possibly rescue others from making the same mistake.

Sometimes it amazes me how much stuff there is in the world that I don't (or didn't) know the least bit about, like how air conditioners even work at all. Even though air conditioners are such a brilliant invention and definitely one of my many favorite things about our modern era.

I tried to read this very technical page for clues on how long it might take the oil in my air conditioner to settle back into its proper place after putting my air conditioner upright. And also this other nifty page, and various others.

But, I'm definitely not as scientifically literate as I'd like to be, so, the main thing those pages did for me was remind me of how much more there is for me to learn. Which is both humbling, but also rather exciting. There are probably tons of fascinating things in the universe that remain to be discovered, and it's well worth remembering that we all still don't know everything yet.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Various plans and projects - funding welcome
Saturday, May 27th, 2017
01:28:10 GMT


Last edited May 27, 2017 at 1:45 AM EDT.

For various reasons, I have wanted for years (actually, decades) to be able to move into my own place. But, my financial problems and health problems have so far made that impossible. (Or at least, not at all realistically feasible.)

Even just having enough money to realistically be able to move out would probably improve my situation dramatically - even if I ultimately decide to stay where I am to save money.

So, if anyone would like to help fund my possible move out to my own place, or any of my other plans or projects, donations and microdonations are welcome.

I actually will probably end up staying here, but even if I do stay here, having more money will make things much better and might also help me get over my possible adrenal fatigue and possible PTSD faster.

Been too stressed out to feel like dealing with (or even reading) a lot of my email, so, I probably won't respond to messages, and might not even check for a long time to see if I got any donations, because as long as I don't look, I can maintain my hope that maybe someone has financially rescued me and I just don't know it yet. :-)

So, please don't be worried if you don't get a reply for a long time. I will check my mail, etc. eventually when I'm feeling sufficiently better.

Thanks again to all you kind people out there. Because of you, I'm doing much better now than I otherwise would have been.

I think I might actually be en route to becoming healthier (except for being older) than I ever was in the past, back when I was still a headachy caffeine addict who too often ate poorly (often just due to lack of interest in food - not always for lack of appealing food).

I still think my severe sleep issues are probably incurable, but, as long as I have sufficient energy for a good long while after I wake up, I don't mind being wide awake and energetic even at often unusual times. Fortunately, more and more lately, I've been able to feel that way despite (and surely partly because of) no caffeine.

For too much information on my health struggles, read this. :-)

I still don't yet feel up to seeking work, such as freelance work at (formerly known as oDesk). I'm not yet sure if my recently improved energy is going to last or not, and I'm concerned that feeling obligated to get things done quickly and well might stress me out and thereby harm me more than the money from jobs might relieve my stress. I'd probably feel most comfortable doing very easy, relatively mindless stuff like transcription, but the pay for that is generally so low it's probably not worth the trouble it would be for me and the time it would waste.

So, I'd much rather just keep working on renovating my Puppy Linux Setup Kit (primarily), among other things.

That (and a lot else in my life) has gotten much easier lately, thanks to the wonderful concept mapping software VUE, which I forked and modified to make it more comfortable to use as my main note-taking tool.

And the magnificent GNU Emacs and multifiles-apmod.el continue to be very helpful.

So far, I still have only read part of The Art of Unix Programming by Eric S. Raymond. But that, and doing so much with Bash scripting since early 2016, and seeing even more clearly how naive the monolithic designs of many of my past projects were, have encouraged me to improve the overall architecture of my projects by splitting things up into smaller, more independent tools, rather than having so much stuff unnecessarily blobbed together.

So far, it's looking like the core of the renovated Puppy Linux Setup Kit might turn out to be .ini files and Bash shell scripts after all, rather than PHP or Perl and HJSON. (However, I have so many old-style Puppy Linux Setup Kit scripts that I'm definitely working on keeping them perfectly useable, with some slight improvements.)

I actually probably would have used PHP and HJSON if they were available at startup in most Puppy Linuxes, because PHP is still my favorite, most comfortable language, and you can do more with HJSON files than INI files, like put in values with multiple lines.

But, I don't know of any Puppy Linuxes which have PHP and HJSON built in, and it seems unreasonable to expect users (or even myself) to compile PHP from scratch (even with helpful scripts walking users through the process) every time they switch to a new Puppy, just so the users can get on with using the rest of the setup kit.

Bash is still definitely not my favorite language, but, it's a lot better and more capable of doing what I need than I originally thought.

Here's a cool blog post I ran across a while back which shows how object-oriented programming can be done in Bash!

I suspect I'll like Bash even more if or when I build a visual programming system using my modified version of VUE as the GUI (graphical user interface), and some separate PHP and XSLT scripts to convert VUE maps (which are in XML format) into source code in any programming language I want.

Then I won't have to struggle to remember details like the rather complicated series of characters sometimes needed to refer to an array in Bash - "${array[@]}". Instead, I'll be able to just put only the array's name in a specially-decorated bubble. Then, my visual programming system will somehow know to wrap the array name with those mysterious hard to remember characters automatically when the VUE map is converted to Bash source code.

I suspect being able to rename things, hide clutter away, easily put nicely-styled comments and/or lolcat pictures wherever I want, and not have to type </> and quotes all the time, might make XSLT and XML code a lot more fun to read and easier to write, too.

At first I intended to only update my Puppy Linux Setup Kit minimally in the old-fashioned way, with more scripts in the style of the released version of the setup kit, just so I could easily get back PHP, PHP-GTK, XSLT, etc. anytime I restart my computer.

But, instead, I ended up pondering and working on the renovated design for my Puppy Linux Setup Kit, and trying to see how far I could get with just .ini files and Bash scripts. Fortunately, pretty far.

Don't know how long it will take for me to finish, but, at the moment, I'm more interested in continuing with that than with returning to trying to build a visual programming system yet. I'm quite pleased with how the setup kit is evolving, despite (and probably also partly because of) the limited tools I'm restricting myself to.

The new design is actually reminiscent in some ways of version control systems like Mercurial and Git, because repos are one of the basic building blocks of my in-progress, unreleased, renovated Puppy Linux Setup Kit, and it's going to have shell commands like "apsk init" and "apsk commit". (APSK is short for Apollia's Puppy Setup Kit.)

It won't actually be a version control system, though, since it's not going to save old versions of files, and is mainly just going to deal with the repos as they currently are. One of its main jobs will be to make it easy to locate things by nickname rather than by their filepaths. That will be quite convenient, and make it so trying to reorganize my files won't cause as much chaos anymore.

Even though it will have a variety of shell commands, it's probably usually not going to require you to open a terminal window and type in commands. One of the top goals of my Puppy Linux Setup Kit is ease of use even for non-technical people, so, I want it to have plenty more GUI (graphical user interface) stuff than the previous versions did, and prettier terminal text with customizable colors.

Anyway, I'd rather just keep working on it than try to explain everything about it, since I'm still hazy myself on a lot of details. I'm trying to get it done as fast as I can, without messing it up by being overly hasty.

Again, not sure how long it will take, since it probably will depend a lot on my future health and energy levels, which I'm not at all sure I can predict, though I seem to have been getting better lately.

Going to continue to encourage my improvement by reducing (and continuing to avoid) stress in various ways, eating better, exercising more, taking my vitamins, and doing various other life-improving things, like reading a lot, getting more organized, cleaning my room, and the rest of the house. And working on my programming projects - without overdoing it to the point where I neglect much of the rest of my life.

And, asking publicly for donations and microdonations, in addition to sometimes being truly helpful on a financial level, also enables me to indulge in the comforting, stress-reducing (and thus possibly health-boosting) fantasy that maybe someday someone (or many people) will, through their generosity, rescue me and my family from ever having to worry about money ever again.

And even much smaller amounts of money definitely helped tremendously. Thank you all!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Taxation should be totally banned
Tuesday, April 18th, 2017
17:14:17 GMT


I'm relieved that Tax Day (which is today here in the USA) will soon be over.

Too bad it depleted a large chunk of my family's savings. But, at least we had (and have) some savings this year. But we'd have a lot more if taxes (among other things) hadn't stolen our money.

I've mentioned this before, but here again is an interesting essay (or perhaps it's actually a small book, since it has chapters) on why taxation is evil:

Income Tax: The Root of All Evil by Frank Chodorov, all in one page

You can also get it on this page in the annoying PDF format, or the slightly less annoying EPUB format.

I don't agree 100% with absolutely everything in that, but, I definitely agree that taxation is evil and does a lot more harm than good.

I hope someday all taxation is totally banned, even taxation of the rich, because taxation is extortion, and extortion is wrong regardless of whether the victim is poor or rich.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Cow milk's flavor can be damaged by exposure to light
Tuesday, April 18th, 2017
13:47:29 GMT


I wish milk was sold in glass containers inside opaque cardboard boxes instead of in plastic jugs of any opacity. It probably would be healthier and might more reliably taste fine.

Another reason I dislike plastic (other than plastic exposing milk to too much light) is because plastic might have negative health effects.

Here are some pages about the fact that milk's flavor can be damaged by exposure to light:

What effect, if any, does light have on milk?
(July 14, 2009 from


"Milk can develop off-flavors after just a few minutes in direct sunlight or two hours of exposure to strong fluorescent light"

Consumers sour on milk exposed to LED light
(June 8, 2016, from

It's so frustrating to never know for sure if the next jug of milk I get is going to taste drinkable to me.

I've encountered this problem for many years. Certain brands of milk are reliably terrible and undrinkable to me, and the brand I usually like is only drinkable maybe 85% of the time. And I recently got two jugs in a row which tasted undrinkably bad, even though I always strive to get milk from the back of the shelf, where hopefully it hasn't been exposed to as much light.

But I seem to be especially sensitive. I was never able to tolerate undiluted coffee because of its bitterness, and I've never been able to eat grapefruits or drink grapefruit juice because they taste like vomit to me.

To my frequent surprise and dismay, usually the people I live with can't taste any problem with the milk, so they often volunteer to drink the ones I can't drink. Though on rare occasions, the problem is bad enough they can taste it too.

I already tried one brand of organic cow's milk in a cardboard carton, but somehow that tasted ghastly and undrinkable to me too, though I'm not sure what caused that.

Perhaps I should just try harder to be more vegetarian, and quit my cow milk addiction.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Salty XML Transformer v1.0
Monday, March 27th, 2017
01:58:39 GMT


Blog post last edited April 3, 2017 at 2:23 PM EDT.

Salty is now at Version 1.2.

If you liked the Simple Schematron Demo for PHP 5.6.28 and Saxon/C 1.0.2, here's another PHP and Saxon/C-requiring thing you might like.

I just finished and released this today:

Salty XML Transformer

A crude but effective-enough way to use (or try to use) any XSLT sheet to transform any XML file or VUE concept map file.

Named "Salty" because the name XSLT reminds me of salt, and because I didn't have the energy or patience to try to make something more perfect and less crude. ("Crude", "coarse", and "vulgar" are some of the less frequently-used meanings of the word "salty".)

Anyway, it's good enough that I can now much more easily play around with XSLT 2.0 in PHP, and try to figure out how to use XSLT to do clever things with VUE (Visual Understanding Environment) concept map files.

By the way, here's my modified version of VUE again.

Someday, I'd like to update my Puppy Linux Setup Kit sufficiently to make it tremendously easier to install everything you'll need to be able to use the Salty XML Transformer and/or the Simple Schematron Demo, such as PHP, Saxon/C, etc.

But, I'm probably going to be preoccupied for a while with trying to build a visual programming system, since I think even a relatively simple, primitive one might make programming far easier, faster, and more fun.

Addition, March 28, 2017, 11:17 PM EDT. Updated to Version 1.1, which hopefully fixes the problem (at least with VUE maps) of some Unicode characters such as 🗁 being transformed into garbage characters (also known as mojibake).

Also fixed that for some but not all plain, non-VUE XML files. To avoid garbage (mojibake) output, those XML files must use Unicode entities instead of normal Unicode characters.

Also fixed a small glitch that stopped plain, non-VUE XML files from even being read.

Addition, April 3, 2017, 2:23 PM EDT. Updated to Version 1.2. Now it's possible to give Salty arguments to pass as parameters to XSLT.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
The Mad Drummer
Tuesday, March 14th, 2017
23:02:45 GMT


On YouTube, I recently found one of the best drummers in the world. :-)

His website:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
A simple Schematron demo for PHP 5.6.28 and Saxon/C 1.0.2
Sunday, February 5th, 2017
04:38:05 GMT


Today, I figured out how to use the XML-validation language Schematron with PHP 5.6.28 and the XSLT processor Saxon/C 1.0.2.

And since examples of using Schematron with PHP plus Saxon/C currently seem to be quite rare on the web - possibly even nonexistent, except for my own - I put together this GitHub repo:


I only authored the PHP script and the "" file. The included Schematron schema and XML files are my slightly modified versions of things from the the official Schematron repo.

Everything else is unmodified stuff from the official Schematron repo.

Now that I can use Schematron, I'm guessing I'm probably going to have a much easier time with all of my current and future XSLT projects.

Soon, I'll be able to be far more sure I'm generating valid VUE: Visual Understanding Environment concept maps with tools other than VUE itself. (Here's my slightly modified version of VUE.)

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to get the Schematron Testing Framework (stf) to run in Lighthouse 64 Puppy Linux 6.02 Beta 2
Friday, February 3rd, 2017
22:56:21 GMT


The operating system with which I accomplished the below was Lighthouse 64 Puppy Linux 6.02 Beta 2.

I've been messing around with XML and XSLT lately, since I want to use XSLT to do some clever things with VUE: Visual Understanding Environment concept maps. (Here's my slightly modified version of VUE.)

So, I've been trying to figure how to use the XML-validation language Schematron, so I'll have a way to validate concept map files I generate or modify with XSLT instead of VUE.

In addition to Schematron, I also stumbled across some Java software called the Schematron Testing Framework (stf), which I'm not yet sure I'm going to need, but, figured out how to run anyway just in case I ever do need it.

It took me a while, but I finally figured out I needed to download some other Java software, and edit the "properties.xml" file included with the Schematron Testing Framework (stf) to tell it where to find that other software in my system.

Here's my entire "properties.xml" file:

In addition to the Schematron Testing Framework (stf) itself, I had to download the following three Java programs. I lazily downloaded binaries instead of compiling anything from scratch. (Possibly other versions than the ones I used would work.)

  1. Saxon-HE You can get the "saxon9he.jar" file you need simply by unzipping "".

    Quoted from the official web page about libre, open-source editions of Saxon:

    "Saxon-HE (Home Edition) is the open-source version of the Saxon XSLT and XQuery processor."

  2. XML Calabash 1.1.15-97. The "xmlcalabash-1.1.15-97.jar" file is an installer, which you can run either by double-clicking on it, or opening a console at its folder, and using this command:

    Quoted from the official XML Calabash web page:

    "XML Calabash is an implementation of XProc: An XML Pipeline Language."

  3. - Another file you can just unzip and don't have to install in any special place. The file you need for the Schematron Testing Framework (stf) is "resolver.jar".

    Here's the official Apache xml-commons web page.

I also used:

With everything installed and the "properties.xml" properly configured, all I had to do to run Schematron Testing Framework (stf) was go to stf's "example" folder, open a console there, and type:

That resulted in this output:

To confirm that Schematron Testing Framework (stf) was really reading the example XML files "foo-1.xml" and "foo-2.xml", I edited them, which, as expected, changed the output of the "ant" command a bit:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
VUE: How to detach images from bubbles (also known as nodes)
Thursday, January 12th, 2017
02:12:57 GMT


Last edited Jan. 12, 2016, at 2:37 AM EST.

This blog post applies to both the official version 3.3.0 of the concept mapping software VUE: Visual Understanding Environment, and my own slightly modified version. I haven't tried this in other versions.

I've been a delighted user of VUE since perhaps 2010. But it was not until the past several days that I finally stumbled across a way to detach images from nodes! (Or, as I prefer to call nodes - bubbles.)

These instructions work for me using VUE in either Lighthouse 64 Puppy Linux 6.02 Beta 2 or Lucid Puppy Linux 5.2.8 version 004. Haven't tried this in Windows or on a Mac.

Here's how to detach an image from a single bubble:

  1. Drag and drop an image onto your VUE map.

  2. Right-click the bubble containing the image and choose Remove Resource (keep image).

  3. At this point, the image is still not detachable. To make it detachable, copy and paste the bubble.

  4. Unless I'm mistaken - in the original bubble, the image will still be stuck no matter what you do. But with any pasted new copy of that bubble, you can click on the image and drag it out!

If you want to detach images from many bubbles:

  1. Select all the bubbles you want to detach images from.

  2. Go to the Content menu and select Remove Resources (keep images). (Have to do that instead of right-clicking, because oddly, the "Remove Resource (keep images)" item in the right-click menu disappears when you have more than one bubble selected.)

  3. Copy and paste all the bubbles.

  4. Again, unless I'm mistaken, the images are only detachable from the pasted copies, not the original bubbles.

    You can select multiple images to drag out by clicking one image, then pressing the Shift key on your keyboard when you click the other images. Once you've selected all the images you want, click one of your selected images, then drag all of them as a group to wherever you want.

If you put an image back into a bubble, it can get stuck again, but you can just repeat the above process to make another detached, bubble-free copy. Or use the undo feature.

Happily, detaching the images makes it possible to more easily resize the images, the same way you resize a bubble. (Click on the image to select it, which makes white boxes appear at the corners and edges, which you can click on and drag to resize the image.)

I don't know if there's a maximum size for images, but, you can definitely resize them to be larger than their full size.

And using VUE's Layers feature, you can actually use images as backgrounds for anything on higher layers!

To work with layers, go to the Windows menu and choose Layers, or press Ctrl-5.

Using just the controls in that small window, you can create new layers, lock and unlock layers, show or hide certain layers, move whatever bubbles, images, etc. you want to other layers, reorder layers, duplicate layers, merge layers, and remove layers. And perhaps do other things I don't know about.

The rename-layer feature in VUE 3.3.0 - and in my own slightly modified version of VUE - currently doesn't work in Lighthouse 64 Puppy Linux 6.02 Beta 2 and Lucid Puppy Linux 5.2.8 version 004, and also in a MacOS. No idea how to fix that yet, but I might try to figure it out.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
GNU Emacs: Using helm-unicode; changing the font and font size only for helm-unicode; etc.
Sunday, January 8th, 2017
23:37:45 GMT

Emacs Lisp

I recently figured out that in GNU Emacs, I was using the helm-unicode extension wrong.

After installing that, I mistakenly assumed that the key sequence Ctrl-x 8 Return (or, C-x 8 RET for short) was automatically now using helm-unicode. Then I was confused that the list of Unicode characters only had names and not the actual characters.

Finally, I figured out that C-x 8 RET was only running the command (insert-char), not (helm-unicode). (To find out what command is assigned to a key sequence or keychord, you can type C-h k, then after the prompt "Describe key (or click menu item):" appears in the minibuffer, type the key, key chord or key sequence you're curious about.)

To make C-x 8 RET run (helm-unicode) instead, I had to run this command (and I also added it to my GNU Emacs preferences):

Another useful thing to add is this code to make the font larger only for helm-unicode searches. It's code I slightly modified, most of which I originally found on this page:

If you don't have the "Symbola" Unicode font, you can change "Symbola" to another font name. Or, you can download Symbola from this page:

Unicode Fonts for Ancient Scripts

Also, here's some code I found somewhere which will make GNU Emacs display Unicode in any buffer:

The problem with using that code is, it can sometimes make GNU Emacs very slow - for example, if you do the key sequence C-h h to look at the "HELLO" file included with GNU Emacs, which shows translations of the word "hello" in many different languages.

If you want to output the entire Unicode character list as browseable, editable text in a buffer, try this. A slightly modified version of code I found on this page:

I suggest pasting that code into your *scratch* buffer. Then, put your cursor (or "point" as it's called in GNU Emacs jargon) at the end of the "print-elements-of-list" function definition and do the key sequence C-x C-e.

Then, to actually output the list into whatever buffer you're running this in, put your cursor at the end of the last line and do the key sequence C-u C-x C-e.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
My slightly modified VUE: Visual Understanding Environment
Sunday, January 8th, 2017
05:04:12 GMT


I slightly modified the wonderful concept mapping software VUE: Visual Understanding Environment to work better for me in Puppy Linux.

My modified source code is available from here:

My top goals were:

  1. To make it possible in Puppy Linux to successfully open files and web pages by clicking resource buttons attached to VUE nodes (or as I prefer to call them, bubbles).

    If I recall correctly, that already worked in Windows XP, but it mostly didn't work right for me in any edition of Puppy Linux I tried VUE in - namely, Lighthouse 64 Puppy Linux 6.02 Beta 2 and Lucid Puppy Linux 5.2.8 version 004. (Except I was always able to open other VUE map files.)

    So, I fixed that, in a crude but effective-enough way. And now I can not only open other VUE maps, but do things like launch other programs and scripts, and visit web pages, just by clicking currently inconveniently tiny buttons in VUE.

    Reminds me a little of HyperCard.

  2. To make VUE visually blend in better with my preferred dark desktop theme.

I don't feel like writing in 100% thorough detail about how to compile the source code, but, one way to compile it is by using Apache Ant. (I used v1.10, and in the past, version 1.9.6 also worked for me.)

Once you have Ant installed, you can run the command "ant all" in the "VUE2/src" folder, which after about 20 seconds results in a runnable "VUE.jar" file which you can find at the path "VUE2/src/build/VUE.jar".

And you can run VUE.jar by opening a console in the "VUE2/src/build" folder and typing:

java -jar VUE.jar

It's also possible to build and run VUE using the Eclipse Java EE IDE for Web Developers Neon.2 Release (4.6.2), and probably other versions.

Eclipse also has debugging features I mostly haven't figured out how to use yet, and the useful ability to generate Javadoc pages like these.

This old forum post on how to put VUE into an Eclipse project was helpful, though I didn't follow all of those instructions. I told Eclipse to base the project on the Ant build file at VUE2/src/build.xml, and that worked fine.

Eclipse still listed a bunch of errors even after I excluded these folders using Eclipse's Resource Filters feature:


But, Eclipse still was able to build VUE anyway.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Links: Music generated (or partly generated) by software
Monday, December 19th, 2016
13:42:00 GMT


Here's an interesting article I found today:

Deep-Learning Machine Listens to Bach, Then Writes Its Own Music in the Same Style
(Dec. 14, 2016 from

And here's an impressive example of that music on YouTube:

DeepBach: harmonization in the style of Bach generated using deep learning

I was hoping there was source code available for that software, so, I googled for "bach source code deep learning". Didn't find the above project's source code, but, I found this:

BachBot is a free (as in freedom), libre, open source project with a code repository on GitHub.

I tried the BachBot Challenge and got only 40% correct the first time, but 100% the second time, when I started listening more carefully for anything particularly un-Bach-like, such as off-key-sounding notes.

Another interesting page:

Analyzing Six Deep Learning Tools for Music Generation
(Oct. 5, 2016 from

I especially enjoyed the examples from

Two of those tracks are also on SoundCloud, which I'm assuming might have better audio quality than YouTube.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
The renovated Puppy Linux Setup Kit will probably require PHP and PHP-GTK
Saturday, November 26th, 2016
05:59:24 GMT


While trying to figure out the best way to do some new things with my Puppy Linux Setup Kit, I finally found out that various Unix-related systems (including GNU/Linux) are excessively flexible about what characters are allowed in file names.

Here's a detailed essay I found on that topic, from

Fixing Unix/Linux/POSIX Filenames:
Control Characters (such as Newline), Leading Dashes, and Other Problems

So, that means using shell commands like "find", "xargs", etc. is much trickier and more inconvenient than I thought.

Quite annoyingly, newline characters can be in file names. So, there's no guarantee that each line of output from "find" will contain a complete file path. I also had trouble with trying to make "xargs" deal with paths containing single quotes. And the above essay describes numerous even worse problems.

These problems make me less reluctant to make the Puppy Linux Setup Kit require PHP and PHP-GTK, partly just so I can hopefully avoid a lot of the quirks of Bash programming.

I still like Bash programming much more than I used to, and I like being able to make some simple GUIs (graphical user interfaces) using only stuff that's already included by default with Puppy Linux, such as GtkDialog, which can be used to make a nice variety of GUI elements.

And I still think it was worthwhile to spend a few months struggling with Bash programming, since I learned a lot from that.

But I still have such a tremendously easier time with PHP than Bash scripts that I doubt I'll ever be fully comfortable with the latter, at this rate.

I'll probably still use Bash for simple things, but will probably use PHP for more complicated things.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Always check ingredients lists, since you never know when a food company might add sucralose, or who knows what else
Thursday, November 17th, 2016
08:26:39 GMT


I'm so tired of suddenly finding that things like sucralose have been added to food products I used to like.

It happened to me before, and it just happened to me again several hours ago.

As part of my effort to reduce my sugar consumption, I tried what I mistakenly thought was the totally unsweetened version of one of my favorite cereals, a healthy-sounding high-fiber cereal which I guess I won't name.

To my surprise, it tasted sweet. So, I checked the ingredients, and to my horror, I saw that it contained sucralose.

That gave me quite a fright, since I had already eaten a spoonful or two. I tried (but failed) to make myself throw up.

Then I checked the ingredients of the version of that cereal I usually ate (which I already was aware was slightly sweetened), and was horrified to find that contained sucralose too!

I don't know if it always had sucralose or if that's a recent addition, but, I'm really upset about that and will never eat that cereal again unless the sucralose is removed, and maybe not even then.

I'll always be wary of all that company's products from now on. And other companies too. Going to check the ingredient lists of everything far more carefully in the future, even things I regularly eat, since too often, the ingredients get changed for the worse for no good reason.

Anyway, I already ate many boxfuls of that cereal (including at least 1 boxful which definitely had sucralose), and don't know for sure whether or not that had any bad effects on me, so that made me less panicked about eating just a spoonful or two of the less sweetened version of that cereal.

At least I didn't eat that cereal every day - maybe a box every few weeks - and only started eating it several months ago, in summer 2016. I have had a variety of health issues (or nuisances) lately, but I'm not sure any are related to sucralose, since they all have other possible causes, and I haven't had most of the symptoms listed on this page or this page. And overall I think I've been improving and will probably be OK.

But I still don't ever want to risk eating sucralose, and I'm so upset that food companies unnecessarily put things like that into their products.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
My nice, now "organized" room :-)
Saturday, October 8th, 2016
12:06:06 GMT


I've been doing much better since quitting caffeine and my electric blanket, which I believe was interfering with my sleep quality even more than caffeine alone was.

So, I was finally able to make my very cluttered room a lot nicer to live in.

My phone's camera takes unrealistically dark, dull-looking pictures, so I edited these pictures' brightness, contrast, saturation and gamma (whatever that is) in mtPaint to make these pictures look closer to (or better than) how my room really looks.

Look how clean and organized it is!!!!! ;-D

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

This is the best it has ever been.

That's the especially cluttery corner, next to my big window, which features my low-cost alternative to curtains - taped together pieces of scrap paper.

Part of my office chair is visible at the lower left, and the red thing next to that is part of my standing desk.

Here's the other side of the room:

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

My standing desk still needs to be decluttered. But the rest - well, it's hard to see how I could improve on that. ;-D

Quoted from another blog post:

The wide painting isn't by me, and I don't know who painted it. Astonishingly, it was only $2 - two dollars - from a local live auction!

The smaller, more colorful picture is a Thomas Kinkade print called The Garden of Prayer, and if I recall correctly, it also was just $2 - two dollars. Found it at a local thrift store.

Here's the stuff at the top of that shelf:

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

The shiny silvery blue metallic map of the world was from a local live auction in 2013, and it came with with a second map of the world which is in the second-nicest corner of my room. Both of them together only cost $8 (eight dollars) total, if I recall correctly.

I think the small vase on the right is made of very tarnished copper. It's quite heavy for its size. It might have been from a Goodwill thrift store or some other thrift store, and was probably under $4 (four dollars). I intended to someday clean it and probably sell it, but I still haven't gotten around to that.

The baskety vase was probably from a Goodwill thrift store and probably less than $3 (three dollars).

In the center is a greeting card or postcard.

Here's the second-nicest corner of my room:

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

Actually, maybe this is the nicest corner of my room, because of those 3 lovely little works of art.

I originally bought those world maps with the intention of selling them, but, I ended up keeping them, since I usually am too busy with other things to try to sell things.

The blue/purple/etc. carnival glass was around $24 (twenty-four dollars) from a local antique store in January 2003, and that's the most I ever paid for something to decorate my room.

The pastel flowery vase was from a Goodwill thrift store, and was maybe something like $2 (two dollars).

Most of the rest of that shelf:

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

And part of my 3rd and final shelf:

Larger Size

Original Picture without brightness, contrast, saturation, and gamma adjusted with mtPaint

The picture is part of a 1994 or 1993 Dinotopia calendar, and the red thing holding it up there is a screwdriver.

Finally, junk isn't constantly getting in my way anymore. I can easily open my mini-refrigerator, and roll my office chair around part of my room! I can actually walk between my bed and door!

Now I have room to bellydance without having to stand on my bed!

And, I finally know where my towel is.

Now, the world will be my oyster. :-D

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: "It's Impossible to See all the Dots on this Optical Illusion at Once"
Wednesday, September 21st, 2016
06:27:32 GMT


Quite cool:

It's Impossible to See all the Dots on this Optical Illusion at Once
Sept. 12, 2016 from

A more detailed article:

Here's why you can't see all 12 black dots in this crazy optical illusion
Sept. 13, 2016, from

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to make Saxon/C into a PHP extension for PHP 5.6.13 in Lucid Puppy Linux 5.2.8
Monday, September 19th, 2016
19:15:31 GMT

Puppy Linux

I wanted to be able to use XSLT 2.0 with PHP (my favorite programming language), so I figured out how to compile Saxon/C into a PHP extension.

According to Saxon/C's official home page, Saxon/C provides "XML document processing for the C/C++/PHP platforms", and "In particular, Saxon/C provides processing in XSLT, XQuery and XPath, and Schema validation".

I ran into a few problems trying to make Saxon/C into a PHP extension on my Lucid Puppy Linux 5.2.8 version 004 system, but, fortunately, I was able to solve them.

I still didn't figure out how to make all of the Saxon/C example PHP scripts work, but, 3 out of 4 work fine for me.

To compile software from scratch in Puppy Linux, it's often necessary (or convenient) to use the DevX file of development tools for your Puppy Linux.

My page of Some Puppy Linux Basics explains more about DevX files, and if you need the DevX for Lucid Puppy 5.2.8, it's available at this link:

If you're using a different version of Puppy than Lucid Puppy 5.2.8, that DevX probably won't work, so you should instead download the DevX released for your Puppy.

Also, if you're not using Lucid Puppy 5.2.8, please bear in mind that the instructions in this blog post might not all apply or work for you, since different Puppy Linux distros, and probably even different versions of the same Puppy distro, can differ quite substantially from each other.

And here's how to load SFS files.

Here's a list of required other software. Perhaps slightly different versions would also work, but these are exactly what I used.

The below instructions assume you already have PHP 5.6.13 and Java 1.8.0_51 installed.

Here's how I made Saxon/C into a PHP extension.

  1. Unzip the file "" to whatever folder you want.

  2. Open a terminal window in that folder, and type this command:


    That program will then give you a prompt that looks something like this:

    Enter destination path[/root/00-ApWorkspace/Saxonica/Saxon-HEC1.0.2]:

    You can press Enter on your keyboard to accept the default path, or type in a different path. If all goes well, a list of files that are being installed will be printed, and in the end, it will say:

    Saxon-HEC 1.0.2 has been successfully installed on your computer.

  3. Next, open the Saxonica folder, then the Saxon-HEC1.0.2 folder.

    There's a "" file you can read if you want.

    There's also a "php-library-module" folder, containing "", an already-built PHP extension. It might work if you happen to be using the version of PHP the Saxon/C home page says that extension was built for - PHP 5.5.9. But, I tried it with PHP 5.6.13, and it didn't work for me.

  4. Open the Saxon.C.API folder, then open a terminal window in that folder, and type these commands. (The "phpize" command will only work if you have PHP installed):


    ./configure --enable-saxon

  5. Here's where I had to diverge from the instructions in the "" file.

    Originally, running "make" didn't succeed for me because I had Java installed in an unconventional place, and "make" needed two Java-related files which "make" couldn't find: "jni.h" and "jni_md.h" (and probably others as well).

    "make" also needed a file from somewhere in the Saxon-HEC1.0.2 folder.

    So, to let "make" know where to find those files, I had to edit the "Makefile" in a text editor.

    In "Makefile", find line 31, which looks like this:


    Change that to something like this (but customize it with the paths where you have Java, and where you put the Saxon-HEC1.0.2 folder):

    CPPFLAGS = -DHAVE_CONFIG_H -I/root/apbin/Java/v8u51/include/ -I/root/apbin/Java/v8u51/include/linux/ -I/root/00-ApWorkspace/Saxonica/Saxon-HEC1.0.2/

  6. Added Dec. 20, 2016, 12:50 AM EST. (Sorry, I forgot to mention this step before!) Next, to make it so the "make" command will succeed, you must put a symlink inside the /usr/lib/ folder, pointing to the "" file in the "Saxonica/Saxon-HEC1.0.2/" folder.

    Otherwise, without that symlink, "make" will eventually fail with this error:

  7. Next, in a terminal window opened at the Saxon.C.API folder, type this command:


    After "make" succeeds, the compiled "" PHP extension will be in the "modules" folder.

  8. Open the "modules" folder. Then, go to wherever your folder of PHP extensions is, and copy "" into that folder.

    For me, that folder was:


  9. Then, to enable the extension in PHP, edit your "php.ini" file. You might have multiple php.ini files - I have one at /etc/php.ini and one at /usr/local/lib/php.ini.

    In the extensions section of your "php.ini" file, put a line like this:

  10. I also had to create a symlink at /usr/lib/rt/ pointing to the "rt" folder in the "Saxon-HEC1.0.2" folder, since otherwise, errors happened, sometimes with PHP, and sometimes with the Hiawatha web server (which sometimes gave me an Internal Server Error).

    In my system, the "rt" folder was in this folder, but it will probably be elsewhere on your system:


  11. To make sure the extension was installed successfully, you can have PHP run the phpinfo(); command to print a list of installed PHP extensions and other info.

    You can even run the phpinfo(); command from a terminal window with this command line:

    php -r "phpinfo();"

There are example PHP scripts in the folder Saxon-HEC1.0.2/samples/php. "xpathExamples.php", "xqueryExamples.php", and "xsltExamples.php" worked fine for me, but "validatorExamples.php" had an error which I don't yet know how to fix.

Also, I think I ran into Bug #2677 - Saxon/C PHP API getErrorMessage does not report useful error.

However, more detailed error messages are readable in my Hiawatha web server logs, which, on my system, are located at:


I made this little PHP script called display_last_5_lines_of_hiawatha_error_log.php to make that log easier to read in my web browser:

Additions, March 12, 2017, 5:36 PM/6:14 PM EDT. While trying to use the Saxon/C PHP extension in Lighthouse 64 Puppy Linux 6.02 Beta 2, I had trouble making it work in the Hiawatha web server, even after doing all of the above.

Even with /usr/lib64/ (another other paths) symlinked to my system's location for (/root/apbin/Saxon-HEC/Saxonica/Saxon-HEC1.0.2/, I kept getting Internal Server Errors, and Hiawatha's log said, "Unable to load /usr/lib64/libsaxonhec." and "Error: : No such file or directory".

I think this might be related to Bug #2907 - php is looking for without so extension in both /usr/lib64 and /usr/lib and failing.

Fortunately, that bug page helped me figure out a workaround. In every PHP script which needs to run Saxon/C, I can put this line (which you'll probably need to customize with the path to where is on your system):

Then, Saxon/C works fine for me.

Another workaround is to add this to Hiawatha's config file (which, on my system, is at /usr/local/etc/hiawatha/hiawatha.conf):

Then, I don't even need to add anything to my PHP scripts for them to just work.

Yet another workaround is to not even use a web server (which I usually prefer anyway, at least on any of my internet-connected computers). Then, you can either set the SAXONC_HOME environment variable before you run PHP, or, you can set it from inside your PHP script using the PHP line above.

I made a couple scripts to make it easier to view PHP script output in your web browser without having to use a web server:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
The death of Star Trek actor Anton Yelchin was possibly a result of software-controlled car parts
Thursday, September 1st, 2016
12:14:21 GMT


I was very saddened to find out today that the actor Anton Yelchin, who played Chekov in the recent Star Trek movies, died possibly because of the software-controlled "e-shift transmission" in his Jeep Grand Cherokee, which was involved in a recall. He was only 27.

So, I updated this blog post again:

The "Internet of Things" and "Pervasive Computing": Some of the Worst Ideas Ever

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: Free eBook Giveaway from Hay House Publishing
Friday, August 26th, 2016
22:51:48 GMT


I heard about this free (as in price) eBook giveaway from an e-newsletter from Hay House Publishing:

Free eBook Giveaway - Hay House

I particularly like the fact that the books are provided in a variety of formats. My favorite of the formats provided is EPUB format, which I can read in my web browser with the EPUBReader add-on for the Firefox web browser. (That add-on also works in the Pale Moon web browser, which I prefer over Firefox.)

Then, using the Stylish add-on for Firefox (or Pale Moon), I can easily change the text's color to anything I want, and give the text a dark background, which makes it far more pleasant for me to read.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   Up ↑
Zippable pillow protectors: better than plastic bags for organizing things
Thursday, August 25th, 2016
11:54:46 GMT


For most of my life, I used plastic bags and cardboard boxes of various sizes (usually overly large, heavy, and difficult to move when full of junk) to "organize" things in a mostly inadequate, chaotic way.

But, recently, I finally thought of a great new innovation - putting things inside zippable pillow protectors. I prefer pillow protectors because ordinary pillowcases often don't have zippers. And sometimes ordinary pillowcases are so nice and soft you might be reluctant to use them for storage.

Compared to noisy, unsightly plastic shopping bags or garbage bags which easily get torn and often have no built-in way to completely close them - zippable pillow protectors are quieter, nicer to look at, easily closeable, and tend not to rip.

I don't have a closet, and I don't have space in my room for a clothes rack, so, now I keep different categories of clothes in different zippable pillow protectors, which makes them much easier to find than having them in numerous cardboard boxes or a giant mixed up pile.

I haven't yet thought of or found a good way to label them, but will update this post if I do.

(Addition, Sept. 22, 2016, 10:00 PM EDT. Using safety pins, I attach small rectangular papers labeled with the bag's contents. Each bag gets two labels - both near the middle of the zippered edge, on both the front and back of the bag. I should maybe use something a bit sturdier than plain paper, since plain paper might rip easily.)

It turns out both plastic bags and pillow protectors are bad for any non-rugged dressy types of shoes, since those can easily get crushed and creased. (I was always so oblivious to fashion that I didn't realize that until this year!) And I guess any clothes you don't want getting rumpled might be better off hanging somewhere instead of crammed into a bag.

But, for most of my clothes and my more rugged shoes, pillow protectors are perfectly fine. As for my more fragile shoes, I'll just stick those in small cardboard boxes.

I want to get a lot more zippable pillow protectors to hold many other categories of stuff, like plastic bags, boring junk mail I don't feel like going through yet, old receipts, other old papers I don't really care about but don't want to just throw away, and whatever else.

   ▲ Top  ▼ Bottom  △ TOC   Up ↑