Scientific Computing

LaTeX syntax highlight with Minted

LaTeX code highlighting is possible using the “minted” package, which uses Pygments as a backend. To install minted:

tlmgr install minted

python -m pip install pygments

If using a GUI, the “–shell-escape” option may need to be added. In TeXmaker / TeXstudio, under “Options → Configure → Commands” add --shell-escape right after the compiler executable.

Install Tikz with TeXLive

When using TeXLive, the “tlmgr” program allows installing many LaTeX-related packages. For example, to enable Tikz diagrams via \usepackage{tikz}, install the “pgf” package:

tlmgr install pgf

Packages can also be added to TeXLive by the GUI TeX Live Manager. Under Package List select Status: All.

LaTeX bibliography clickable URLs

Generally LaTeX bibliographies can use clickable URLs if the LaTeX document specifies:

\usepackage{hyperref}

and for software, data, etc. entries that don’t have a specific type in the bibliography style:

@misc{myref1,
author={lorem ipsum},
note={\url{https://github.invalid/user/repo}}
}

Note that HTML percent “%” codes do not work. The HTML percent must be translated to their ASCII character. For example, %3A is “:” colon.

Windows exception -1073741819 0xC0000005

On Windows computers, after upgrading software or having left the computer on for days since last reboot (closing lid and reopening included), a memory Access Violation may occur:

  • exit code “-1073741819”
  • hex code 0x0005
  • Exception Code: 0xC0000005

The simplest and most common fix is to simply reboot the Windows computer.

We see these errors also during software development when building or configuring the build system such as CMake. Looking at the build directory file CMakeConfigureLog.yaml can provide more insights into the issue.

Quality USB charging adapters

The world is full of inexpensive USB charging adapters. Since the adapters connect to AC mains power, a very large amount of energy is available that can result in damage to the device or even the home / office the charger is in under catastrophic failure. Since nearly every person in the world needs multiple USB charge adapters, the manufacturers compete aggressively on size and price. This leads the OEMs to be tempted to cut back on safety and interfere-reducing components.

Ethical and responsible manufacturers find a way to keep the quality and safety circuitry intact, and may even go beyond the chip manufacturer and safety regulator requirements. These extra measures help protect the charger brand image. A distinct retailer known for quality USB charger adapters is IKEA. It’s speculated that since they’re putting their own brand on the charger, IKEA is perhaps taking notable care to ensure the chargers don’t damage devices or the surroundings.

Run PowerShell command with environment variable

Unix-like shells typically have a syntax that allows running a command with one or more environment variables having values that don’t persist after the command. For example, in Unix-like shells:

CC=clang CXX=clang++ make

Runs the program “make” with environment variables CC and CXX temporarily set. Subsequent commands use the original value, if any, of CC and CXX.

In PowerShell this syntax doesn’t directly exist, but can be effected like:

pwsh -c { $env:CC="clang"; $env:CXX="clang++"; make }

Another example:

PowerShell:

pwsh -c { $env:hi="hello"; python -c "import os; print(os.getenv('hi'))" }

Unix-like shell:

hi="hello" python -c "import os; print(os.getenv('hi'))"

GitHub Actions YaML string comparison

YaML is used by GitHub Actions workflow expressions. The “if” conditional logic for a task uses comparison operators that also work to compare strings, especially useful for version numbers.

jobs:

  core:

    strategy:
      matrix:
        release: [R2022a, R2023b]

    steps:

    - name: Run
      if: ${{ matrix.release >= 'R2022b' || matrix.release == 'latest-including-prerelease' }}
      ...

Disable Windows reporting modal

On Windows, program faults can cause an modal window to appear regarding reporting the issue to Microsoft. This window stops automated scripts from further progress. This is a problem for long-running programs or scripts that call other programs, perhaps on a Task Schedule.

modal Windows popup blocks programs restart

Disable Windows Reporting modal windows on Windows Pro and non-Pro by simply opening “services.msc” and disable “Windows Error Reporting Service”.

Windows Pro only

Alternatively, for Windows Pro:

Press +r and type

gpedit.msc

Go to Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows Error Reporting and configure as desired.

Group Edit dialog

Reference

Gfortran 12 bind(C) spurious warning fixed

This code triggered a spurious warning in GFortran 12:

program demo
use, intrinsic :: iso_c_binding, only : c_int
implicit none

interface
subroutine fun(f_p) bind(c)
import c_int
integer(c_int), pointer, intent(out) :: f_p(:)
end subroutine
end interface

integer(c_int), pointer :: f(:)

nullify(f)
call fun(f)

end program

This bug was fixed in GCC 13.1.

Flatpak open shell

Flatpak is a popular means to distribute software on Linux that installs and runs in a sandbox for each application. This is particularly useful when an application needs a newer GLIBC / GLIBCXX than the system has, which is often the case on RHEL and HPC systems.

It can be convenient to open a sandboxed shell in a Flatpak app’s sandbox. For example, to open a shell in the GNU Octave Flatpak sandbox:

flatpak run --command=sh org.octave.Octave

This can be useful to build further applications with CMake using a Flatpak program.