Skip to content

Instantly share code, notes, and snippets.

View mdeguzis's full-sized avatar

Michael T. DeGuzis mdeguzis

View GitHub Profile
@mdeguzis
mdeguzis / termux-supabase.md
Last active April 17, 2026 00:17
Fix: Supabase Edge Function returning UNAUTHORIZED_NO_AUTH_HEADER for Steam OpenID callback

Fix: UNAUTHORIZED_NO_AUTH_HEADER on Supabase Edge Function Steam OpenID Callback

Problem

When using a Supabase Edge Function as the openid.return_to target for Steam OpenID 2.0 authentication, Steam's redirect back to the function fails with:

{"code":"UNAUTHORIZED_NO_AUTH_HEADER","message":"Missing authorization header"}
@mdeguzis
mdeguzis / gist:b98f4ddbbb4aa3d2d8bb4e36b5330be0
Created April 5, 2026 20:10
Decky Loader AI Development Policy — Claude steering notes for decky-proton-pulse
# Decky Loader — AI Development Policy (Claude Steering)
According to the current consensus among the Decky Loader maintainers and community guidelines,
using AI to develop plugins is acceptable but subject to strict scrutiny during the PR process.
## 1. Core Policy: "Supplementary, Not Central"
- **Assistive Use (OK):** Using AI for boilerplate, API calls, database strings — standard modern workflow.
- **Generative Creators (Discouraged):** AI as the effective "author" is a red flag — subtle bugs, security holes, unoptimized code the submitter can't explain.
- **AI Wrappers (Likely Denied):** Plugins that are simply wrappers for ChatGPT/Claude etc. are discouraged. Prefer plugins providing functional utility to the Steam Deck interface.
@mdeguzis
mdeguzis / gist:a3796579224a4b01323df03230649631
Created February 3, 2026 23:42
google-calendar-delete-all-firefox-script
(async () => {
// 1. Ask the user for the keyword
const SEARCH_TERM = prompt("Enter the exact keyword of the events you want to delete:", "Meeting");
if (!SEARCH_TERM) {
console.log("Deletion cancelled: No keyword provided.");
return;
}
const confirmAction = confirm(`Are you sure you want to delete all visible events containing: "${SEARCH_TERM}"?`);
@mdeguzis
mdeguzis / steam_console_params.txt
Created February 12, 2023 18:42 — forked from davispuh/steam_console_params.txt
Steam client parameters, consoles commands and variables
-480p - Run tenfoot in 480p rather than 1080p
-720p - Run tenfoot in 720p rather than 1080p
-accesscode -
-all_languages - show longest loc string from any language
-bigpicture - Start in Steam Big Picture mode
-blefw -
-cafeapplaunch - Launch apps in a cyber cafe context
-candidates - Show libjingle candidates for local connection as they are processed
-ccsyntax - Spew details about the localized strings we load
-cef-disable-breakpad - disables breakpad in crash dumps
@mdeguzis
mdeguzis / get-proton-ge.sh
Created August 22, 2020 17:59
get-proton-ge.sh
#!/bin/bash
# Author Michael DeGuzis
# Description: Simple script to grab the latest Proton GE without a git clone / build.
steam_type=$1
native=1
flatpak=1
steamos=1
if [[ -z ${steam_type} ]]; then
@mdeguzis
mdeguzis / json2yaml.py
Created May 5, 2018 22:34 — forked from noahcoad/json2yaml.py
Python to convert json to yaml
#!/usr/bin/env python3
# convert json to yaml
# http://pyyaml.org/wiki/PyYAMLDocumentation
# python3 json2yaml.py < ~/code/manpow/moneybug/mbuploader/support/offices.json
# gist https://gist.github.com/noahcoad/46909253a5891af3699580b8f17baba8
import yaml, json, sys
sys.stdout.write(yaml.dump(json.load(sys.stdin)))
json_text = r.json()
# get total length of dictionary keys for tracking
for key, value in json_text.iteritems():
item_index = 0
if key == 'FileStatuses':
total_items = len(json_text['FileStatuses']['FileStatus'][:])
for listitems in json_text['FileStatuses']['FileStatus'][:]:
perm_set = []
item_count = len(json_text['FileStatuses']['FileStatus'][:])
octal_perms = json_text['FileStatuses']['FileStatus'][item_index]['permission']
@mdeguzis
mdeguzis / gist:fd2093018a5e49e1bdfd0d50738d58e5
Created February 18, 2018 21:53 — forked from jwebcat/gist:5122366
Properly download from github using wget and curl
wget --no-check-certificate --content-disposition https://github.com/joyent/node/tarball/v0.7.1
# --no-check-cerftificate was necessary for me to have wget not puke about https
curl -LJO https://github.com/joyent/node/tarball/v0.7.1
def initialize_logger(output_dir):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# create console handler and set level to info
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
@mdeguzis
mdeguzis / gpg-import-and-export-instructions.md
Created December 17, 2017 00:08 — forked from chrisroos/gpg-import-and-export-instructions.md
Instructions for exporting/importing (backup/restore) GPG keys

Every so often I have to restore my gpg keys and I'm never sure how best to do it. So, I've spent some time playing around with the various ways to export/import (backup/restore) keys.

Method 1

Backup the public and secret keyrings and trust database

cp ~/.gnupg/pubring.gpg /path/to/backups/
cp ~/.gnupg/secring.gpg /path/to/backups/
cp ~/.gnupg/trustdb.gpg /path/to/backups/

or, instead of backing up trustdb...