Skip to content

Instantly share code, notes, and snippets.

View chuckwagoncomputing's full-sized avatar

David Holdeman chuckwagoncomputing

View GitHub Profile
@chuckwagoncomputing
chuckwagoncomputing / EasyAliasPlus.FCMacro
Created October 13, 2026 03:57
FreeCAD EasyAlias extended - CamelCase alias and automatic reference updates
# -*- coding: utf-8 -*-
import FreeCAD
import re
from PySide import QtGui, QtCore
"""
EasyAlias.FCMacro.py
This macro can be used to easily create aliases based on the contents of selected spreadsheet
cells in the previous column. As an example, suppose you wish to have the following:
@chuckwagoncomputing
chuckwagoncomputing / pytray.py
Last active March 12, 2026 03:50
Unison system tray icon wrapper [slop]
#!/usr/bin/env python3
import os
import sys
import threading
from collections import deque
from PyQt6.QtWidgets import QApplication, QSystemTrayIcon, QMenu
from PyQt6.QtGui import QIcon, QAction
from PyQt6.QtCore import QTimer
APP_ID = "pytray"
@chuckwagoncomputing
chuckwagoncomputing / wikimap.sh
Created November 15, 2025 11:11
Wiki to CSV for node map
(echo "from,to"; grep -Po '(?<=]\()((?!http)[^# /\n]+)(?=(#[^ /\n]*)?\))' !(_Sidebar).md 2>/dev/null | sed 's/\.md:/,/g' | sort | uniq) >map.csv
@chuckwagoncomputing
chuckwagoncomputing / w2l.el
Created November 15, 2025 01:12
rusEFI wiki2 to md link
(defun wiki-to-link ()
(interactive)
(when
(re-search-forward
"https:\/\/github.com\/rusefi\/rusefi\/wiki\/\\(\\([^ #\n]*\\)\\(#[^ \n]*\\)?\\)"
nil t)
(let* ((path (match-string 1))
(page (match-string 2))
(pagef (string-replace "-" " " page))
(link (concat "[" pagef "](" path ")")))
@chuckwagoncomputing
chuckwagoncomputing / rusefi.el
Created October 31, 2025 10:35
TunerStudio .msq to rusefi struct-setting C code
(defun rusefi-xml-to-c (struct)
"Convert msq xml to c code which sets values in STRUCT."
(interactive "sStruct:")
(let* ((d (libxml-parse-xml-region (region-beginning) (region-end)))
(n (rusefi-get-param 'name d))
(n
(if n
n
1))
(r (rusefi-get-param 'rows d))
@chuckwagoncomputing
chuckwagoncomputing / import.js
Created January 25, 2025 04:37
Dumb JS function for importing OTP token URIs to Bangle.js
function importToken(uri) {
var url = unescape(uri)
var groups = url.match(/totp\/([^:]+):?(.*)\?secret=([a-zA-Z0-9]+)&algorithm=([A-Z0-9]+)&digits=([0-9]+)&period=([0-9]+)/);
document.querySelector("[name='label']").value = groups[1];
document.querySelector("[name='secret']").value = groups[3];
document.querySelector("[name='account']").value = groups[2];
document.querySelector("[name='issuer']").value = groups[1];
document.querySelector("[name='period']").value = groups[6];
document.querySelector("[name='digits']").value = groups[5];
document.querySelector("[name='algorithm']").value = groups[4];
@chuckwagoncomputing
chuckwagoncomputing / calendar.go
Created November 19, 2021 23:12
Calendar Generator
package main
import (
"os"
"fmt"
"time"
)
func main () {
year := 2022
@chuckwagoncomputing
chuckwagoncomputing / hotplug.sh
Created January 1, 2021 04:27
Graphically un-hotplug drives
#!/usr/bin/env bash
LINE=""
DRIVES=$(ls /sys/block)
for DRIVE in $DRIVES; do
if ls /dev/$DRIVE 2>/dev/null >/dev/null && ls /sys/block/$DRIVE/device/delete 2>/dev/null >/dev/null; then
SIZE=$(blockdev --getsize64 /dev/$DRIVE | awk '{ split( "B KB MB GB TB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } print int($1) v[s] }')
LINE="$LINE p $DRIVE $SIZE"
fi
done
BLOCK=$(zenity --list --title "Choose drive to remove" --radiolist --column="Remove" --column="Device" --column="Size" $LINE)
@chuckwagoncomputing
chuckwagoncomputing / brute.go
Created September 12, 2018 16:57
Brute forcer in go. Tries given dictionary first.
package main
import (
"bufio"
"fmt"
"os"
"time"
)
func main() {
@chuckwagoncomputing
chuckwagoncomputing / vcd.sh
Created February 7, 2018 21:56
Script to convert postgres table to vcard
#!/usr/bin/env bash
I=0
while read t; do
I=$((I+1))
ID=$(echo $t | cut -d "|" -f 1 | xargs)
FIRST=$(echo $t | cut -d "|" -f 2 | xargs)
LAST=$(echo $t | cut -d "|" -f 3 | xargs)
ADDRESS=$(echo $t | cut -d "|" -f 4 | xargs)
CITY=$(echo $t | cut -d "|" -f 5 | xargs)
STATE=$(echo $t | cut -d "|" -f 6 | xargs)