Skip to content

Instantly share code, notes, and snippets.

View jnovack's full-sized avatar
😠
Changing tabs to spaces...

Justin J. Novack jnovack

😠
Changing tabs to spaces...
View GitHub Profile
@jnovack
jnovack / macosx-autossh.md
Created July 26, 2026 16:06
An always-on reverse SSH tunnel from a Mac out to a relay host you control, so the Mac stays reachable even when its own network moves, its firewall changes, or DHCP hands it somewhere you can't find.

macOS autossh rescue tunnel

Note

This is tested and working on OSX 26.

An always-on reverse SSH tunnel from a Mac out to a relay host you control, so the Mac stays reachable even when its own network moves, its firewall changes, or DHCP hands it somewhere you can't find. The relay exposes a loopback-only port; you reach the Mac by logging into the relay with your own normal account and jumping through.

/architecture-audit-init

Initialize architecture refactor scaffolding for the current project through a short guided conversation. The goal is to understand the project well enough to generate meaningful audit questions — not just a generic template.


Before talking to the user

@jnovack
jnovack / README.md
Created April 30, 2026 15:53
Ubuntu 26.04 LVM-enabled Proxmox VM Template

Building Proxmox Templates with Ansible

Building a Proxmox VM template by hand is one of those tasks that sounds simple — boot a VM, install the OS, configure it, clean it up, convert it — but hides a surprising number of fiddly steps. Miss one and your clones inherit stale SSH host keys, the same machine ID, or a network config that fights with Proxmox's cloud-init drive. Do it a second time and you remember you forgot to write down exactly what you did the first time.

build-template.yml automates the entire sequence, end-to-end, with a single command:

make template HOST=pve-01 VMID=2319
@-moz-document domain("moxfield.com") {
.fa-circle-p {
color: #ff4949 !important
}
.deckview-image {
max-height: 420px !important;
}
@media (min-width: 1600px) {
! 2026-05-29 https://edhrec.com
edhrec.com#?#.lazyload-wrapper:has(> a[href^="https://partner.tcgplayer.com/"][href*="utm_medium=leaderboard"]):upward([class^="Leaderboard_container__"])
! 2024-02-09 https://www.tcgplayer.com
www.tcgplayer.com##.product-details__syndication-container
www.tcgplayer.com##div.delay-wrapper.promo-banner:nth-of-type(1)
www.tcgplayer.com##.martech-promos-image
www.tcgplayer.com##div.delay-wrapper.promo-banner:nth-of-type(1)
www.tcgplayer.com##.search-layout__pagination > .delay-wrapper.promo-banner
@jnovack
jnovack / README.md
Last active May 27, 2025 19:25
joxit/docker-registry-ui Working Example (Traefik v3, Let's Encrypt, Public GET, Auth POST/DELETE, Auth Dashboard, Single URL)

Single URL Docker Registry UI for Docker Swarm

Swarm-compliant UI with public registry PULLs and authenticated registry PUSHes with Traefik v3.

Features

  • Unauthenticated PULLs
  • Authenticated PUSH/DELETEs
  • Single URL (registry and ui on the same domain)
  • Let's Encrypt enabled
#include <Adafruit_NeoPixel.h>
/* halloween.ino
* https://gist.github.com/jnovack/ce208617a2ec53af11d674b20b127c9a/
* 2021 - Justin J. Novack
*
* When the PIN_PIR is rising (from LOW to HIGH, e.g. 0V to 5V), turn on the pixels
* in a random order waiting DELAY_ON between each pixel, then wait DELAY_WAIT before
* starting to turn the pixels off, waiting DELAY_OFF between each pixel.
*
@jnovack
jnovack / install_tmux.sh
Last active February 28, 2026 05:53
tmux installation on Mac OSX Catalina
#!/bin/sh
## setup _________________________________
TMUX_VER=3.3a
LIBEVENT_VER=2.1.12-stable
OPENSSL_VER=1_1_1v
TEMP_COMPILE=~/tmux-temp-compile
COMMON_INSTALL_PREFIX=/opt
SYMLINK=/usr/local/bin/tmux
@jnovack
jnovack / answer.txt
Created August 10, 2020 19:37
setup-alpine answer file
# setup-alpine answer file
# Set hostname to alpine-test
HOSTNAMEOPTS="-n alpine-test"
# Use US layout with US variant
KEYMAPOPTS="us us"
# Contents of /etc/network/interfaces
INTERFACESOPTS="auto lo
@jnovack
jnovack / untitled.js
Created July 23, 2020 15:08
ServiceNow - Decrypt sys_auth_profile_basic Password
var sysid = "INSERT_SYS_ID_HERE";
var Encrypter = new GlideEncrypter();
var gr = new GlideRecord('sys_auth_profile_basic');
gr.addQuery("sys_id", sysid);
gr.query();
while (gr.next()) {
var encrypted = gr.password;
var decrypted = Encrypter.decrypt(encrypted);
gs.addInfoMessage(decrypted);
}