December 2019 Updates
A new section on Hugo timeouts added to the Hugo page.
Fixed three issues preventing me from upgrading from Hugo
v0.54.0tov0.60.1, and then upgraded! The two issues were:Hugo was getting stuck while building the site upon upgrade from
v0.56.3tov0.57.0. Hugo would not report any error, but would not finish building the site even after waiting for 30mins. Memory usage would keep increasing until all system resources were consumed. I had a feeling that this may be due to infinite recursion occurring somewhere. I disabled themenushortcode that I wrote, as that used recursion to build the menu structure, and then the Hugo build completed. After looking over themenushortcode code and verifying that the recursion should be terminating properly, on a hunch I tried updating all theindex.mdpages to_index.md, which allowed me to re-enabled the menu shortcode.Hugo would timeout with the following error:
3:42:50 PM: Error: Error building site: "/opt/build/repo/content/electronics/projects/columbus-radio/index.md:1:1": timed out initializing value. This is most likely a circular loop in a shortcodebut only when building on the CICD server (Netlify). I removed this
columbus-radiopage and would fail on another specific page. While these specific pages didn’t use any unique shortcodes that the other pages didn’t, I did notice that these pages contained a large number of image resources.Hugo had a default timeout of 10s per page, and pages with a large number of image resources were taking longer than this to process (the images are scaled and resampled). This was an easy fix, I just increased Hugo’s timeout to 30s in
config.toml:timeout = 30000Images and other HTML elements that used shortcodes disappeared from the website. This occurred between
v0.59.1andv0.60.0. This ended up being caused by Hugo’s switch from using Blackfriday to Goldmark as the default markdown renderer, and along with that the associated increase in the default security settings to now allow inline HTML within markdown. This issue was fixed by adding the following toconfig.toml:[markup.goldmark.renderer] unsafe = true
Updated the Rust page with code examples showing how to use
cargo, the basics of ownership, casting in Rust, and information on IDE support.Added a new page on Map Tile Servers.
Updated the tmux page with a walk-through on how to install tmux from source.
November 2019 Updates
Added information on masked arrays to the Numpy page.
Added Euler Angle support (e.g. RPY) to the 3D rotations calculator.
New introduction to different map projections.
Added a new React page.
October 2019 Updates
Updated the mv (move) page with information on using extended bash glob extensions to provide exclusion patterns.
$ mkdir new_sub_dir # Create a new sub-directory to move all files/directories in PWD into $ mv !(new_sub_dir) new_sub_dir # Move all files/directories in PWD into new_sub_dir, excluding new_sub_dir itself (avoiding the obvious recursion problem)The Introduction To Rotation Matrices page has been updated with tutorials/example on how to combine rotation matrices and how to calculate the rotation matrix to describe the rotation between two reference frames, as well as a section on how to convert RPY (roll-pitch-yaw, or Euler angles) to rotation matrices.
$$ \mathbf{R} = \begin{bmatrix} \hat{u_x} & \hat{v_x} & \hat{w_x} \\ \hat{u_y} & \hat{v_y} & \hat{w_y} \\ \hat{u_z} & \hat{v_z} & \hat{w_z} \end{bmatrix} $$
Added an interactive 3D rotation visualizer to the Quaternion page, which shows you how a right-hand coordinate system XYZ is rotated in 3D space by either a rotation matrix, quaternion, or angle-axis rotation. This tool is also very useful to convert between the three ways of describing a rotation (when you enter a rotation in one notation, the other two get updated automatically).
September 2019 Updates
The du (disk usage) page now has information on the
-xflag which is used count the space used on one filesystem only.New Introduction To Asynchronous Programming In Python with information on asynchronous programming in Python, including the keywords
async/await, event loops, futures, coroutines and more.
- Add a new Introduction To S3 page.
August 2019 Updates
New tutorial on Standard Deviations.
Updated the Qt page with a section on how to allow file names with capital letters in Qt Creator.







