Software Blog Archive - Jul 2016

Posts Below
7/1/2016 - Links: Saxon-CE and XSLT 2.0 demo - Knight's Tour
7/1/2016 - Wishing I had a non-Java version of VUE
7/2/2016 - Perl Script: Apollia's Primitive Invoice Generator v2.0
7/4/2016 - Now I'm 35; daydreams and plans for the future
7/7/2016 - Links: Amazing 3D graphics inside a web browser
7/25/2016 - Bash Script: flexishacheck


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

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