Software Blog - Most Recent Posts

Posts Below
5/27/2017 - Various plans and projects - funding welcome
3/27/2017 - Salty XML Transformer v1.0
2/5/2017 - A simple Schematron demo for PHP 5.6.28 and Saxon/C 1.0.2
2/3/2017 - How to get the Schematron Testing Framework (stf) to run in Lighthouse 64 Puppy Linux 6.02 Beta 2
1/12/2017 - VUE: How to detach images from bubbles (also known as nodes)
1/8/2017 - My slightly modified VUE: Visual Understanding Environment
9/1/2016 - The death of Star Trek actor Anton Yelchin was possibly a result of software-controlled car parts
8/7/2016 - Sandstorm
7/25/2016 - Bash Script: flexishacheck
7/7/2016 - Links: Amazing 3D graphics inside a web browser
7/4/2016 - Now I'm 35; daydreams and plans for the future
7/2/2016 - Perl Script: Apollia's Primitive Invoice Generator v2.0
7/1/2016 - Wishing I had a non-Java version of VUE
7/1/2016 - Links: Saxon-CE and XSLT 2.0 demo - Knight's Tour
7/1/2016 - Bash Script: Relative Landmark
6/11/2016 - Made Toughbook CF-C1 capable of sleep mode in Lighthouse 64 Puppy Linux 6.02 Beta 2 (Bash Script)
6/11/2016 - Bash Script: Rotate Toughbook CF-C1 Screen in Lighthouse 64 Puppy Linux 6.02 Beta 2
5/5/2016 - Apollia's Floating Volume Control v1.0 (AutoHotkey)
1/12/2016 - Pale Moon - a faster, more stable web browser than Firefox
12/27/2015 - Some thoughts on Lisp


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down
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

   ▲ 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 ↑
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 ↑
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 ↑
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 ↑
Sunday, August 7th, 2016
05:05:19 GMT

I recently heard about a very impressive project called Sandstorm which makes installing web apps (like WordPress or MediaWiki, and many others) as easy as installing phone apps.

Sandstorm Demo

One reason I'm so pleased to have run across this is because I had been idly wondering for years if there might be good ways to make my and others' web apps easy to install other than using a combination of my Puppy Linux Setup Kit and Astroblahhh GLMP-GTK, plus VirtualBox to make them hopefully more secure.

I don't have the expertise to judge Sandstorm's technical and security merits, but, from the perspective of a user, I find Sandstorm very pleasant and easy to use.

And, as the author of some amateurish (yet still useful at least to me) web apps (and other things), I'm definitely interested in someday seeing if I can easily convert Astroblahhh Desktop and/or the WordsPlatz blogging software and/or the Eryss astrology software and/or other and/or not yet created things into Sandstorm packages.

To my surprise, I was able to successfully do all the steps in Sandstorm's packaging tutorial while using Lighthouse 64 Puppy Linux 6.02 Beta 2!

I don't feel up to writing a complete set of instructions on how to install everything in Lighthouse 64, and it would probably be better for me to just add scripts to my Puppy Linux Setup Kit to automate most everything.

But, here are a few notes.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Bash Script: flexishacheck
Monday, July 25th, 2016
13:07:57 GMT

Here's a boring but useful enough Bash script I finished today:


I made this because the not-yet-finished (nor released) renovated Apollia's Puppy Linux Setup Kit (APSK) is going to use SHA-512 checksums to verify that various files are intact, or got downloaded correctly.

Actually, if I recall correctly, the released APSK already does check the SHA-512 checksums of downloaded files. But I want the renovated APSK to be far more flexible - and flexishacheck definitely helps with that, since now I won't have to update checksum record files just because a checksummed file got renamed.

I also want the renovated APSK to be able to use other things to verify that downloaded files are intact, such as GPG signatures.

From what I understand, two different files sharing the same SHA checksum or GPG signature is supposed to be extremely rare, even if the two files are only slightly different. But unfortunately, I'm quite far from understanding all this stuff as well as I'd like, so I'm not sure how helpful (or not) SHA checksums and GPG signatures will really be. But I assume checking SHA checksums and/or GPG signatures is at least better than just blindly trusting that a download succeeded and got the correct file.

At least I've been learning a lot from my struggles to renovate APSK and understand checksums and GPG. At this rate, I don't know if I'll have APSK renovated even before the year is over, but, I'm going to keep trying.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Links: Amazing 3D graphics inside a web browser
Thursday, July 7th, 2016
05:26:30 GMT

Last edited 3:48 AM EDT.

Wow, I've been so out of touch with what web browsers are capable of these days! I guess if I were more of a gamer, I wouldn't have been so behind the times for so long. :-)

I'm also pleasantly surprised at how much of the below works fine (or OK, with some imperfections) in Puppy Linux, now that I have a nice, mostly uncrashy laptop with a decent amount of RAM - my Toughbook CF-C1 with 8 GB of RAM which I got on eBay for less than $200.

I'm also using Lighthouse 64 Puppy Linux 6.02 Beta 2 and the web browser Pale Moon, version 26.2.2 (x64).

Not everything I tried works, but the below mostly do. Things do get a bit slow and choppy sometimes, but, many things are remarkably smooth, especially if I don't have a lot of other web browser tabs open. And pretty much everything that works at all runs much better than how Second Life runs on my other Toughbook CF-C1 with Windows 7 and only 4 GB of RAM.

