Skip to content

Instantly share code, notes, and snippets.

@drakedevel
drakedevel / extract_chat.py
Created April 16, 2024 16:50
Extract prompts/responses from ChatGPT shared conversation pages
import json
import sys
from bs4 import BeautifulSoup
with open(sys.argv[1]) as in_f:
soup = BeautifulSoup(in_f.read(), 'html.parser')
data = json.loads(soup.find('script', {'id': '__NEXT_DATA__'}).text)
for entry in data['props']['pageProps']['serverResponse']['data']['linear_conversation']:
if msg := entry.get('message'):
@drakedevel
drakedevel / sd_reader_bug.c
Last active August 1, 2023 07:58
Tool to demonstrate a bug in the SY-T18 MicroSD card reader.
/*
* Author: Andrew Drake <adrake@adrake.org>
* Please feel free to email me or comment on this Gist if you have any questions.
*
* On the SY-T18 MicroSD reader, there is a bug when the following reads occur
* back-to-back:
*
* 1. 129 or more sectors, anywhere
* 2. 1 or more sectors, exactly 128 sectors after the end of the previous read
*
@drakedevel
drakedevel / github-actions-report.py
Created July 6, 2020 18:00
Generates a per-workflow report of billable GitHub actions usage in the last few days for an organization
from collections import Counter
from datetime import datetime, timedelta
from github import Github
API_KEY = '...'
CUTOFF = datetime.now() - timedelta(days=5)
ORGANIZATION = '...'
def analyze_repo(repo):
@drakedevel
drakedevel / signal-desktop-rpm.patch
Created June 27, 2020 05:25
Build a Fedora-compatible RPM for Signal Desktop
diff --git a/package.json b/package.json
index 0c19eda2..d2f8d615 100644
--- a/package.json
+++ b/package.json
@@ -314,7 +314,7 @@
"node_modules/zkgroup/libzkgroup.*"
],
"target": [
- "deb"
+ "rpm"
@drakedevel
drakedevel / gnupg-centos-vs-amazon.diff
Created July 25, 2019 18:55
Diff between gnupg2-2.0.22-5.el7_5.src.rpm and gnupg2-2.0.22-5.amzn2.0.3.src.rpm
Only in amzn2/rpmbuild/SOURCES: gnupg-2.0-Fix-CVE-2014-4617.patch
diff -ru centos/rpmbuild/SPECS/gnupg2.spec amzn2/rpmbuild/SPECS/gnupg2.spec
--- centos/rpmbuild/SPECS/gnupg2.spec 2018-07-13 05:57:37.000000000 -0700
+++ amzn2/rpmbuild/SPECS/gnupg2.spec 2019-04-29 11:20:48.000000000 -0700
@@ -1,7 +1,10 @@
+%define _trivial .0
+%define _buildid .3
+
Summary: Utility for secure communication and data storage
Name: gnupg2
@drakedevel
drakedevel / fix-paper-slides.user.js
Last active May 12, 2018 01:24
Userscript to adjust the "slide" transition time of Dropbox Paper presentations
// ==UserScript==
// @name Fix Paper slides
// @namespace https://hax.so/
// @version 0.1
// @description Adjusts the "slide" transition time of Dropbox Paper presentations
// @author Andrew Drake <adrake@adrake.org>
// @match https://paper.dropbox.com/doc/present/*
// @run-at document-body
// @grant none
// ==/UserScript==
@drakedevel
drakedevel / de-inspire-paper.user.js
Last active April 22, 2018 05:05
Userscript to remove placeholder text in Dropbox Paper
// ==UserScript==
// @name De-inspire Paper
// @namespace https://hax.so/
// @version 0.2
// @description Remove placeholder text in Dropbox Paper
// @author Andrew Drake <adrake@adrake.org>
// @match https://paper.dropbox.com/doc/*
// @grant GM_addStyle
// ==/UserScript==
@drakedevel
drakedevel / de-inspire-paper.js
Created April 13, 2018 18:18
Userscript to remove placeholder text in Dropbox Paper
// ==UserScript==
// @name De-inspire Paper
// @namespace https://hax.so/
// @version 0.1
// @description Remove placeholder text in Dropbox Paper
// @author Andrew Drake <adrake@adrake.org>
// @match https://paper.dropbox.com/doc/*
// @grant GM_addStyle
// ==/UserScript==
@drakedevel
drakedevel / keybase-proof.txt
Created August 24, 2016 22:35
keybase.io proof
### Keybase proof
I hereby claim:
* I am drakedevel on github.
* I am drakedevel (https://keybase.io/drakedevel) on keybase.
* I have a public key ASCYsg_wR56dMt27Dik62cPLzFOBz9_J72i8h_EXnUFbCQo
To claim this, I am signing this object:
@drakedevel
drakedevel / bad.py
Last active November 28, 2015 07:34
pycapnp bug
import capnp # noqa
from bug_capnp import Msg
with open('test.bin', 'rb') as f:
for m in Msg.read_multiple(f):
pass