Posts Below
8/8/2017 - The Piano Storybook by Shnabubula (Music)
8/4/2017 - Link: The Hans Free Electric Bike (Activism)
8/2/2017 - Link: August 21, 2017: A total solar eclipse visible in parts of the USA! (Astronomy)
7/31/2017 - CATcerto (Music)
7/31/2017 - How to compile Pale Moon 27.4.1 from source code in Lighthouse 64 Puppy Linux 6.02 Beta 2 (Puppy Linux)
7/31/2017 - How to make YouTube HTML5 audio work with Lighthouse 64 Puppy Linux 6.02 Beta 2 and a Sewell USB Sound Box (Puppy Linux)
7/1/2017 - Legacy code woes (Programming)
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)

This section might (or might not) include extra posts that weren't important or interesting enough to have on the front page.


    Hide/Show:


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down
The Piano Storybook by Shnabubula
Tuesday, August 8th, 2017
18:27:46 GMT

Music

Earlier this year, for the first time ever, I contributed to a Kickstarter campaign. It was for The Piano Storybook by Shnabubula, one of my favorite musicians in the world.

Shnabubula is the creator of some of the best, most dazzlingly brilliant music I've ever heard in my life. If you're a fan of video game music remixes, or if you've explored my astrosorted music list, then, you're probably already a fan of Shnabubula.

To my joy, I heard about The Piano Storybook in time to be one of the 100 people who contributed at least $15 in exchange for Shnabubula composing us an improvised piano song, customized according to what image(s), stories, or other requests we sent!


The Piano Storybook is now complete, and all the albums, and videos of all the performances, are going to be gradually released.

It will be possible to download all the albums from Shnabubula's Bandcamp page for free, or for any amount of money you're comfortable sending.


The first album released was The Great Flood, and you can download it from Shnabubula's Bandcamp page, or watch the performances on YouTube.

It contains the incredibly lovely song Shnabubula improvised for me, which he titled Beneath the Shimmering Surface.


For more, see The Piano Storybook's official home page, Shnabubula's Bandcamp page, and Shnabubula's YouTube channel!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: The Hans Free Electric Bike
Friday, August 4th, 2017
18:05:45 GMT

Activism

Today, while googling exercise bike-related stuff, I stumbled across a news story about a bike which can produce 24 hours of electricity from 1 hour of pedaling!

Which is such amazingly good news, it inspired me to post this blog post to Non24.com:

The Hans Free Electric Bike

I am very interested in getting one to ride myself when they're available.

Then, hopefully I'll be able to save my family a ton of money on electricity, as well as improve my health and appearance, and help reduce pollution and slow down global warming. :-)


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: August 21, 2017: A total solar eclipse visible in parts of the USA!
Wednesday, August 2nd, 2017
19:44:26 GMT

Astronomy

Just posted this on Eryss.Com:

August 21, 2017: A total solar eclipse visible in parts of the USA!

An event so rare that the news seems worth repeating here, too.


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
CATcerto
Monday, July 31st, 2017
13:09:03 GMT

Music

This is lovely:

CATcerto. ORIGINAL PERFORMANCE.

by Mindaugas Piečaitis and Nora the Piano Cat.

You might also like to visit CATcerto.com.


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to compile Pale Moon 27.4.1 from source code in Lighthouse 64 Puppy Linux 6.02 Beta 2
Monday, July 31st, 2017
11:35:28 GMT

Puppy Linux

Several days ago, after less than an hour of trying, I successfully compiled my favorite web browser, Pale Moon, from source code, in Lighthouse 64 Puppy Linux 6.02 Beta 2!

The reason I did that was because I thought upgrading my web browser might solve my issues with YouTube's HTML5 player not playing audio. (I was mistaken, but, I finally found a solution!)

And when I tried to simply download the latest precompiled version of Pale Moon for Linux, 27.4.0, it wouldn't run on my system because of this error. (Which also happened with at least one older version many months ago):

