Skip to content

Instantly share code, notes, and snippets.

View soxofaan's full-sized avatar

Stefaan Lippens soxofaan

View GitHub Profile
@soxofaan
soxofaan / here-jupyter.sh
Last active March 23, 2021 23:34
here-jupyter: launch Jupyter Notebook in background from current directory using tmux
#!/bin/bash
# Build tmux session name from current directory
SESSION_NAME=$(pwd)
# Strip non-alphanumeric characters
SESSION_NAME=${SESSION_NAME//[^a-zA-Z0-9]/}
# Only keep trailing part
SESSION_NAME=Jupyter-${SESSION_NAME: -20}
# Command to run inside tmux session
@soxofaan
soxofaan / sdiff.txt
Created February 3, 2022 15:30
EP-4150 default vs stitched
$ sdiff -t tile0000-remake.tiff.txt tile0000-remake-stitch.tiff.txt
Driver: GTiff/GeoTIFF Driver: GTiff/GeoTIFF
Files: tile0000-remake.tiff | Files: tile0000-remake-stitch.tiff
Size is 1827, 1024 | Size is 1827, 880
Coordinate System is: Coordinate System is:
PROJCRS["WGS 84 / UTM zone 31N", PROJCRS["WGS 84 / UTM zone 31N",
BASEGEOGCRS["WGS 84", BASEGEOGCRS["WGS 84",
DATUM["World Geodetic System 1984", DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563, ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]], LENGTHUNIT["metre",1]]],
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / README.md
Last active June 2, 2022 12:03
Flask view decorator for injecting Cache-Control headers

POC decorator for flask fiew functions to inject Cache-Control headers in a response.

Instructions to run example

Set up env, for example:

python -m venv venv
. venv/bin/activate

pip install flask

Google Apps Script to automatically delete mails with a certain label after a certain time

Usage

  1. Think of a deletion scheme and create GMail labels accordingly (e.g. I use labels 'todelete/after1week', 'todelete/after1month' and 'todelete/after3months' here)
  2. set up filters in GMail to flag desired mails with these labels
  3. create a Google Apps Script with this script (adapt function names, labels and day offsets appropriatedly) and set up triggers as desired

Disclaimer

@soxofaan
soxofaan / forum452.ipynb
Created September 9, 2022 15:45
openEO forum 452 use case
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / ensure_pyspark_executor_logging.py
Created April 7, 2020 08:54
Decorator based trick to enable Python logging from PySpark executors
import functools
import logging
import pyspark
from typing import Callable
LOG_FORMAT = "[P%(process)s/%(name)s] %(levelname)s: %(message)s"
def ensure_executor_logging(
f=None, *,
@soxofaan
soxofaan / example03.ipynb
Created September 1, 2022 10:14
openEO Platform forum 412 example 3
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / sdiff.py
Last active June 22, 2023 03:52
Python implementation of side-by-side diff
# Code licensed MIT 2023 Stefaan Lippens
import difflib
import itertools
from typing import List, Tuple, Iterator
class Sdiffer:
def __init__(self, max_width:int = 80):
# Two columns with a gutter