Blog

Article Tags

Your First Hua Article

By William Jeffrey Rankin, Sat Nov 29 2025

Have you just downloaded Hua and are wondering how to get started? Here's how you can create your first article!

First, copy and paste the code of this minimal article into a file named hua-first.md. Put the file in Hua's content directory.

Next, open entries.csv in Hua's root directory in a text editor and add this line at the end of the file:

000050,My First Article!,hua-first.md,tag|another,11/29/2025,Author Name,mailto:someone@email.com

Now open meta.csv and add this line (this step is optional, by the way):

000050|tag, article, Hua|This is my first article!

You're nearly there! Open a command shell or terminal, navigate to your Hua directory, and type the following:

pwsh hua.ps1 example.cfg

The output will look something like this. Don't worry about the errors (unless it mentions your article specificially) — these are present to demonstrate Hua's error handling.

Content file error. File (ID: 000047) is empty. Skipping.
Content file error. File (ID: 000045) is empty. Skipping.
Entries file error. There is an entry (ID: 000040) without a filename. Skipping.
Entry content error. Entry content file path set as .\content\missing-2.md. Skipping.
Entry content error. Entry content file path set as .\content\missing-1.html. Skipping.
Related article error in 000020. Article ID 000017 does not exist. Ignoring.
Entries file error. There is an entry without an ID. Skipping.

Finally, open the blog directory. It will contain the newly generated file, hua-first.html. The article will also appear in index.html, the tagged with files, and archive.html. That's it!

Related Articles

    Article Tags

    Hua Related Articles Support

    By William Jeffrey Rankin, Sun Aug 3 2025

    Revision 294 of Hua supports automatic generation of related articles. Simply append one or more IDs to the appropriate article in the entries file. Here's an example from this blog:

    00165,planet-rs Improvements,prs-improvements.md,development|astronomy,Sat Jul 26 2025,William Jeffrey Rankin,mailto:jeffrey.rankin@me.com,00031|00032|00090
    

    Articles are listed in the same order they appear in the entry. Hua will display (and log) a warning should the related article ID not exist in the entries file:

    Related article error in 000020. Article ID 000017 does not exist. Ignoring.
    

        Article Tags

        planet-rs Improvements

        By William Jeffrey Rankin, Sat Jul 26 2025

        I've made a few improvements to my shell-script interface for aa (Stephen L. Moshier's astronomical almanac program):

        XML Output

        XML is now included among the output formats (csv, html, xml, ps, raw, and table). It's specified just like any of the others:

        jrankin@Callisto: ~/planet-rs $ ./planet-rs.sh Sun.txt xml -4 EDT
        <?xml version="1.0" encoding="UTF-8"?>
        <rs input_file="/tmp/planet-rs-year.QTaHZtMVQ">
            <day>
                <date>10/01/2025</date>
                <rise>07:33 EDT</rise>
                <set>19:18 EDT</set>
            </day>
            <day>
                <date>10/02/2025</date>
                <rise>07:34 EDT</rise>
                <set>19:16 EDT</set>
            </day>
            <day>
                <date>10/03/2025</date>
                <rise>07:35 EDT</rise>
                <set>19:15 EDT</set>
            </day>
            ...
        

        An XSLT is included (fmt-html.xsl) to transform the XML to HTML.

        Year Output

        The shell script year.sh outputs all formats (and all objects) for the designated year (if year is not specified, current year is output). Example usage and output:

        jrankin@Callisto: ~/planet-rs $ ./year.sh 
        Generating JAN files...
            ...for 0 (csv)
            ...for 0 (raw)
            ...for 0 (html)
            ...for 0 (table)
            ...for 0 (ps)
            ...for 0 (ps to pdf)
            ...for 0 (xml)
            ...for 2 (csv)
            ...for 2 (raw)
            ...for 2 (html)
            ...for 2 (table)
            ...for 2 (ps)
            ...for 2 (ps to pdf)
            ...for 2 (xml)
            ...
        

        Files are output to directory by format and named according to (YYYY)-(MMM)-(object).(format).

        Download

        planet-rs.tar.gz, 5.8K

        Related Articles

            Article Tags

            System Report Using systeminfo and PowerShell

            By William Jeffrey Rankin, Sat May 10 2025

            About

            This PowerShell script uses the systeminfo command to produce an HTML report (sample) containing system information. It also calculates the system's uptime. By default, only a subset of attributes from systeminfo are included in the report. To include more, simply modify the following line:

            $attrs = 'System Model:', 'System Manufacturer:', 'OS Name:', 'OS Version:', 'System Boot Time:', 'Total Physical Memory:', 'Available Physical Memory:'
            

            Usage

            In the example below, the script generates a file called report.html. If no output filename is specified, the script generates output.html.

            pwsh ./sysinfoweb.ps1 report.html
            

            Download

            SysInfoWeb.zip, 1.7K

                Article Tags

                Upgrading TeX Live 2024 to 2025

                By William Jeffrey Rankin, Sat Mar 22 2025

                I recently upgraded my TeX Live installation from 2024 to 2025. My method differs slightly from the upgrade instructions on the TeX Live web site, but I've had no issues doing it this way the past few years. Rather than copying the installation to a new directory, I simply move it (I have limited space on my Linux VM and the TeX Live install is nearly 12 gigabytes). To start:

                cd /usr/local/texlive
                sudo mv 2024 2025
                

                Next, modify paths to reflect the location of TeX Live to /usr/local/2025. For me, this means modifying my .bashrc and using visudo to update the path for sudoers.

                Now, download the update-tlmgr-latest.sh script provided on the upgrade instructions page, make it executable, and run it.

                Finally, upgrade as usual using sudo tlmgr update --list and sudo tlmgr update --all. That's it, you're done!

                    Older Articles