Skip to content

Instantly share code, notes, and snippets.

a watermelon is a sandwich

Noel nilium

a watermelon is a sandwich
View GitHub Profile
nilium /
Last active Apr 10, 2020
Possible bug in jq

Only occurs when multiplying a string with an interpolation containing a suffix (i.e., the "\n"). Doesn't matter what the suffix is, does not seem to result in any difference for how many bytes are taken from the start of the third duplication.

The third entry onward in a string multiplication is missing 16 bytes, which have been replaced with NULs.

If the interpolation is instead a prefix, nothing incorrect happens.

Using concatenation instead of interpolation also works correctly.

In the second case, if using . in the interpolation instead of tojson, corruption of the string content occurs. If multiplied by 6 or more, the corruption seems to be stable, but doesn't appear to have any rhyme or reason to the content of the 16 bytes.

nilium / cleanroom
Created Jan 10, 2020
Script to run a shell or command in a clean, temporary copy of a repository.
View cleanroom
#!/usr/bin/env bash
# cleanroom: run a command or shell in a clean, temporary copy of a repository.
case "$1" in
cat <<'USAGE'
Usage: cleanroom [-h|-help|--help] [CMD...]
Execute a command in a clone of the current repository, made under
a temporary directory.
nilium / consul.diff
Created Aug 13, 2019
Diff of Consul v1.5.3 between versions of the same tag
View consul.diff
v1 is the original v1.5.3 tag, v2 is the changed v1.5.3 tag.
diff -U2 -r v1/consul-1.5.3/vendor/ v2/consul-1.5.3/vendor/
--- v1/consul-1.5.3/vendor/ 2019-07-25 16:41:17.000000000 -0700
+++ v2/consul-1.5.3/vendor/ 2019-07-25 16:41:17.000000000 -0700
@@ -56,5 +56,5 @@
// companion .gitattributes file containing 'export-subst' in this same
// directory. See also
- gitVersion string = "v0.0.0-master+a42ded477c"
+ gitVersion string = "v0.0.0-master+a42ded477"
nilium / nomad-tweak
Created Aug 11, 2019
Bash script and jq module to make it easier to make small adjustments to Nomad jobs
View nomad-tweak
#!/usr/bin/env bash
# Copyright Noel Cower 2019.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# Usage: nomad-tweak <job> [options...] <jq-script>
# Options:
# -A, --apply
nilium / withtemp
Last active Aug 10, 2019
Script to generate an eval-able line to create a temporary file, assign it to a variable, and remove it upon exit.
View withtemp
# Usage: eval "$(withtemp [varname [mktempargs]])
# If varname is given, a tempfile is generated, its path assigned to the
# variable $varname, and deleted upon exit. Otherwise, no varname
# becomes 'tempfile' and no arguments are passed to mktemp. Varname is
# not exported or local, but you may evaluate using either
# $ eval "local $(withtemp ...)"
nilium / twitter.json
Created Jul 23, 2019
Twitter init-data
View twitter.json
"keyboardShortcuts": [
"name": "Actions",
"description": "Shortcuts for common actions.",
"shortcuts": [
"keys": [
nilium / main.go
Last active Jun 14, 2019
Example of parsing environment variables and CLI flags using the flag package
View main.go
package main
import (

Build server notes

Any use of "we" in this document is the authorial we because using "I" sounds weird. This is intended to cover building packages under spiff-packages and not necessarily supporting the entirety of void-packages (due to size, complexity, and not having a good idea of every weird quirk of every package in it).

All jobs are intended to run using parametrized nomad tasks. This is not necessarily a requirement but is how it's planned out for now due to the homelab setup.

When building a package, we first need to request a list of all dependencies that package has and fetch all of them

If any package is not already in either the main or build repo, we need to build it, so we have to submit additional jobs to build those packages.

nilium / git-instat
Last active May 20, 2019
Git script to scan diff --numstat output and sum it.
View git-instat
usage() {
cat >&2 <<-'EOF'
Usage: git-instat [range] [path...] [-path pattern...] [-only pattern...] [-omit pattern...]
Print a stat summary for the given paths in a ref.
If no range is given, the default is 'HEAD^1..HEAD'.
-only and -omit may be passed to filter lines of the numstat, such that
nilium / gomodver
Created Apr 12, 2019
Script to print Go module v0.0.0-DATE-SHA version strings
View gomodver
# Usage: gomodver [REF...]
# Prints a Go modules v0.0.0-DATE-SHA version string for the given Git refs.
# If no REF is given, gomodver defaults to HEAD.
case "$(uname -s | tr A-Z a-z)" in
*bsd|darwin) datearg=r;