I'm extremely impressed!!!!!!!

Warning: If you have a laptop or other battery-powered device, I don't recommend visiting the below pages unless you have your device plugged in, because I'm guessing the software on those pages might quickly use up your battery power.

(Addition, 3:31 AM EDT. Also, watch out for possible overheating. About a half hour ago, I accidentally overheated and crashed my laptop with the "geometry / terrain / fog" three.js example. Before this, the last time I had a crash from overheating was June 14th.)


Oimo.js Demo

Dungeon demo from

Quarto game from

Block game from

Livecodelab from

Not all of these work on my system:

three.js Examples from

I don't even know exactly how all these things were made yet, but if it was just (or primarily) JavaScript, I'm stunned. :-D

This definitely could make a lot of my (or anyone's) projects and websites more exciting. :-D

It would be so fun to have 3D graphics in Astroblahhh Desktop, the Eryss astrology software, or a CMS (content management system, for lack of a better term), or a music service, or my daydream of a JavaScript port of the concept mapping software VUE: Visual Understanding Environment, or a 3D browser for graph databases like OrientDB or Neo4j. And tons of other things.

Wow... :-D

Click this link to display the blog comment thread hosted at the Eryss.Com Forum:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Now I'm 35; daydreams and plans for the future
Monday, July 4th, 2016
21:48:11 GMT

Yesterday (July 3rd) was my birthday. So now, I'm 35, and I still haven't really gotten my life together yet. :-)

But fortunately, I already mourned the possibly irretrievable loss of my youth a while back, so, the transition from 34 to 35 isn't a very big deal to me.

And who knows what science, technology and medicine might someday achieve?

Except actually, I think I'd rather reincarnate as a male supermodel than live forever in my current body. :-) So, even if future scientific advances can't save me from old age and death, fine with me, I guess. :-)

Even though I haven't accomplished as much as I would have liked to with my life thus far, I'm glad I at least managed to do as much as I did, despite all my limitations, such as my severe sleep issues, and the various forms of oppression I and my family have had to deal with, some of which I described back in Nov. 2015 on my Self-Help page.

My Puppy Linux Setup Kit, Astroblahhh Desktop, the Eryss astrology software, and the WordsPlatz blogging software are definitely still pretty far from as refined and perfected as I hope they someday will be.

But, hopefully I'm well on my way to creating versions of them (and other things) which will be good enough that I'll hopefully be able to share them without having to feel so sheepish about how flawed they are. :-)

Here's a summary of what I consider my most important not-yet-finished projects, most of which have taken much longer than expected.

Roughly in order of priority, and the possible future chronological order I'm going to work on them:

  1. My temporary top priority is to figure out how to use XSLT to convert my VUE: Visual Understanding Environment concept map data into other formats, so it won't be (somewhat) locked into VUE anymore.

    Lately, I've been relying more on NoteCase and VUE instead of Astroblahhh Desktop, since Astroblahhh Desktop has been in partially-updated disarray ever since last September, and I've been reluctant to even use the VirtualBoxed Windows version of Astroblahhh Desktop anymore, and also have avoided even using the stable-enough Astroblahhh Desktop 2.4, mostly because it needs to run on a web server because I haven't added PHP-GTK and SQLite database capabilities to it yet.

    Astroblahhh Desktop already had some NoteCase-related import capabilities since years ago, though maybe not in a released version until 2015. But nothing related to VUE, yet.

  2. My usual top priority since last January has been Apollia's Puppy Linux Setup Kit 2.0, or APSK 2.0 for short.

    Though I still haven't done a huge amount of work on APSK ever since mid-April. In May and June, my temporary top priorities were to get a new (to me) used laptop on eBay with much more RAM than my former usual laptop, and good batteries, and get it working nicely. That's largely done now - but, that was done mostly by adding new installers to the old version of APSK, not by enhancing the new version of APSK.

    The old APSK is way too cumbersome and annoying to add new stuff to, and it really needs to be redesigned. That was the best I could do at the time I wrote all that stuff (especially since I was in a hurry), but I think I learned a lot since then (Sept. 2014), and can do much better now.

    Another problem is, since I was using a desktop computer instead of a laptop when I built the old APSK, I didn't give as much thought as I should have to making it efficient, instead of redundantly loading a lot of probably mostly unneeded stuff for every single different setup kit script that gets run.

    I'm hoping to build the renovated APSK out of a lot more small, modular, replaceable, separable pieces which could also easily be used with unrelated things.

    For example, my Navig Perl script already can use my Fashionizer library written in Bash. (It can, even though maybe it shouldn't, for efficiency's sake. :-) Even the Fashionizer, which I made as recently as maybe January, February, and/or March of 2016, should probably be split into even smaller separate parts.)

    And I also want to make it possible to customize APSK's behavior by simply editing Hjson text files rather than scripts. (Of course, it will still be possible to edit scripts, but hopefully less necessary.)

    Those Hjson text files will be converted to plain JSON, then the data from them will be read using the marvelous software jq, which is a command-line JSON processor.

    I'm also trying make it far easier to add, relocate, or remove files and scripts in Puppy Setup Kit repos, and make it more easily possible to work with numerous different repos scattered across numerous different disks, without having to waste so much time and energy editing setup kit scripts just to change various things' filepaths simply so the setup kit can find them.

    I accomplished a lot toward all these goals earlier this year, and it really seems like it's all going to work... someday. :-) And I learned a lot from forcing myself to write Bash scripts instead of Perl scripts.

    But I'm actually pretty close to just giving in to the temptation to make PHP a required part of the Puppy Setup Kit, because no matter how much I've tried to force myself to get used to other languages, PHP is still easiest for me and still my favorite.

    Or, I guess I could use PHP to make some working prototypes more quickly and easily than I'm capable of doing with Bash, Perl, or anything else. Then, once I've figured out how to make things work with PHP, maybe I could translate everything into Bash and/or Perl? Or maybe I should just stick with PHP?

    I don't know, but another thing I want is for it to be possible for anyone to use whatever languages they want with the setup kit.

    So, if anyone (like me) wants to use an odd mixture of Bash, Perl, and PHP scripts, or even languages I usually try to avoid, like Python - I want it to be allowed. :-)

    And I even want to keep all old-style Puppy Setup Kit scripts working, but at the very least copy them into the RAM disk and launch them from there instead of a physical disk, to avoid making physical disks do unnecessary work.

  3. Astroblahhh Desktop 2.8 - The relatively modest goal of this version of Astroblahhh Desktop will be to update everything to use Unicode text, so it will finally be possible to store Unicode characters without any problems, instead of just the accidental illusion of no problems.

  4. Astroblahhh Desktop 3.0 - The version of Astroblahhh Desktop which will hopefully be a hybrid web app + command line app + PHP-GTK app. Or at least a web + PHP-GTK app.

    And, now that I finally arrived at the ideas of using Hjson and jq with my Puppy Setup Kit, I think they mght also be useful with Astroblahhh Desktop, and also with my notion of somehow making my Astroblahhh Desktop data compatible with graph databases such as OrientDB or Neo4j, which are far more flexible than MySQL and SQLite.

    But, at the same time, I somehow want to avoid losing compatibility with MySQL and SQLite. If this is too difficult, though, I'll probably just make my graph DB stuff separate from Astroblahhh Desktop, and hopefully give Astroblahhh Desktop some excellent Hjson export capabilities.

