Skip to content

Instantly share code, notes, and snippets.

@mawillcockson
mawillcockson / isort_check.py
Created August 29, 2022 01:01
git bisect script for PyCQA/isort#1949
"""
intended to be used with git bisect:
git bisect start "5.10.1" "5.0.0"
git bisect run python ../isort_check.py
"""
import subprocess
import sys
from pathlib import Path
from tempfile import TemporaryDirectory
@mawillcockson
mawillcockson / install.sh
Last active April 13, 2022 15:33
Super-basic wordpress installation
#!/bin/sh
set -eu
HOME=/home/ubuntu
MYSQL_ROOT_USERNAME="${MYSQL_ROOT_USERNAME:-"root"}"
MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-"root_password"}"
WORDPRESS_DATABASE_NAME="${WORDPRESS_DATABASE_NAME:-"wordpress"}"
WORDPRESS_DB_USERNAME="${WORDPRESS_DB_USERNAME:-"wordpress_user"}"
WORDPRESS_DB_PASSWORD="${WORDPRESS_DB_PASSWORD:-"wordpress_password"}"
log() {
@mawillcockson
mawillcockson / ascii_name_coverage.py
Last active March 22, 2022 12:23
ascii name coverage
"""
if only I knew javascript
"""
import itertools
import string
import sys
from typing import List, NamedTuple, Union
ASCII = set(string.ascii_lowercase)
ESCAPE = "\u001b"
@mawillcockson
mawillcockson / falsey.py
Created January 16, 2022 08:50
Whatever it is you're looking for, this is not it
_hash = 0
class Falsey:
def __init__(self, *args, **kwargs): pass
# comparisons
def __lt__(self, other): return False
def __le__(self, other): return False
def __eq__(self, other): return False
def __ne__(self, other): return False
@mawillcockson
mawillcockson / rygel_setup.sh
Last active November 2, 2021 04:40
Rygel installation and configuration
#!/bin/sh
set -eu
# # For testing in LXD, start user systemd daemon
# USERNAME="$(id -nu)"
# USER_ID="$(id -u)"
# sudo loginctl --no-ask-password enable-linger "${USERNAME}"
# sudo systemctl --no-ask-password restart "user@${USER_ID}.service"
#
# This was helpful for troubleshooting:
@mawillcockson
mawillcockson / install_memtest86+.sh
Created October 11, 2021 13:51
Create bootable memtest86+ USB (doesn't work?) From: https://superuser.com/a/1603573
#!/bin/sh
set -eu
leave() {
if [ -n "${TMPDIR:+"set"}" ]; then
sudo umount "${TMPDIR}" || true
rm -rf "${TMPDIR}"
unset -v TMPDIR || true
fi
}
@mawillcockson
mawillcockson / identifier.sh
Last active September 22, 2021 00:58
Do short identifiers make python run faster?
#!/bin/sh
set -eu
A=0
IDENTIFIER="$(python3 -c 'print("a" * 100_000, end="")')"
export IDENTIFIER
echo "IDENTIFIER is ${#IDENTIFIER} characters"
for python_version in python3.6 python3.7 python3.8 python3.9; do
echo "${python_version}"
@mawillcockson
mawillcockson / realpath.sh
Last active September 19, 2021 05:59
rough equivalent of `realpath -eq` in POSIX Shell
# Similar to `realpath -eq`
realpath() {
if [ "$#" -ne 1 ]; then
return 1
elif ! OLD_CD="$(pwd -P)" > /dev/null 2>&1 ; then
# This depends on `pwd -P` working, and if it's not, we can't proceed anyways
return 1
elif [ -z "${1%%/*}" ]; then
# Removing everything after the first / leaves nothing, so the path starts with /, and is absolute
THE_PATH="$1"
@mawillcockson
mawillcockson / parse_results.py
Created August 28, 2021 20:34
Python String Concatenation Timing
import re
from pathlib import Path
from itertools import islice
from csv import DictWriter
from collections import defaultdict
def main():
results_path = Path("~/projects/time_python_string_concatenation_results.txt").expanduser().resolve(strict=True)
parse_path = Path("~/projects/time_python_string_concatenation_parsed_results.txt").expanduser().resolve()
parse_path.touch()
@mawillcockson
mawillcockson / cleanup_typey-type_progress.py
Created July 13, 2021 07:42
Clean up Typey Types progress output
import json
import string
from collections import Counter
from datetime import datetime
from pathlib import Path
from typing import Dict, List
PROGRESS_FILE = (
Path("~/.config/plover/typey-type_progress.json").expanduser().resolve(strict=True)
)