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"}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"}| # 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. |
| (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}"?`); |
| -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 |
| #!/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 |
| #!/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'] |
| 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) |
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.
cp ~/.gnupg/pubring.gpg /path/to/backups/
cp ~/.gnupg/secring.gpg /path/to/backups/
cp ~/.gnupg/trustdb.gpg /path/to/backups/