With all my past experience with how long my projects (except the tiniest ones) have tended to take, I'm definitely very aware that the above might take quite a bit longer to complete than I hope.

But, I'm going to keep at it anyway. :-) I recently read an amusing blog post that basically said, programmers are the ultimate optimists.

Surprisingly, even for me, that seems true to a great extent, at least with programming. Not so much with anything else - which is why I was surprised to realize that, wow, despite my cynicism about many other things in life, I really have overall tended to be incredibly optimistic about my programming. :-D

Though far from 100% optimistic - which is actually good in various ways, since for one thing, it leaves room for some pleasant surprises when sometimes I get better results than my expectations. (Even though my expectations tend to be quite tentative.)

But I definitely have some logical reasons for optimism - since a lot of the stuff I've already made (both released or not) is remarkably useful, despite its lack of polish.

For example, my blogging software WordsPlatz has served me pretty well with hardly any changes since 2008 or 2009.

And sometimes I get lucky and actually manage to finish things much sooner than I not-altogether-optimistically feared. I feel like I got very lucky with my efforts to get cozy with the GNU Emacs editor, and my effort to modify the multifiles Emacs add-on, which resulted in multifiles-apmod.el. That all only took around two months, but I was bracing myself to spend even more time on them if I really had to.

And GNU Emacs, multifiles-apmod.el, and numerous other great Emacs add-ons have all turned out to be even more wonderful and helpful than I imagined before I started working with them. :-)

So, there's definitely not much chance I'm going to give up on my projects out of a sulky lack of confidence in my abilities. I'm well-aware my work hasn't been flawless, but, I've accomplished much more than I originally had any idea I was capable of.

So, I now feel a lot more sure that regardless of my projects' difficulty, it's quite possibly just a matter of time and enough effort before I finally succeed at most or all of them.

I wish I knew how close I am to having spent at least 10,000 hours doing and studying programming (and related subjects). 10,000 hours is the number mentioned in the intriguing book Outliers by Malcolm Gladwell as being the roughly estimated point at which people might have put in enough effort to finally achieve world-class talent.