./palemoon: /lib/libc.so.6: version `GLIBC_2.17' not found (required by ./palemoon)

So, my only remaining option was to try to build Pale Moon from source code.


Since the build process was a bit more complicated than just ./configure; make; make install, and I thought I might need to know how to do it again someday, and that others might like to know too, I decided to document it.

Happily, it was a lot easier to build than I thought it might be. That was the first time I ever attempted to build a web browser from source code, and I was prepared to spend hours on it if I had to.

But, to my own surprise, it only took me about 45 minutes to figure out, thanks to various helpful web pages. And it will hopefully take much less time in the future, now that I've written this blog post, which even I will be able to refer to someday when I've forgotten most of the below details.


However, the below instructions will probably have to be modified if you don't have enough RAM, because the final /home/root/pmbuild folder on my system ended up being over 3 GB, or 3264 M, to be more exact.

And I was only able to build it there - a location inside my Puppy Linux RAM disk - because my current computer has a huge amount of RAM - 32 GB, which gives me a 16 GB Puppy Linux RAM disk.

So far, I wasn't able to figure out how to make the ./mach command build Pale Moon someplace other than /home/root/pmbuild. I'm guessing the best place to look for answers would be the official Pale Moon forum.


I also haven't tried these instructions in any other Puppy Linux, nor any other GNU/Linux. So, I don't know what changes might need to be made for other Puppies or GNU/Linuxes.


  1. I loaded the Lighthouse 64 DevX SFS file of development tools by right-clicking it and choosing "sfs_load".

    If you need a copy of the DevX SFS file, you can get it from here:

    http://lhpup.org/sfs/602-x86_64/


  2. I didn't have Autoconf 2.13, which is required to build Pale Moon, according to the official instructions on how to build Pale Moon in Linux.

    So, I downloaded autoconf-2.13.tar.gz from here:

    https://ftp.gnu.org/gnu/autoconf/


  3. Then, I unzipped the autoconf-2.13.tar.gz in one of my temporary folders in my Puppy Linux RAM disk.


  4. Building Autoconf 2.13 was easy. In the autoconf-2.13 folder, I opened a terminal window and typed these commands:

    ./configure

    make

    new2dir make install

    I put "new2dir make install" instead of "make install" because I wanted to make Puppy Linux .pet and .sfs installer files for Autoconf 2.13, so I hopefully wouldn't have to repeat this process again.


  5. I'm not sure this is necessary, but I moved my existing copy of autoconf (version 2.69) to some other location with this command:

    mv /usr/bin/autoconf /usr/bin/autoconf269


  6. Then, I had to make this symlink, or else the "Mach" software used to build Pale Moon complained that Autoconf 2.13 couldn't be found. This page gave me that idea:

    ln /usr/local/bin/autoconf /usr/local/bin/autoconf213


  7. Next, I downloaded the "Pale-Moon-27.4_RelBranch.zip" file from this page on GitHub:

    https://github.com/MoonchildProductions/Pale-Moon/tree/27.4_RelBranch

    That file's size is about 230 MB.


  8. I unzipped "Pale-Moon-27.4_RelBranch.zip" in a temporary folder in my Puppy Linux RAM disk. (I went out of my way to put it in a path which contained no spaces, simply because lots of things in Linux seem to be allergic to spaces in paths.)

    If you don't have as much RAM as I do, you might want to unzip that folder to someplace on a physical disk.


  9. Inside the Pale-Moon-27.4_RelBranch folder, I had to put a text file named ".mozconfig" (without quotes).

    I copied and pasted the example .mozconfig file from the official instructions for how to build Pale Moon in Linux: https://developer.palemoon.org/Developer_Guide:Build_Instructions/Pale_Moon/Linux

    But, I found I couldn't use exactly that, because the build got interrupted because I didn't have PulseAudio. And I much preferred to avoid installing PulseAudio because of its association with the infamous systemd.


    Fortunately, this forum thread gave me a clue of how stop Pale Moon from trying to use PulseAudio.

    Here's my final .mozconfig file, which you should place inside the "Pale-Moon-27.4_RelBranch" folder before the next step:


  10. I guess this is the point at which you might need to figure out how to change the default destination for the build, if your Puppy Linux RAM disk can't accomodate over 3 GB of files.

    As I mentioned before, I don't know how to do that yet - sorry.

    So, the rest of these instructions will simply assume you have enough RAM, as I did.


  11. Still in the "Pale-Moon-27.4_RelBranch" folder, I opened a terminal window, and typed this command:

    ./mach build

    Then, I just had to wait a while - 801 seconds, or 13.35 minutes. However, I was using a pretty good 2.8 GHz computer with 8 cores. So it might take more or less time depending on what you're using.


    I'm actually using a used Mac Pro from 2008, which looks like a giant cheese grater. :-) And I actually like it a lot, even though I usually prefer to avoid Apple products.

    Surprisingly, this Mac Pro can run Lighthouse 64 Puppy Linux 6.02 Beta 2, which makes it tremendously nicer for me to use than Mac OS X Lion does.


    The ./mach build command resulted in a large folder at /home/root/pmbuild/. I forgot to check its size before running the next step, but after the next step, it ended up being over 3 GB! 3264 M, to be more exact.


  12. There was still one more build command to run in the "Pale-Moon-27.4_RelBranch" folder:

    ./mach package

    This was much faster to finish than the build, and resulted in a tarchive quite similar to the official precompiled Pale Moon tarchives.

    That tarchive was in the folder /home/root/pmbuild/dist/ and named "palemoon-27.4.1.linux-x86_64.tar.bz2".


  13. Before you unzip that tarchive and run the "palemoon" file, you should probably take the precaution of backing up your current Pale Moon profile, just in case.

    In my system, by default, my Pale Moon profile is located at:

    /root/.moonchild productions

    To back it up, I close Pale Moon, and wait a little while to try to make sure Pale Moon is finished writing any files to that folder.

    Then I zip the folder, and put the zip file somewhere on a physical disk.

    I assume backing up the folder simply by copying the folder to a physical disk might also work, though I haven't tried that lately.


  14. Now, you can unzip the "palemoon-27.4.1.linux-x86_64.tar.bz2" file to whatever folder you want. It contains a "palemoon" folder which contains a "palemoon" executable file you can simply double-click on to run.

    That will launch Pale Moon 27.4.1 with your usual old Pale Moon profile, so, you hopefully won't have to reinstall your add-ons and other customizations from scratch.

    I upgraded from Pale Moon 26.2.2, and so far, I haven't noticed any problems with any of my old add-ons or anything else, though I haven't checked thoroughly.


  15. The most jarring difference I encountered was Google not being in the search engines list by default, but that is very easily fixed by clicking the Google link on this official Pale Moon Search Plugins page:

    https://addons.palemoon.org/integration/addon-manager/external/searchplugins

    And while you're there, you can add a lot of other handy search engines.


I'm very happy with my Pale Moon upgrade so far. It is noticeably faster than the old version I contentedly used for probably over a year, Pale Moon 26.2.2.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
How to make YouTube HTML5 audio work with Lighthouse 64 Puppy Linux 6.02 Beta 2 and a Sewell USB Sound Box
Monday, July 31st, 2017
08:40:30 GMT

Puppy Linux

I finally found a way to make YouTube's HTML5 player play audio while I'm using my Sewell USB Sound Box with Lighthouse 64 Puppy Linux 6.02 Beta.

Previously, I simply used the YouTube Flash Video Player web browser add-on instead of struggling to make the HTML5 player work. But, that add-on recently stopped working for me in the Pale Moon web browser. I tried upgrading Pale Moon, but that didn't fix the audio either.

But luckily, after a few days, I stumbled across this helpful forum thread. Post #10 contained all the info I needed. Thanks to all the authors of that thread!


Here's what I did:

  1. To get my Sewell USB Sound Box to work, I followed my own instructions here.

  2. I opened the text file /etc/asound.conf in a text editor. (You might want to make a backup copy of the asound.conf file in case anything goes wrong.)


  3. I replaced the entire contents of /etc/asound.conf with the settings from the above-mentioned Post #10:


  4. I closed then relaunched my web browsers - Pale Moon 27.4.1 and Firefox 45.0.2.

  5. I went to a YouTube video. Both audio and video played fine!

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Legacy code woes
Saturday, July 1st, 2017
23:42:28 GMT

Programming

I've been feeling so overwhelmed lately by my Puppy Linux Setup Kit, my messy neglected websites, and Astroblahhh Desktop. Overwhelmed and stuck.

Actually, I've felt that way for years, which is probably part of why I've procrastinated so much about continuing to work on these projects at all.


But, recently, reading some articles about working on legacy code made me feel better and less worried that maybe I'm just not really cut out to be a programmer.

I hadn't realized that even much better, wiser, more experienced programmers than me can have immense trouble with this kind of project if they make the kinds of mistakes I've been making, such as trying to change too many things at once, not doing test-driven development (TDD), and overly optimistically attempting "big-bang rewrites".


Here are a couple of those articles:

The Legacy Code Lifecycle
April 25, 2012 from DanLimerick.wordpress.com

How to Improve a Legacy Codebase
May 30, 2017 from JacquesMattheij.com

Those articles and their advice look very wise to me, not that I would know. But I'm guessing that doing even just some of what is suggested might go far better for me than doing what I've been doing.


Even though (as far as I know) I'm the only person who ever worked on my Puppy Linux Setup Kit, Astroblahhh Desktop, and other languishing projects of mine, these projects have all been through the entire lifecycle mentioned in that first article, and have long been stuck in the last phase.

In many ways, I unintentionally designed things naively and poorly at the outset. I didn't document things well enough, and I took such long breaks from working on my own code that by the time I returned to it, I had forgotten a ton of details.

And for many years, I didn't even know what test-driven development (TDD) was. I finally tried it in 2015 or 2016 and liked it, but, quite unwisely, I still usually haven't gone to the trouble lately, and I probably ought to learn more about it so I can be more sure I'm doing it right.


I'm quite frustrated that I haven't gotten much more done by now, but, I probably shouldn't be too hard on myself. If I were really a hopelessly bad programmer:


So, I'm definitely not even close to totally giving up on programming forever (though I feel very intimidated by the idea of trying to make a serious career out of it). But I think I need to be a lot more cautious and less naively optimistic than I was in the past.

The idea of releasing more of my work more frequently definitely appeals to me a lot. I've felt so guilty about not creating and/or releasing way more useful (or otherwise beneficial) stuff into the world already. And many people think sharing in-progress work publicly and frequently can result in much better software.

Preparing things for publication definitely encourages me to do a better job than I tend to do with things I don't expect to release anytime soon (if ever). Not that I don't still make numerous dumb mistakes either way, but I think maybe I make fewer dumb mistakes when I create something with publication in mind.

I sure wish I could do a perfect job on everything all the time, but, I've learned that I better not insist too stubbornly on perfection or I'll never get anything done.


Fortunately, already, without even knowing it (at first), I seem to have been moving away from the "cathedral" model of free/libre software development, "in which source code is available with each software release, but code developed between releases is restricted to an exclusive group of software developers", toward the "bazaar" model, "in which the code is developed over the Internet in view of the public".

That happened because I finally learned more about how to use Git and GitHub, so I've been sharing my work more frequently by releasing it on GitHub. Currently, that's much easier than uploading files to my own websites.


So, currently, this is the place to look for my absolute newest updates to whatever software projects:

https://github.com/Apollia?tab=repositories


Not much of what I've been adding lately has seemed notable enough (or easy to install or interesting or useful enough) for me to announce in new blog posts, so, I mostly haven't mentioned them here.

In retrospect, I maybe shouldn't have even announced Salty XML Transformer, because it's such a chore even for me to install, because I haven't made even my own not-yet-released Puppy Linux Setup Kit fully up to date yet.


By the way, I recently found out that ever since sometime in July 2016, the latest released version of the Puppy Linux Setup Kit (v1.1) was far less functional than I thought, because unfortunately, some of the files the old setup kit optionally tries to download are no longer available. Many went missing simply because I neglected to log into my Dropbox account for over a year, so my Dropbox account was automatically deleted in July 2016. Sorry for any inconvenience!

I probably shouldn't encourage people to use the old legacy versions of my setup kit. Certainly not yet. At some point I'm going to try to release many of my old-style setup kit scripts that I made since the last release in Feb. 2015 - but even I'm trying to get away from being stuck using any old-style version anymore, even my current best not-yet-released version.

I sure wish I could somehow gradually create a smooth transition from the old-style setup kit to the new-style setup kit I'm still trying to design and build. Or some kind of clever hybrid of the two.


Anyway, even though I'm quite tired of struggling with all these tedious legacy projects, I probably am not close to giving up yet. Or even if I do turn my attention to other things for a while, I'll probably return to them eventually.

In any case, please don't expect dazzling results soon, or maybe not for a very long time, and sorry I have been so incapable thus far of doing far more.

And I still don't feel up to trying to sift through whatever gigantic backlog of mostly spam (and perhaps some real emails) I might have gotten in the past several years, but, hopefully I'll get around to that someday. Sorry for being so unreachable.

And hopefully someday I'll figure out how to delete the literally hundreds of thousands of spam messages there are in the Non24.Com Forum without deleting any of the few non-spam messages, and also how to truly block new spam messages so the same thing doesn't happen again.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


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

Science

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   Up ↑


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

Software

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 Upwork.com (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

Finances

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

Food

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 ShelfLifeAdvice.com

Quote:

"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 news.cornell.edu)


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

Software

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

Music


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

His website: TheMadDrummer.com


   ▲ 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

Software

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:

Simple-Schematron-Demo-for-PHP-5.6.28-and-Saxon-C-1.0.2


I only authored the PHP script and the "README.md" 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

Software

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 9.7.0.14. You can get the "saxon9he.jar" file you need simply by unzipping "SaxonHE9-7-0-14J.zip".

    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. xml-commons-resolver-1.2.zip - 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

Software

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
http://users.teilar.gr/~g1951d/




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

Software

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:

GitHub.com/Apollia/VUE


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:

src/java15
src/oki/old
src/maclib
src/old
src/build

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

Music

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 TechnologyReview.com)


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.com

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 AsimovInstitute.org)




I especially enjoyed the examples from Flow-Machines.com.

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   Up ↑
The renovated Puppy Linux Setup Kit will probably require PHP and PHP-GTK
Saturday, November 26th, 2016
05:59:24 GMT

Programming

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 dwheeler.com:

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   Up ↑


    Hide/Show: