Skip to content

Instantly share code, notes, and snippets.

View Dan-Q's full-sized avatar
🦆

Dan Q Dan-Q

🦆
View GitHub Profile
@Dan-Q
Dan-Q / q23-podcasting-extensions.php
Created August 22, 2024 08:58
Subset of the code included in DanQ.me's theme, providing podcasting functionality into an RSS feed. See https://danq.me/dan-q-the-podcast for further explanation.
<?php
define('PODCAST_TAG', 'dancast');
define('PODCAST_DEFAULT_IMAGE', 'https://danq.me/wp-content/uploads/2024/05/podcast-art.jpg');
define('PODCAST_SUMMARY', "A podcast nobody asked for about things only Dan cares about. A spin-off of the blog of Dan Q, who's been making random stuff on the Internet since the 1990s.");
define('PODCAST_URL', 'https://danq.me/tag/dancast/');
define('PODCAST_TITLE', 'Dan Q - The Podcast');
/**
* If the 'podcast_link' postmeta is filled, advertise it appropriately in RSS:
*/
@Dan-Q
Dan-Q / wccom-production-highlight.user.js
Created July 22, 2024 16:47
Highlight when you're on WCCOM Production so you don't break it by accident. I'm talking to you, Future Dan!
// ==UserScript==
// @name WCCOM Production Highlight
// @namespace prodhighlight.wccom.danq.me
// @match https://woocommerce.com/*
// @grant GM_addStyle
// @version 1.0
// @author Dan Q
// @description Don't break production WCCOM, Dan! Remind yourself when you're on it with a highlight.
// ==/UserScript==
@Dan-Q
Dan-Q / wccom-showcase-checker.rb
Last active June 10, 2024 12:40
Extract all sites listed on https://woocommerce.com/showcase/ and check each, reporting to CSV if it (apparently) isn't running WooCommerce
#!/usr/bin/env ruby
# rubocop:disable Security/Open
#
# Version History
# 1.0.0 - Initial version
# Constants
SHOWCASE_ROOT = 'https://woocommerce.com/showcase/'
SHOWCASE_LIST_PAGE = 'https://woocommerce.com/showcase/page/%d/'
PROGRESSBAR_FORMAT = '%t | %B | %e'
@Dan-Q
Dan-Q / geocaching-extent.php
Created April 3, 2024 15:44
Draws the smallest possible convex polygon that surrounds a set of successful geocaching finds/geohashpoint expeditions. See: https://danq.me/geo-limits
<?php
/**
* Given an array of points, returns the convex hull over those points.
*/
function convex_hull_over( array $points ): array {
$cross = function($o, $a, $b) {
return ($a[0] - $o[0]) * ($b[1] - $o[1]) - ($a[1] - $o[1]) * ($b[0] - $o[0]);
};
$pointCount = count($points);
@Dan-Q
Dan-Q / list-detected-woocom-components.user.js
Created April 2, 2024 21:04
Userscript to report WooCom components detected on each visited page, by logging to console.log
// ==UserScript==
// @name WooCom Component Enumerator
// @namespace woo.com.danq.me
// @match https://woo.com/*
// @match https://woocommerce.test/*
// @grant none
// @version 1.0
// @author -
// @description Lists detected WooCom PHP/React components in the console.log as-you-browse.
// ==/UserScript==
SITE = 'https://danq.me/';
NEW_SIZE = 234;
me = document.querySelector(`a[href="${SITE}"]`).closest('li');
before = me.querySelector('.before');
after = me.querySelector('.after');
i = parseInt(after.innerText);
ticker = function(){
i += (i > NEW_SIZE ? -1 : 1);
before.style.setProperty('--data-size', i);
@Dan-Q
Dan-Q / footnotes-for-wordpress.php
Created February 26, 2024 10:01
Include from your theme file. Use [footnote]This is the content of my footnote.[/footnote] to add a footnote.
<?php
/**
* Footnotes
*/
function footnote($atts, $content = '') {
global $footnote_number, $footnote_contents;
$footnote_number ??= 0;
$footnote_contents ??= [];
$footnote_number++;
@Dan-Q
Dan-Q / setup-foundry.sh
Last active September 29, 2023 13:28
Configuration script for a basic setup of FoundryVTT on Debian 12. See https://danq.me/easy-foundryvtt for a full explanation.
# Foundry + Nginx install script for Debian 12
# --------------------------------------------
# Perequisites:
# - unzip - used to decompress Foundry once downloaded
# - nodejs - required to run Foundry
# - nvm - used to install pm2
# - ufw - firewall: used to ensure that connections can only be made to Foundry via Nginx, among other benefits
# - nginx - provides HTTPS frontend to Foundry
# - certbot - gets free SSL certificate, used by Nginx
@Dan-Q
Dan-Q / download-geocache-logs.user.js
Created August 23, 2023 14:59
Userscript to download all of the logs on a Geocaching.com cache page as JSON
// ==UserScript==
// @name Download JSON cachelogs
// @namespace dllogs.geocaching.danq.me
// @match https://www.geocaching.com/geocache/*
// @grant GM_registerMenuCommand
// @version 1.0
// @author Dan Q
// @description Download all logs against a particular Geocaching.com geocache as a JSON file
// ==/UserScript==
@Dan-Q
Dan-Q / WEREWOLV.BAS
Created July 17, 2023 14:43
Source code for the 1985 Amstrad CPC version of Tim Hartnell's Werewolves and Wanderer, as adapted for publication in The Amazing Amstrad Omnibus by Martin Fairbanks.
10 REM WEREWOLVES AND WANDERER
20 GOSUB 2600:REM INTIALISE
30 GOSUB 160
40 IF RO<>11 THEN 30
50 PEN 1:SOUND 5,100:PRINT:PRINT "YOU'VE DONE IT!!!":GOSUB 3520:SOUND 5,80:PRINT "THAT WAS THE EXIT FROM THE CASTLE!":SOUND 5,200
60 GOSUB 3520
70 PRINT:PRINT "YOU HAVE SUCCEEDED, ";N$;"!":SOUND 5,100
80 PRINT:PRINT "YOU MANAGED TO GET OUT OF THE CASTLE"
90 GOSUB 3520
100 PRINT:PRINT "WELL DONE!"