In any case, I don't think I've achieved world-class talent (yet?). :-) But doubtless I'm a lot closer than I would be if my severe sleep issues hadn't stopped me from being capable of enduring a normal job (which probably wouldn't have been in the field of programming), and I've definitely improved a lot over all these years.

I shudder to think of how much worse my life might have turned out if I had been more capable of forcing myself to stick with my almost minimum-wage part-time job as a copy editor/typist at a small local newspaper (which I barely endured from Nov. 2002 to Jan. 2004), or any other time-wasting probably minimum wage job that would have gotten in the way of me cultivating more valuable skills.

And now, here's a list of some less highly-prioritized projects or daydreams of mine.

  1. New edition(s) of my Eryss astrology software. Already almost 5 years have gone by since I first created the AutoHotkey (AHK) edition of Eryss (which was not yet named that) in Oct. 2011.

    It's so close to releaseable that sometime, I probably ought to just temporarily put everything else aside (despite the fact that all the other stuff seems probably more important), polish it up a little and finally release it.

    Even more than the AHK version, I want a PHP-GTK version, too.

    Or even a hybrid web app + command line app + PHP-GTK version. Actually, since Eryss will probably be a smaller, easier project than Astroblahhh Desktop, and I also want to make a web app + command line app + PHP-GTK version of Astroblahhh Desktop, I might be able to quickly get a better idea of how to build Astroblahhh Desktop by working on Eryss first.

    Maybe that's sufficient justification for me to work on Eryss first?

  2. Sometime, I'd also like to make my own CMS - content management system, for lack of a better term.

    That would make it much easier to update and improve all my websites. I could finally more easily make my websites nicer, more useful, more organized and easily searched, instead of messy, lazy, and cluttered.

    And then, once I also hopefully get some truly great, useful, easy to install and use projects finally completed, perhaps freelance work and/or purchases (if/when I finally get around to creating some sort of products to sell) and/or donations and/or microdonations will just flow to me without me having to make any effort to somehow market myself or seek work?

  3. I guess a smaller, more realistic project than an entire CMS would probably be to just add a few things to my already-existing blogging software WordsPlatz.

    Even just getting rid of the redundant-looking section of Blog Archive links at the upper right and lower right would probably be an improvement.

    I'd also like to automate the addition of a comment section to the bottom of all of my blog posts - an iframe containing each blog post's official comment thread at the Eryss.Com Forum. But, on the other hand, I'm not sure doing anything to popularize either of my forums is the best idea at the moment, since even the nicest, politest forums I ever posted to always tended to stress me out due to my social anxiety.

    I still intend to keep my forums around forever, but I probably am going to continue largely avoiding them (and any other forums I'm tempted to post to) until I finish more of my top projects.

  4. Ohhh, and I almost forgot again about my daydream of building a streaming music interface. Probably most of my other projects are more important, but, I love music, so I guess there's always a chance I might really do this. It will probably involve the MusicBrainz music metadata database somehow, and/or MediaNet's Open API.

And here are some things I've scarcely even started working on yet, but which might become higher priorities at some point.

I could go on and on, but, that's already a ton of stuff. :-)

So, I definitely have plenty to keep me busy. And who knows what random cool new (or new to me) things I'll hear about in the future which might inspire me to work on totally different things instead.

Since this blog post is mostly about software-related goals and daydreams, I didn't even mention any of my other even more huge goals, like "End world poverty".

But, I hope somehow all of the above will somehow help with that too.

Even the more frivolous-sounding projects like a streaming music interface and the Eryss astrology software would/will doubtless help me become a better programmer and make it possible for me to do a better job with all of my other projects too.

And music definitely usually helps my productivity and ability to concentrate.

And, as explained in this old blog post, astrology (among various other things) played a significant part in me becoming more agnostic and hopeful, and less depressed, close-minded and cynical. So, maybe that could help other people too, even though astrology is usually considered a frivolous subject.

And I'm still very curious about whether any part of astrology can be proven to have objective validity, so I'll be quite happy if my software will help scientists, skeptics, and any other curious people to investigate astrology.

Thanks again to everyone for all your kind support of any kind!

I hope this blog post was interesting, thought-provoking, and educational, and that I can get at least some of the above done well in a reasonable amount of time, so hopefully I'll have many more (and hopefully increasingly high-quality) things to share with you all in the future.

Also, Happy Independence Day!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Perl Script: Apollia's Primitive Invoice Generator v2.0
Saturday, July 2nd, 2016
04:32:44 GMT

An old, messily-coded, yet still useful Perl script. Generates an HTML page containing a list of tasks billed by the hour, and/or a list of projects with a fixed price. Automatically totals up the amount due.

Apollia's Primitive Invoice Generator

Even though this script is version 2.0, I never released it to the world before. I first wrote it maybe over a decade ago, and was recently reminded of its existence by a feature request from the person I made it for.

The code is really messy, and in retrospect, definitely not the best way to do things. But, it works well enough anyway, and the person I made it for has been happy with it for all these years.

So, this script is proof that you don't have to write the most perfect, elegant code to get something done adequately.

But, if I had to write it again from scratch, I'd probably do things much differently. I'd probably much rather write it in PHP instead of Perl, since despite much struggling with Perl, I'm still much more comfortable with PHP than Perl and probably most other languages.

Perhaps I'd make it possible to input data via a spreadsheet, or maybe an Hjson text file, or either one. And then maybe somehow convert the input to XML, and transform it into a nice-looking HTML page using XSLT. :-)

Or maybe not. I don't really feel like thinking it through very carefully, because it's tiresome to dwell on such boring things as writing invoice software.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Wishing I had a non-Java version of VUE
Friday, July 1st, 2016
18:33:28 GMT

Probably my least favorite thing about the wonderful concept mapping software VUE: Visual Understanding Environment is the fact that it's Java software.

Because of Java's reputation for security problems, I don't even like to install Java on my computers outside of a VirtualBox. And even without using VirtualBox, Java uses up a big chunk of memory, which I always like to conserve, even though now I have a laptop with 8 GB of RAM.

So, I've been daydreaming about somehow porting VUE away from Java and into something else. Into what, exactly? Anything I like more than Java!

But in particular, I was thinking JavaScript might be especially nice. :-) (Yes, I am aware that Java and JavaScript aren't related, despite the similar names. :-) )

I think it would be great to be able to run VUE in most any web browser on any platform, without having to use the Java applet version of VUE.

A few years ago, I was able to use the JavaScript library Raphaël to randomly generate very VUE-like graphics for my rather cumbersomely-named Astroblahhh.Com Simple Generator of Many VUE Nodes with Random Colors and Fonts v1.0. :-)

And perhaps existing VUE concept map files - which are in XML format - could be read using the JavaScript software Saxon-CE, which makes it possible for web browsers to use XSLT 2.0, a language which is useful for processing and drastically transforming XML data.

I'm guessing Saxon-CE might also help make it possible to output concept map files which would be perfectly compatible with the Java version of VUE.

And perhaps saving that concept map data would be (or could be made) as simple as using TiddlyWiki's save feature.

Having a JavaScript version of VUE would also make it tremendously easier to somehow build a VUE concept-map-style viewer or editor for Astroblahhh Desktop data, or for other web apps, like maybe the not-yet-existing CMS - content management system, for lack of a better term - of my dreams. :-)

