Skip to content

Instantly share code, notes, and snippets.


Tom Anderson tomwhoiscontrary

View GitHub Profile
tomwhoiscontrary / 1. fsck the boot partition
Last active Aug 13, 2020
Fixing MacBook Fedora boot partition again
View 1. fsck the boot partition
[liveuser@localhost-live ~]$ sudo fsck /dev/sda1
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
fsck from util-linux 2.35.1
tomwhoiscontrary /
Created May 5, 2020
A minimal but i believe correct implementation of Python's tzinfo for constant offsets - there is absolutely no excuse for this not being in the standard library!
class constant_tzinfo(datetime.tzinfo):
def __init__(self, offset_mins): self.offset_mins = offset_mins
def utcoffset(self, dt): return datetime.timedelta(minutes=self.offset_mins)
def dst(self, dt): return None
def tzname(self, dt): return '%+03d:%02d' % (int(self.offset_mins / 60.0), abs(self.offset_mins) % 60)
tomwhoiscontrary /
Created Feb 18, 2020
My super sweet Python run-module-in-a-venv script
#! /bin/bash -eu
shopt -s failglob
while getopts "f" flag
case $flag in
f) force=y ;;
tomwhoiscontrary / console.txt
Created Feb 18, 2020
The incredible self-destructing pip
View console.txt
$ python3 --version
Python 3.4.5
$ python3 -m venv myenv
$ cd myenv
$ bin/pip install requests
Collecting requests
Using cached
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
Using cached
Collecting idna<2.9,>=2.5 (from requests)
tomwhoiscontrary /
Created Nov 29, 2019
Program to help work out time correspondence between timezones
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.List;
public class TimeTabulator {
tomwhoiscontrary /
Created Oct 30, 2019
Comment on "Propose implicit named arguments for formatting macros" #2795

comment on which i think is actually completely wrong, so cancelling

Do i understand correctly that this would be a special case in the language, understood by the compiler itself? That this isn't a change to the definition of the format_args! macro?

Would this be specific to format_args!, or could syntax like this be used by other, user-written, macros, which don't build on format_args!?

I understand that format_args! is currently special, implemented as a compiler built-in, rather than as a real macro. However, i've always seen this as an unfortunate wart, something that had to be done because we needed good print statements, and the macro system wasn't strong enough to implement them yet. It would be nice to remove that wart one day. Even while it's in place, it's useful to be able to gloss over it, and describe format_args! as just another macro, not doing anything any other macro couldn't do.

If i've understood correctly, then adding this featur

tomwhoiscontrary /
Created Oct 1, 2019
Failing to price a seasoned SONIA OIS with QuantLib
#! /bin/bash -eu
cd "$(dirname "$0")"
$GCC_HOME/bin/g++ -std=c++17 -Wall -g -I $QL_PATH/include -L $QL_PATH ${GCC_OPTS:-} sonia_demo.cpp -lQuantLib -o sonia_demo
tomwhoiscontrary /
Last active Sep 25, 2019
ErrorCollector for JUnit 5
import org.hamcrest.Matcher;
import org.hamcrest.MatcherAssert;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.opentest4j.MultipleFailuresError;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
tomwhoiscontrary /
Created Jul 18, 2019
Breaking IntelliJ stream trace
import org.junit.Test;
import java.util.concurrent.atomic.AtomicInteger;
public class StreamTraceTest {
public void test() {
AtomicInteger mapCount = new AtomicInteger(0);
View Normal.codestyle.json
"schemeName": "Normal",
"version": "1.0",
"codeStyle": {
"all": {
"formatter_off_tag": "@formatter:off",
"formatter_on_tag": "@formatter:on",
"formatter_tags_accept_regexp": false,
"formatter_tags_enabled": false,
"max_line_length": 120,
You can’t perform that action at this time.