Apply a cube LUT to mpv playback
mpv -vf=lut3d=XT4_FLog_FGamut_to_ETERNA_BT.709_33grid_V.1.01.cube FILE.MOV
or
celluloid --mpv--vf=lut3d=XT4_FLog_FGamut_to_ETERNA_BT.709_33grid_V.1.01.cube FILE.MOV
Loguru is my favorite why to perform logging in python. It's generally so simple to use but a few things are missing from the documentation.
Logging over the network
This is based on the loguru example, but also includes the hostname of the sender. To add extra fields the pefered method is to add to record["extra"]
dictionary (which is normally empty). The client code sends the log messages over the network and to stderr
.
class LoggingSocketHandler:
def __init__(self, host, port, timeout=600):
I have simple bash script that starts lots of processes. If one fails I want to stop everything. There maybe a better way to do this but I came up with this.
First create two scripts to test our main script. good_sleep
that sleeps for 10 seconds and exits with no error.
#!/bin/bash
echo " good sleeping"
sleep 10
echo "done"
Dual Monitor Linux Mint Login SCreen Fix
Linux mint has a few annoyances when using dual monitors. First fixing the log in screen. By default it uses the same resolution as the primary monitor in the secondary screen. It's only cosmentic but it annoys me.
Create or append the file /etc/lightdm/lightdm.conf.d/71-linuxmint.conf
to add
[SeatDefaults]
user-session=cinnamon
display-setup-script=/usr/bin/lightdmxrandr.sh
Batch convert heic files to jpg in fish shell
- First install
sudo apt install libheif-examples
- Then run in correct directory
for p in *.heic; heif-convert $p (basename $p .heic)".jpg"; end
- Make the spice mix:
- 1 Tbs ground allspice
- 1 Tbs ground cinnamon
- 1 Tbs ground nutmeg
- 1 tsp ground cloves
- 1 tsp ground coriander
- 1 tsp ground ginger
You can keep the leftovers in a jar.
- Start the v4l2loopback module:
sudo modprobe v4l2loopback \
devices=1 exclusive_caps=1 video_nr=5 card_label="Dummy Camera"
- This creates one device with a label "Dummy Camera" as device `/dev/video5
- See https://github.com/umlaeute/v4l2loopback/ for more detailts
- I have a short test video call
Speed1.avi
, this can be played streamed to/dev/video5
withffmpeg -re -stream_loop -1 -i Speed1.avi -vcodec rawvideo -pix_fmt yuv420p -f v4l2 /dev/video5
A simple example of code for testing a custom tensorflow Keras layer
def my_init(shape, dtype=None):
"""This function is a custom kernel initialiser. It loads the weights from a matlab file. Adapt as need"""
matlab = io.loadmat('../matlab/weights.mat')
wfilter = matlab['wfilter']
if shape != wfilter.shape:
raise Exception('Shaped do not match')
return tf.constant(wfilter, dtype=dtype)
This is running on Linux Mint 20
- Install docker.
-
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(. /etc/os-release; echo "$UBUNTU_CODENAME") stable"
-
sudo apt-get update
-
sudo apt install docker-ce docker-compose
-
sudo usermod -aG docker $USER
-
- and test with
docker --version
It's actually fairly easy to control Home Assistant remotely using curl
but I couldn't find a complete solution on how to do this, so here goes...
- Activate the api in
configuration.yaml
by adding the lineapi:
- Get an Authorization token from HA (It's a Long-Lived Access Tokens which can be created on your HA user profile page)
- This list of exposed states can be found using
curl -X GET -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" http://YOUR_IP:8123/api/states | prettyjson
- Note
prettyjson
is an alias forpython -m json.tool
, you don't need this it's just easier to read.
- To get the state of a device append the entity.id to the URL, eg
curl -X GET -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" http://YOUR_IP:8123/api/states/switch.mylight | prettyjson
- The API documentation shows you how to change the states but this does not actually turn on the lights, etc. Instead, us