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 / hero.js
Created October 31, 2024 15:43
A graphical implementation of Hero's algorithm for derivation of square roots. https://danq.me/2024/10/31/hero-of-alexandria/
/**
* A graphical implementation of Hero's algorithm for derivation of square roots.
* Assumes existence of a <div id="p246620-hero"></div>
*
* Author: Dan Q <https://danq.me/>
* Explanation: https://danq.me/2024/10/31/hero-of-alexandria/
* License: Public Domain / CC0 / The Unlicense (your choice)
*/
(function(){
@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==