A minimal compose
implementation.
Given a list of functions, apply them squentially to an argument. This is equivalent to:
funcs = [h, ..., g] compose(x, funcs) == g(...(h(x)))
I bought Into the Breach on Galaxy of Gaming for linux on release. In July 2022, Subset games released Into the Breach Advanced Edition, [(1)][1] a free expansion of the original. This article details how I upgraded and moved my save game files across to the latest version of the game.
Game save data is stored in files with the names in the foramt: profile_{Name}
. [(2)][2]
The first version I installed was GOG v1.0.10 (2-28-2018)
. This version was run via wine [(3)][3], and installed to ~/.wine/dosdevices/c:/GOG Games/Into the Breach/
. The save game files (eg. profile_Alpha
) were saved in the top level of this directory.
I installed the latest version of Into the Breach from GOG as of Feb 2023: v. 1.2.86 (10-10-2022)
. The installer prompted for an install location, with a default of ~/GOG Games/Into the Breach
. I chose the default location and let the intaller create a desktop file etc. On install, it was clearly quite different to the old version
"""An example of table reflection with SQLAlchemy. | |
Test with Python 3.10 & SQLAlchemy 2.0. | |
See: https://stackoverflow.com/a/75389730/4244912 | |
""" | |
from sqlalchemy import Table, create_engine, text | |
from sqlalchemy.orm import DeclarativeBase, Session | |
# Create a SQLAlchemy engine connected to an in-memory SQLite3 DB: |
""" | |
Utilities for weighted means on DataFrames. | |
""" | |
from functools import partial | |
from typing import Callable | |
import pandas as pd | |
def weighted_mean(frame: pd.DataFrame, value_col: str, weight_col: str) -> float: |
""" | |
""" | |
from argparse import ArgumentParser | |
from artifacts_keyring import CredentialProvider # type: ignore | |
def get_artifact_token(organization: str, feed: str) -> str: | |
"""Get credentials for an azure artifacts feed.""" | |
provider = CredentialProvider() |
#!/usr/bin/env python3 | |
"""Utility to produce the hash of a collection of file and directory paths. | |
Usage:: | |
./hash_paths.py --help | |
""" | |
import argparse | |
import hashlib | |
import io |
#!/bin/bash | |
function log_error() { | |
msg=$1 | |
echo $msg >&2 | |
} | |
function bump() { | |
target_version=$1 |
Garmin watches can broadcast heartrate over ant+ eg. forerunner 235
Wahoo units can receive heartrate data from ant+. See.
See also: