Skip to content

Instantly share code, notes, and snippets.

View nickovs's full-sized avatar

Nicko van Someren nickovs

  • Absolute Software
  • Boulder, CO, USA
View GitHub Profile
@nickovs
nickovs / make_git_layer.sh
Created March 13, 2023 16:41
A script to build an AWS Lambda overlay layer that installs `git` and all its dependencies.
View make_git_layer.sh
#!/bin/bash
# Build an AWS Lambda zip file containing git and its dependencies
cat <<\EOF > tmp_build.sh
#!/bin/bash
# Comment this out if you want to see all the actions.
quiet=-q
# List of main executables from /usr/bin to copy into layer
@nickovs
nickovs / badger_orion.py
Created May 28, 2022 19:30
A simple script for receiving water meter readings from a Badger ORION water meter using an Software Defined Radio (SDR).
View badger_orion.py
#!/usr/bin/env python3
# A simply tool for receiving water meter readings from a Badger ORION water meter.
# Device radio details can be found at https://fccid.io/GIF2006B
# Requires rtl_433 to be installed. See https://github.com/merbanan/rtl_433
import sys
import json
import subprocess
@nickovs
nickovs / docker-remount.sh
Created April 17, 2022 16:51
A script to mount a host directory into a running Docker container
View docker-remount.sh
#!/bin/bash
# A script for mounting a host directory into a running Docker container
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <container> <host path> <target path>"
exit 1
fi
CONTAINER=$1
@nickovs
nickovs / zbar_lambda_build.sh
Last active August 1, 2022 11:52
A script for building a version of the Zbar library suitable for running in an AWS Lambda instance
View zbar_lambda_build.sh
#!/bin/bash
# Clear out old images
[ -d "lib" ] && rm -r lib
cat <<EOF > tmp_recipe.sh
# This is the actual container-side recipe
yum groupinstall -y "Development Tools"
cd /root
@nickovs
nickovs / curve25519.py
Created June 29, 2021 20:39
A pure Python implementation of Curve25519
View curve25519.py
"""A pure Python implementation of Curve25519
This module supports both a low-level interface through curve25519(base_point, secret)
and curve25519_base(secret) that take 32-byte blocks of data as inputs and a higher
level interface using the X25519PrivateKey and X25519PublicKey classes that are
compatible with the classes in cryptography.hazmat.primitives.asymmetric.x25519 with
the same names.
"""
# By Nicko van Someren, 2021. This code is released into the public domain.
@nickovs
nickovs / stepper.py
Last active August 27, 2023 21:20
A stepper motor driver for MicroPython
View stepper.py
# stepper.py
# A micropython driver for 4-phase, unipolar stepper motors such as
# the 28BYJ-48
# Relesed to the Public Domain by Nicko van Someren, 2020
# The constructor for the Stepper class takes as arguments the four
# pins for driving the motor phases, in phase order, and optionally a
# timer. The pins can be passed as pin numbers or machine.Pin objects
@nickovs
nickovs / Hypercircumsphere.ipynb
Last active February 18, 2021 15:47
Compute the N-dimentional (hyper-)circumsphere
View Hypercircumsphere.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View Bezier Quadratic.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@nickovs
nickovs / aws-session.py
Created November 28, 2018 23:47
Easy sessions credentials for Amazon Web Services when multi-factor authentication is required.
View aws-session.py
#!/usr/bin/env python3
"""Fetch and print temporary session credentials with MFA
To use this tool first put the ARN of your MFA access token into a
file called .aws_token_id in your home directory and ensure that the
tool is on your path. Then execute the command:
eval `aws-session`
You will be promoted to enter your current MFA token value. After this
@nickovs
nickovs / pathprefix.py
Created April 4, 2018 00:45
Easier handling of file paths in Python
View pathprefix.py
# A Python (3) class for more compact path handling.
#
# If you find yourself calling os.path.join() with the same first parameter
# over and over again it can get rather tedious. Instead you can now go:
#
# path = PathPrefix("/some/path")
# file1 = path / "file1"
# sub_file = path / "subdir" / "file2"
class PathPrefix(str):