And maybe it could also be somehow made into a viewer and editor for OrientDB and Neo4j graph databases.

I don't know if I'll ever really go to the trouble to try to build a JavaScript port of VUE, or any other port of VUE. But, even if I don't ever get around to it, I think it might be quite worthwhile and useful for someone(s) to do.

So, just thought I'd share the ideas.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Links: Saxon-CE and XSLT 2.0 demo - Knight's Tour
Friday, July 1st, 2016
07:29:24 GMT

Lately, I returned yet again to reading about XML (Extensible Markup Language) and XSLT (Extensible Stylesheet Language Transformations).

Mostly because I'm interested in seeing if I can convert info stored in VUE: Visual Understanding Environment concept map files (which are XML files) into radically different formats using XSLT, which is reputed to be good at drastic transformations of XML data.

Yesterday, I stumbled across Saxon-CE (Client Edition), which is "Saxonica's implementation of XSLT 2.0 for use on web browsers."

I only just started looking at Saxon-CE, so, I haven't yet done anything clever with Saxon-CE myself.

But, I was quite impressed by this demo I found via the Saxon-CE manual:

Knight's Tour


Source Code

I had no idea XSLT could be used for anything like that. :-D

That makes me even more eager than I already was to learn more about XSLT. :-)

Maybe my daydream from last January (and long before that), of being able to edit actual source code with VUE, really could come true. :-)

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Bash Script: Relative Landmark
Friday, July 1st, 2016
03:19:52 GMT

I released a small but useful enough Bash script on GitHub:

Relative Landmark

Basically, it just opens a folder. I use it as a substitute for relative symlinks, since symlinks have some annoying side effects I usually don't want.

Why do I call it "Relative Landmark" instead of something like "Relative Folder Opener"? It's shorter, and also, this script reminds me of the landmark inventory items in the virtual world game Second Life, which you can double-click on to instantly teleport to a location.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Made Toughbook CF-C1 capable of sleep mode in Lighthouse 64 Puppy Linux 6.02 Beta 2
Saturday, June 11th, 2016
20:50:00 GMT

Bash Script

To make it possible to put my Toughbook CF-C1 into sleep mode while using Lighthouse 64 Puppy Linux 6.02 Beta 2, I had to slightly edit the script at this location:

The problem was, by default, that script stops the laptop from entering sleep mode if there are any mounted USB media. And I almost constantly am using at least one mounted USB Flash drive, containing usually mounted TrueCrypt volumes.

So, I edited the suspend script to make it ignore mounted USB volumes. And now, I can put my Toughbook CF-C1 in sleep mode just by shutting its lid, and wake it by opening the lid.

Or, if my Toughbook CF-C1 is in tablet mode, I can put it to sleep by double-clicking the script, and wake it by nudging the power switch.

Warning: Maybe this changed script is dangerous? To my knowledge, I haven't had problems so far yet (Addition, June 14, 2016, 10:34/10:38 PM EDT - since I first wrote this post, I did run into some major problems, but I'm not sure yet if they're related to this script or not. See the updates below.

Anyway, I assume that if you use this script, you probably should avoid disconnecting any mounted USB media while your laptop is asleep. And please be very careful in general.

Additions, June 17, 2016, between 9:39 PM and 10:35 PM EDT. No crashes at all ever since June 14, 2016, after I moved a box which was sitting too close to my laptop's vent! The box was originally about 2 to 3 inches away, and now it's about 5 inches away.

(Addition, June 24, 2016, 5:40 AM EDT. Still no crashes at all!)

I've put my computer to sleep and woken it up repeatedly since June 14th, and browsed Clevnet, Amazon, YouTube, and other things with reckless abandon, and most everything has worked fine. Except for Amazon freezing up my web browser momentarily several times - but it soon unfroze.

So, I now believe the below problems I had before were probably due to my laptop overheating. Ever since moving the box further away from my laptop's vent, my CF-C1 has been remarkably stable. Even my desktop computers with 4 GB of RAM used to crash - or at least their web browsers crashed - much more frequently than my CF-C1 with 8 GB of RAM now does.

