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 / bbc-news-rss-filter-sport-out.rb
Last active April 28, 2024 17:48
Improve the BBC News RSS feed by (a) filtering out sport, iplayer links, and BBC sounds links; and (b) stripping the anchor (#0, #1, #2 etc.) off <guid>s so "republished to front page" stories don't re-appear in your feed reader
#!/usr/bin/env ruby
require 'bundler/inline'
# # Sample crontab:
# # Every twenty minutes, run the script and log the results
# */20 * * * * ~/bbc-news-rss-filter-sport-out.rb > ~/bbc-news-rss-filter-sport-out.log 2>>&1
# Dependencies:
# * open-uri - load remote URL content easily
# * nokogiri - parse/filter XML
@Dan-Q
Dan-Q / consolepic.rb
Created December 12, 2018 15:39
Convert a (small!) PNG image into JS/CSS that 'draws' the image in a Firefox/Chrome debug console.
#!/usr/bin/env ruby
# Bundler/Gemfile (inline mode)
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'chunky_png'
end
# Check for PNG file passed at command line or error out
@Dan-Q
Dan-Q / google-authenticator.rb
Last active March 8, 2019 16:09
Command-line Google Authenticator (TOTP)
#!/usr/bin/env ruby
# frozen_string_literal: true
# encoding: utf-8
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rotp'
gem 'thor'
end
// Basic Reddit Content Exporter
// Author: Dan Q <https://danq.me/>
// License: The Unlicense <https://unlicense.org/> / Public Domain
// 1. Go to www.reddit.com and log in (logging in means that we don't have to worry about a modhash)
// 2. Edit this script to include YOUR username and the content you want to download
// 3. Paste this script into your browser console
(()=>{
const username = 'avapoet'; // <-- your username goes here (be sure to be logged in as it, too!)
const content = 'submitted'; // <-- valid options: overview (everything), submitted (posts), comments,
@Dan-Q
Dan-Q / ev-ssl-ca-experiment.sh
Created September 4, 2018 21:39
Experiment to use OpenSSL to establish an EV-capable CA and issue illigitimate certificates which will be accepted and displayed as full valid EV certificates by Microsoft Internet Explorer and Edge on appropriately-configured Windows computers.
#!/bin/bash
# The following steps, which were tested on Ubuntu 18.04 LTS and on the Ubuntu-powered Linux for Windows Subsystem on Windows,
# will:
#
# * Compile a recent version of OpenSSL (you can skip this step and use your package maintainer's version if you prefer, but you
# might have to tweak a few bits)
# * Create a separate set of configuration files suitable for configuring a basic CA capable of signing EV certificates
# * Create such a CA (hackerca.local / HackerCA EV Root CA)
# * Create a certificate request for a site, hackersite.local, belonging to company "Barclays PLC [GB]"
@Dan-Q
Dan-Q / geohash-pcwater.js
Last active August 22, 2018 20:20
Perform pixel-analysis on OpenStreetMap tiles to estimate water coverage of a graticule. More info: https://danq.me/2018/08/21/graticule-water-coverage-calculator/
/*
* More details can be found at:
* https://danq.me/2018/08/21/graticule-water-coverage-calculator/
*
* Given a graticule (e.g. 51 -1), returns the percentage water cover
* of that graticule based on pixel colour sampling of OpenStreetMap
* tile data. Change the zoomLevel to sample with more (higher) or less
* (lower) granularity: this also affects the run duration. Higher
* granularity improves accuracy both by working with a greater amount
* of data AND by minimising the impact that artefacts (e.g. text,
@Dan-Q
Dan-Q / README.txt
Created May 4, 2018 07:33
GC591VV "You Can't Do It Alone!" geocache source code
This is the source code the the Arduinos powering my GC591VV "You Can't Do It Alone!" cache:
further details can be found at https://danq.me/2014/08/13/gc591vv/
synchronise_clocks.ino - this program sets the clock on the device to the date and time of
compilation: run it at the same time on both boxes to synchronise them
it_takes_two_cache.ino - this is the program that runs on both boxes when they're to be
deployed to the field; some constants need setting:
* SALT - needs to be set to a random number (the same for both boxes); this helps to prevent
@Dan-Q
Dan-Q / jack-fm-logger.rb
Last active September 25, 2017 15:03
Polls the Jack FM website every 60 seconds to see what song they're playing, and records it to an SQLite database. More details at https://danq.me/2017/03/13/jack-fm/.
#!/usr/local/rvm/wrappers/ruby-2.3.0@jack-fm-logger/ruby
require 'open-uri'
require 'sqlite3'
require 'nokogiri'
# Load DB, create schema if absent
db = SQLite3::Database.new 'log.db'
db.execute "CREATE TABLE IF NOT EXISTS plays (time INTEGER, artist TEXT, song TEXT);"
# Utility functions

Keybase proof

I hereby claim:

  • I am Dan-Q on github.
  • I am dq (https://keybase.io/dq) on keybase.
  • I have a public key whose fingerprint is B00A 55DA C3F5 9B51 7CA3 F64F 6342 1D24 3218 A6AC

To claim this, I am signing this object:

@Dan-Q
Dan-Q / YouTube-Video-Wall.html
Created November 4, 2016 12:24
Simple one-file tool for the Bodleian Libraries' Heritage Window (5x3 HD video wall). Shows thumbnails for a YouTube playlist, then picks one video and plays it, then repeats.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>YouTube Video Wall</title>
<style type="text/css">
body {
margin: 0;
background: black;
color: white;