Skip to content

Instantly share code, notes, and snippets.

View ctrlcctrlv's full-sized avatar
🛠️
happy hacking

Fredrick Brennan ctrlcctrlv

🛠️
happy hacking
View GitHub Profile
@ctrlcctrlv
ctrlcctrlv / broken.svg
Last active September 23, 2022 15:19
`svgo` cleanupIDs bug example files
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
f = fontforge.activeFont()
import unicodedata
for g in f.glyphs():
gn = g.glyphname
if gn[0] == gn[0].upper():
f.selection.select(("more", None), g.glyphname)
@ctrlcctrlv
ctrlcctrlv / ffmpeg_length.sh
Created September 9, 2022 21:34
Get frame count for arbitrary file with ffmpeg / bash only
#!/usr/bin/env bash
INFILE="$1"
ffmpeg_length() {
export $(ffprobe -show_entries 'format=duration:stream=r_frame_rate' -of 'csv=nk=0:p=0' -v quiet "$1" | grep -v '/0$')
test ! -z "$DEBUG" && >&2 echo $duration $r_frame_rate
bc -l << EOF
r=$r_frame_rate
scale=0
(r*$duration)/1
@ctrlcctrlv
ctrlcctrlv / Mon, 22 Aug 2022 20:37:46 GMT.pgsg
Created August 22, 2022 21:20
Richard Spencer admitting BAYC's art evokes Nazi imagery (TLSNotary signed Twitter DM's)
{"certificates":{"0":"MIIGwDCCBaigAwIBAgIQCBOW19rFlToGzYbd/LAXzzANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBEaWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMTEyMTMwMDAwMDBaFw0yMjEyMTIyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRYwFAYDVQQKEw1Ud2l0dGVyLCBJbmMuMRQwEgYDVQQDEwt0d2l0dGVyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJQXN5EhjdM2Z84U58+2CwzUnQJrWQ0vQ/wWtbCxCGoPHYFXpkgdgFH0tI7LzkCc95dE02L2cUpgcZ6Dbc7JuwTkGhqfubxa48gIb8eIfVUbffsLnx/GVZoRAQVbbDxakMatzl5cVq32YeUvdkr5Nsy51LRhspV8DFWjJc20pDVVaNlB8tFyZP8/Sp9Ywtwopf0oWdjaaoeCYMRLpbjPB3EEl0J2tpSMD2u6H8sIWB4yXw5frBivSFL/6HvCxVCVlEVFxekF2uN7TeylXTSt/MJT9dTcStu2hd82fDKRwZNe82MDEQ6Eh8Vv01fI4+HwRZxBEPVOvqxmmo1c9fC6irECAwEAAaOCA30wggN5MB8GA1UdIwQYMBaAFLdrouqoqoSMeeq02g+YssWVdrn0MB0GA1UdDgQWBBTZmIu140dkjNgZA5y5sf6CjHUjuDAnBgNVHREEIDAeggt0d2l0dGVyLmNvbYIPd3d3LnR3aXR0ZXIuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgY8GA1UdHwSBhzCBhDBAoD6gPIY6aHR0cDovL2NybD
@ctrlcctrlv
ctrlcctrlv / screencap_ftgrid.py
Last active August 7, 2022 13:52
Screencap ftgrid for a whole font with Xephyr
import Xlib, Xlib.display as Xdisp, Xlib.protocol as Xproto
from Xlib import X, XK
from PIL import Image
import subprocess, time, os, sys
OUTDIR = "/tmp/ftgrid"
OUTSIZE = "480x480x24"
_, FONT = sys.argv
SIZE = "20"
@ctrlcctrlv
ctrlcctrlv / msg.txt
Created August 3, 2022 05:20
Reply to @ludalaix on Twitter, signed 2022-08-03
If you would buy ETH if you were not poor, that is why you are poor.
(Reply to @ludalaix on Twitter, signed with 0xFffFfffFf8Ca986cDfA7A4189AB6f56621E51362 on 2022-08-03 01:19 EDT, invalid for other purposes)
@ctrlcctrlv
ctrlcctrlv / sqlite_time_views.sql
Last active August 2, 2022 23:22
Current time views (UTC, local) + timezone diff view for SQLite3
DROP VIEW IF EXISTS _dt_time_local;
DROP VIEW IF EXISTS _dt_time_utc;
CREATE VIEW IF NOT EXISTS _dt_time_local AS
SELECT strftime('%s', 'now', 'localtime') Unix,
julianday('now', 'localtime') Julian,
datetime('now', 'localtime') SQL;
CREATE VIEW IF NOT EXISTS _dt_time_utc AS
SELECT strftime('%s', 'now') Unix,
julianday('now') Julian,
datetime('now') SQL;
@ctrlcctrlv
ctrlcctrlv / timecode_tsv_split_video.sh
Created July 18, 2022 11:08
Mass video splitter (ffmpeg ; originally for Twitter threads)
#!/bin/bash
LINECOUNT=$(( $(wc -l timecodes.tsv | awk '{print $1}') - 1))
read -r -d '' COLUMN_HANDLER << EOF
(awk '{print \$VAR}' | awk 'BEGIN {FS=":"} {print \$2*60 + \$3}') < <(tail -n $LINECOUNT < timecodes.tsv)
EOF
TEMP=`mktemp --suffix=.tsv`
f = document.querySelector('[id="psychometrics:raads-r"]')
values = {3: "TRUE_NOW_AND_WHEN_YOUNG", 2: "TRUE_ONLY_NOW", 1: "TRUE_ONLY_LT_16", 0: "NEVER_TRUE"}
prompts = Array.prototype.slice.call(document.querySelectorAll(".psychometrics-item-prompt"));
prompts = prompts.slice(- 80)
questions = new Array(); prompts.forEach(function(i){questions.push(i.innerText)})
my_answers = new Object(); for (var i = 0; i < f.length; i++) { if (i === 0) { continue }; var q = Math.floor(i / 4) + 1; if (f[i].checked) { my_answers[q] = [questions[q-1], values[3-(i%4)]]; }}
console.table(my_answers, null)
@ctrlcctrlv
ctrlcctrlv / response
Created July 10, 2022 02:05
Jim Watkins Truth Social timeline TLSNotary
HTTP/1.1 200 OK
Date: Sun, 10 Jul 2022 01:39:20 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
permissions-policy: interest-cohort=()
x-ratelimit-limit: 300