I've only been using the CF-C1 indoors and with AC power rather than batteries lately, since the weather has been lousy at times, and I'm still getting used to the CF-C1.

I'm looking forward to finally making more progress with my Puppy Linux Setup Kit. I already have GNU Emacs and my custom Emacs settings working nicely in Lighthouse 64. It should be easier to relax and focus on programming now that I hopefully don't have to worry about my CF-C1 crashing at any moment.)

Additions, June 13, 2016, between 2:41 AM and 3:37 AM EDT. At about 1:59 or 2:00 AM, my first major crash of my CF-C1 while using Lighthouse 64 happened. I took a picture with an (unfortunately unjailbroken) Android phone:

I'm still trying to figure out what happened. I'm not sure whether or not it's related to the modified sleep script, since things had been running mostly fine since I woke up my CF-C1 around 3:40 PM on June 12, 2016.

Soon before the crash, sometimes web pages seemed a bit slower than they should have, and web videos were starting to get a little choppy. I considered closing and reopening my web browser, or maybe restarting X Windows, to try to fix or close whatever might be gumming things up, but I didn't.

At the moment the crash happened, I had only maybe 5 or 6 tabs open in the Pale Moon web browser, mostly looking at various legally free (as in price) ebooks from my local library's website, Clevnet. I was actually momentarily looking away from the screen at another computer, then when I looked back, it was like the above. Ctrl-Alt-Delete (or backspace) did nothing, so all I could do was reboot.

