GeistHaus
log in · sign up

https://zackofalltrades.com/index.xml

rss
30 posts
Polling state
Status active
Last polled May 18, 2026 19:56 UTC
Next poll May 19, 2026 18:15 UTC
Poll interval 86400s
ETag W/"69487401-33a5"
Last-Modified Sun, 21 Dec 2025 22:26:09 GMT

Posts

Laziness Optimized Green Bean Casserole

I'm partway through reading the book You Gotta Eat recently, which is a tour-de-force about cooking with minimal effort. In line with these ideas, the following is how I've tweaked the traditional Green Bean Casserole recipe.

This tastes better and is easier to make than the recipes on the back of the mushroom soup or fried onion packaging. It's optimized for mixing all the ingredients together without pre-cooking the green beans, using minimal tools, and having few if any leftover ingredients.

http://zackofalltrades.com/notes/2025/11/laziness-optimized-green-bean-casserole/
Ten Pointless Facts About Me

I heard about this set of self interrogation questions on Manuel Morale's blog, which started on David's, and figured that it looked fun, so why not?

Do you floss your teeth?

Yes, with some regularity (usually every other day).

Teeth have a large level of variability – mine are very closely packed (possibly due to childhood orthodontic apparatus) so when I use conventional floss it frequently breaks. The only floss I've found that works well is Grin Fine Dental Floss, which is made for "tight teeth", and is thankfully inexpensive for a niche product.

http://zackofalltrades.com/notes/2025/10/ten-pointless-facts-about-me/
About

My name is Zack Williams. I currently reside in Tucson, Arizona.

My professional interests are in operations, security, and software delivery. I have personal interests in reading, unusual cuisine, retrocomputing, and the Japanese language.

Most recently, I've worked for:

  • Intel (Cloud Software Architect, Tech Lead, Engineering Manager)
  • Open Networking Foundation (Field Engineering Lead, Infra Team Lead)
  • The University of Arizona, Department of Computer Science (Principal Systems Programmer
  • Artisan Computer (Managing Consultant)
Get in contact

You can email me at zdw at this domain.

http://zackofalltrades.com/about/
Site Updates

I again, as last time didn't go to current dependencies, and it's been another few years.

Going from Hugo ~0.101.x to ~0.151.x only had a single deprecation - in the config file, paginate had to be changed to paginate.pageSize.

I also noticed that the markdown parser has changed (possibly earlier?) and the new Goldmark parser has a typography module that replaces normal quotes with fancy ones. As I've had these be a source of frustration when copying text, I turned this off.

http://zackofalltrades.com/notes/2025/10/site-updates/
Updating Hugo

So life happened and I didn't update this blog in about 6 years, but that's another story for a later time.

In the interim, Hugo changed and matured considerably, which had a few breaking changes that upgrading to a current version of the site. Note that this was a jump from version 0.1.1 to 0.101.0 - 100 revisions is no small gap, so this was to be expected!

Templates

HTML comments are now stripped by default, and have to be escaped with the safeHTML filter.

http://zackofalltrades.com/notes/2022/06/updating-hugo/
bc - the basic calculator

bc is the standard Unix CLI calculator. Here are a few tricks I've come across in using it.

It's frequently quicker to start up than most other calculators which might be separate applications or desktop widgets. bc will also let you pipe a set of equations into it, and print the results. Different equations can be separated with a semicolon.

There's also dc, which is reverse polish notation (RPN), which can be useful if you prefer that entry method (and fewer parenthesis).

http://zackofalltrades.com/notes/2022/05/bc-the-basic-calculator/
Iterating over all network interfaces in Ansible
The problem

Ansible keeps a list of all network interfaces in the ansible_interfaces fact. Sometimes you need to iterate over these, but access the ansible_eth0 or other interface data, but doing so is non-obvious. Here's what I found that works:

- name: debug print all interface ipv4 data
  when: "{{ hostvars[ansible_fqdn]['ansible_'~item]['ipv4'] is defined }}"
  debug:
     msg="{{ hostvars[ansible_fqdn]['ansible_'~item]['ipv4'] | pprint }}"
  with_items:
     - "{{ ansible_interfaces | map('replace', '-','_') | list }}"
Notes
  • You can't access the variables directly in facts, thus the use of hostvars to access the global facts, and ansible_fqdn to specify the current host.

http://zackofalltrades.com/notes/2016/04/iterating-over-all-network-interfaces-in-ansible/
Hugo
http://zackofalltrades.com/links/2014/11/hugo/
The tools I used to build this site
Generator

Hugo, with a list of site creation notes.

Fonts

Computer Modern converted to web fonts, specifically, Computer Sans Modern Bright for body text.

Inconsolata for code/examples.

Style and Layout

(twitter) Bootstrap, which I rebuild with custom fonts.

Sass for compiling and minimizing CSS.

jQuery, to support Bootstrap.

Editor

Vim for text editing.

Version Control

git for storing everything.

Automation

Ansible for configuration and shipping the site to the web server.

http://zackofalltrades.com/notes/2014/05/the-tools-i-used-to-build-this-site/
Hugo from scratch

Hugo is a blogging engine written in go.

I've wanted to try a static blogging engine for a while, because the entire concept appealed to me - generate a bunch of static pages which can be delivered fast from any web server. Also, historically I've used WordPress which was slow, hard to update, and has a somewhat toxic community around it, and my other hammer of Drupal (which I use extensively elsewhere) seemed like overkill for a blog.

http://zackofalltrades.com/notes/2014/05/hugo-from-scratch/