I had a different probably Clevnet-related crash happen before with the laptop I was using before this, the 1.5 GHz one with only 2 GB of RAM, while running Lucid Puppy Linux 5.2.8 version 004. (If I recall correctly - unlike this crash, that crash just made the screen mostly black out, and didn't display any readable text.) Didn't expect something like that to happen with the CF-C1, since it has so much more RAM - 8 GB - and multiple cores.

Maybe I should only use my Windows 7 CF-C1 for reading Clevnet books from now on. (Or a VirtualBox.) I am quite annoyed if Clevnet is to blame for yet another crash, since reading books on a computer is not something that truly requires overly elaborate software that appears to maybe be prone to crashing one's entire GNU/Linux system. I'm also annoyed that I can't use whatever font I want, or even change the text color and background to whatever I choose, etc., etc.

Just yet more reasons why free (as in freedom), libre, open source software and ebooks are inherently better.

Additions, June 13, 2016, between 6:38 PM and 7:34 PM EDT. The second major crash happened at 6:14 PM EDT today. I decided to risk reading Clevnet ebooks in Lighthouse 64 again. Like before, it worked fine for a while.

But when I closed and reopened my web browser, went to the History menu and chose "Restore Previous Session", then clicked on the single Clevnet tab, it showed the typical book-loading page for a second or so, then gave me pretty much the same error screen.

This time, I noticed there was a visible mouse cursor, but I couldn't move it at all with my USB mouse. (I forgot to try the touchscreen or stylus.) My computer was totally unresponsive to any keypresses, so, again, all I could do was reboot.

Definitely seems Clevnet-related, since it happened just about immediately after trying to return to my Clevnet tab.

Additions, June 14, 2016, between 7:48 PM and 8:24 PM EDT. The third major crash happened at 7:31 PM.

This time, I didn't risk reading Clevnet at all. I only had two tabs open - Astroblahhh.Com in the tab I wasn't looking at, and the tab I was looking at was the humorous page I linked to in my most recent blog post. Thanks to the NoScript add-on (which works in Pale Moon as well as Firefox), I didn't have JavaScript or anything else enabled on that page.

However, I had just been watching some YouTube videos, and with one of them, Flash crashed. But my entire system didn't crash until maybe after a minute or so after I had closed my YouTube tabs.

So, maybe it's some sort of Flash-related problem? I don't know whether or not Clevnet uses Flash, but it's probably possible.

Another thing I wonder is if maybe it's some kind of problem with overheating. Fortunately, even in GNU/Linux, the fan works, and when my computer is working hard at something, the fan already automatically works harder also. But if that's not enough, maybe I need to do something like, continually keep the bottom of my computer elevated so heat doesn't build up? Or find software to control the fan?

To conserve vertical screen space, I have my taskbar (which has a CPU monitor widget) configured to autohide, so I wasn't able to see what the CPUs were up to when any of these crashes happened. I wonder if the CPUs were going crazy with activity after Flash crashed?

Rather than getting rid of my taskbar's autohide, I guess I'll just configure the GKrellM system monitor widget software (which is conveniently available by default in Lighthouse 64) to always float on my screen so I can keep a closer eye on what my CPUs are doing.

And, I'm going to see if I can crash my computer the same way while not even using the above sleep script. If I can, then, hopefully the sleep script isn't to blame.

Additions, June 14, 2016, between 9:52 PM and 10:59 PM EDT. I tried really hard to deliberately crash my computer. At first, I didn't use the above sleep script nor attempt to put my computer to sleep at all.

First, I went to Clevnet and borrowed all the Dilbert comic books I could, since it seems like Clevnet ebooks with lots of images are harder work for my computers to deal with, judging by how they had slowed down my old 1.5 GHz + 2 GB RAM computer, and the fact that it only took one Dilbert comic book to crash that computer totally.

So, for my experiment, I opened 10 of them at the same time! And surprisingly, everything was fine.

Then, leaving all those Clevnet tabs open (plus a few others), I proceeded to open about 30 different YouTube tabs. I also repeatedly returned to the Clevnet tabs and turned lots of pages. Lots of the YouTube videos crashed, but many kept running, and so far, nothing at all has taken down my entire system. Even Pale Moon didn't crash.

Just for the sake of my experiment, I repeatedly closed and reopened Pale Moon and restored my previous session. I also installed and ran the Redshift screen tinting software.

And, most recently, I re-added the above modified sleep script to my system, and experimentally put my computer to sleep and woke it up again while my Clevnet tabs were open and I had numerous YouTube videos in progress. Still couldn't crash my computer!

I'm not sure why not. Perhaps making a bit more room next to the laptop's vent helped dissipate some heat? I had usually been keeping my laptop on a small table with a box sitting maybe too close to it, but had moved it further away before starting my experiment.

In any case, I still am not sure what the problem is. It's comforting that it's so difficult to crash my computer even despite trying quite hard - but it's unsettling that I don't have much of a clue when or how the problem might strike again out of the blue.

Addition, 10:21 PM EDT. It seems Clevnet is now giving me an error when I try to log in:

(0) The user record is locked for text update

Surprisingly, when I searched Google for the text "The user record is locked for text update" within quotes, there was only one page found: Customer Discussions: Anyone Else Gotten This Error Message at your Library Site?

Addition, 10:25 PM/10:45 PM EDT. Yay, the Clevnet error is already fixed! I was able to log into Clevnet. Didn't have to do anything special, I just kept trying to log in.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Bash Script: Rotate Toughbook CF-C1 Screen in Lighthouse 64 Puppy Linux 6.02 Beta 2
Saturday, June 11th, 2016
19:41:00 GMT

Happily, I stumbled across a way to rotate my Toughbook CF-C1's screen while using Lighthouse 64 Puppy Linux 6.02 Beta 2.

The solution was the script by mildmojo. I just had to slightly modify it to make the touchscreen work properly with both the stylus and my fingers.

Thank you so much to mildmojo! Being able to convert my Toughbook CF-C1 to tablet mode in GNU/Linux makes it far more pleasant to use!

Here's my slightly modified version on GitHub:


And here's a zip file hosted here on Astroblahhh.Com, containing scripts with executable permissions, so you can simply double-click on them to run them. (4.3 KB)

I haven't tested these scripts in any other form of GNU/Linux, but hopefully they would work.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Apollia's Floating Volume Control v1.0
Thursday, May 5th, 2016
19:49:46 GMT


To my surprise, I recently ended up making this:

Apollia's Floating Volume Control v1.0

It's an AutoHotkey script, so, it's for Windows. It works for me in Windows 7 with AutoHotkey v1.1.23.05 (Unicode 64-bit). I haven't tested it with other versions of Windows and AutoHotkey, but hopefully it will work.

It's a slider which controls the volume of your computer's audio. The slider can be either horizontal or vertical. It can either constantly float in the foreground above all other windows, or it can easily be summoned by single-clicking the taskbar icon.

By default, the slider is unusually large because my Toughbook CF-C1 has a touchscreen, so I wanted the slider to be difficult to miss with my fingers. Also, to avoid accidental repositioning, you can configure the window to be impossible to drag around the screen.

The window can be configured to have whatever amount of transparency you want. Double-clicking the taskbar icon mutes or unmutes.

One flaw is that currently, the only way to permanently save your settings is to edit the source code.

But, since this software is free (as in freedom and as in price), libre, and open source, hopefully everything about this software can be changed or fixed however you like.

Why am I still using Windows at all? Because it's hard to get away from for some things, like listening to legally free (as in price) audiobooks from my local library website, Clevnet.

But also, releasing free (as in freedom), libre, open source software on non-libre platforms like Windows and Macs helps give those platforms' oppressed users a taste of freedom - which could result in a nice, healthy craving for even more freedom.

And why did I make this particular thing? Because I've finally been trying to put my Toughbook CF-C1 with an annoying widescreen (or less annoying tallscreen, if you turn it sideways and use it in tablet mode) to more use... and when I tried a few existing AHK volume slider scripts, none of them worked for me in Windows 7.

I also tried PKVolume (which is what I always used to use in Windows XP), but I couldn't get that to work either.

Fortunately, the Floating Volume Control took less than 4 days to put together. (The creation timestamp on the original script file is May 1, 2016, 3:54:22 PM EDT.)

That's largely thanks to a lot of very helpful AutoHotkey Forum posts, example scripts, and script snippets by many authors, and the excellent AutoHotkey documentation.

Also, AutoHotkey is overall really nice, easy, fun to work with, and actually one of my favorite things in Windows.

And I was able to ease the boring chore of making the About window by modifying some code from DimScreen.ahk by Skrommel. DimScreen and tons of other great AHK scripts are available from

Thanks to everyone above, or connected with the above!

Also, thanks to Saki, the artist who made the GPL-licensed icons I used as the Floating Volume Control's taskbar icons.

And thanks to, which makes it really easy to find nice icons.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Pale Moon - a faster, more stable web browser than Firefox
Tuesday, January 12th, 2016
06:20:36 GMT

About 2 weeks ago I finally got tired of Firefox 32 being overall slower than it should be, and too often completely crashing my entire system, which forces me to reboot, and go out of my way to avoid certain websites or pages while using one of my main Linux systems. (A rather pathetic single-core 1.5 GHz laptop with 2 GB of RAM, running Lucid Puppy Linux 5.2.8 version 004.)

Unfortunately, when I updated to the latest Firefox in the hope that it might be better than Firefox 32, I found it seems to no longer be possible to change Firefox's horrible new search interface back to the far nicer old search interface, which lets you change the default search engine with two clicks.

That was the final straw for me, so I finally tried Pale Moon (version 25.8.1), a free (as in freedom), libre, open source web browser forked from Firefox.

Pale Moon's source code is available on GitHub. (I actually didn't try compiling it from source yet, but someday I probably will.)

Even on my 1.5 GHz laptop with 2 GB of RAM, Pale Moon is refreshingly faster and more difficult to crash than Firefox 32 and any later version of Firefox I briefly tried. Pale Moon has my preferred search interface, and other defaults I prefer, right out of the box.

Pale Moon is even compatible with my favorite Firefox add-ons - NoScript, Stylish, Web Developer, NoSquint, and even the add-on I modified myself.

In the past couple weeks of using Pale Moon on my 1.5 GHz laptop with 2 GB of RAM, I only crashed my entire system once, probably only because I was recklessly trying to test Pale Moon's limits by opening way more tabs than I ordinarily would have dared to with Firefox.

Overall, Pale Moon crashes much less often and less severely for me than Firefox. Usually the worst thing that happens is, Pale Moon sometimes suddenly closes, but I can get all my tabs back just by reopening Pale Moon. And I can usually avoid that kind of crash by avoiding opening tons of tabs.

So, I just thought I'd recommend Pale Moon, since so far, it seems really great, fast, and much better than Firefox has been lately.

Addition, Jan. 12, 2016, 3:57 AM EST. I also tried - or tried to try - GNU IceCat, but, it wouldn't launch for me at all while running Lucid Puppy Linux 5.2.8 version 004, since apparently I don't have "GLIBC_2.17". But I'll certainly try GNU IceCat again if I ever switch to a newer Puppy Linux.

I also have read good things about SeaMonkey, but haven't tried it recently, mostly because I don't need any of its features besides a web browser, and conserving RAM is important if you're running Puppy Linux on a computer with too little RAM. I guess 2 GB of RAM is tolerable, but 4 GB or more is much better.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑

   ▲ Top  ▼ Bottom  △ TOC   Up ↑
Some thoughts on Lisp
Sunday, December 27th, 2015
17:12:56 GMT

I'm still unsure about whether all the claims about the Lisp programming language being incredibly great, and more powerful, flexible, and overall better than any other language are really true or not.

But, hopefully I'll find out, now that I have GNU Common Lisp and newLISP to play with, in addition to the GNU Emacs editor.

Some Emacs Lisp code is very readable. For example, the command (beginning-of-line), which moves your cursor to the beginning of the line. :-)

But with much other Emacs Lisp code, I wasn't sure at first if I found Bash or Emacs Lisp more confusing and indecipherable. Fortunately, working on multifiles-apmod.el helped me get increasingly used to Emacs Lisp, and I definitely at least like it more than Bash now.

For me, Lisp is a lot more readable and understandable when I use my preferred indentation style rather than the confusing styles I've seen everywhere else.

I really appreciate that Lisp doesn't care what formatting I use. One of the reasons I'm never going to be able to tolerate the Python programming language is because of Python's strict enforcement of some quite irritating rules about formatting.

I usually am pretty consistent with my indentation style, but sometimes for boring but necessary lines of code I don't really need to read to follow what's going on, I like to indent them more deeply just as a signal that those lines are extra-boring and can be ignored. I doubt Python would let me do that.

Reputedly, Lisp is so flexible that you can create your own languages in it, and redefine the Lisp language itself.

So, I wonder if it might actually be possible to make Lisp understand the remarkably English-like Inform 7 or HyperTalk?

Computers are some of the most powerful, useful tools ever created, and I think it's very regrettable that the unnecessary abstruseness of so many programming languages thwarts many intelligent people from doing much of anything with their computers.

People shouldn't have to be technical wizards to be able to put their computers to more use.

It's 2015, and by now there ought to be a really great successor to HyperCard (which was originally released in 1987, according to Wikipedia).

I recently found out that Paul Graham's book On Lisp is legally available for download from his website, for free:

On Lisp, by Paul Graham

Not just a sample, the entire book!!

I haven't read most of it yet, but I assume it will be a great book. I really like his nice, clear writing style, and even back when I was primarily a Windows XP user years ago, I found his articles on Lisp so intriguing that I downloaded Lisp in Windows.

Though back then, I quickly gave up, or just drifted away from it due to being so preoccupied with my PHP projects, and having no idea how to make Lisp do anything as interesting as what I could already do with PHP, or anything interesting at all.

But now that I have so much more programming experience, and switched to Linux (in 2011), and recently managed to customize my Emacs setup so nicely that it has become my favorite editor... hopefully now I have a better chance of being able to figure out Lisp.

   ▲ Top  ▼ Bottom  △ TOC   Up ↑