Skip to content

Instantly share code, notes, and snippets.

View jensens's full-sized avatar

Jens W. Klein jensens

View GitHub Profile
@jensens
jensens / plip-4137-step2-portlets-core-addon.md
Created October 20, 2026 14:54
PLIP 4137 step 2: make portlets a core add-on (design spec)

Make portlets a core add-on — PLIP 4137 step 2 — Design (revision 2)

  • Date: 2026-10-20 (revision 2 of the 2026-10-20 spec)
  • PLIP: plone/Products.CMFPlone#4137, step 2 ("make portlets optional"); step 1 (repo/distribution merge, plone.portlets 5.0.0a1 + stubs) is done and pinned in coredev 6.3.
  • Related PLIPs: #4136 (plone.app.customerize/five.customerize become a core add-on in 6.3, removed in Plone 7; esteele's stale branches plone/Products.CMFPlone@plip-4136-customerize, plone/plone.app.customerize@esteele/remove-portal_view_customizations, plone/plone.app.upgrade@esteele/remove-portal_view_customizations), #3953 (Classic UI templates and control panels move step by step to plone.app.layout; plone.classicui stays a thin distribution; in Plone 7 plone.app.layout lives above Products.CMFPlone).
  • **Target
@jensens
jensens / Dockerfile
Last active October 9, 2026 13:53
Plone backend Docker image configured at startup by cookiecutter-zope-instance (storage neutral, no base Plone image)
# syntax=docker/dockerfile:1
#
# Plone backend image, configured at container start by
# cookiecutter-zope-instance from INSTANCE_* environment variables.
#
# docker build -t my-plone .
# docker run -p 8080:8080 -v plone-data:/data my-plone
#
# Storage neutral: FileStorage by default, switch to ZEO, RelStorage or
# pgjsonb with environment variables only (see README.md). Drivers that need
@jensens
jensens / 00-README.md
Created June 9, 2026 21:28
Self-hosting Solidtime on Kubernetes with CDK8S (Kube-Hetzner / CloudNativePG / ESO) — opinionated reference + gotchas

Solidtime on Kubernetes with CDK8S

How we self-host Solidtime on a k3s cluster (Hetzner), deployed with CDK8S (TypeScript) and synced by ArgoCD.

This is opinionated and cluster-specific — not a generic helm install. It's here as a reference: steal the patterns and the gotchas. Everything is driven by config.yaml; no secrets are hardcoded (they come from External Secrets Operator).

The files below are flattened out of a normal CDK8S project. Original layout:

@jensens
jensens / copy-to-latest.sh
Created February 18, 2021 14:49
Rsync via hard link whole tree of blobs (Plone/Zope)
echo "COPY DB ----------------------------------------------------------------------"
rm -rf latest-pgdb
cp -R live-pgdb latest-pgdb
chown -R 500.1001 latest-pgdb
echo "COPY BLOBS -------------------------------------------------------------------"
SOURCE=/data/aaf/live-blobs
TARGET=/data/aaf/latest-blobs
LINKDEST=`python3 -c "import os.path; print(os.path.relpath('$SOURCE', '$TARGET'))"`
rsync -avh --delete-during --link-dest=$LINKDEST $SOURCE/ $TARGET
@jensens
jensens / XResources
Created February 8, 2021 20:17
My Regolith 1.5 Configuration
i3-wm.gaps.focus_follows_mouse: yes
i3-wm.bar.trayoutput: eDP-1
i3-wm.bar.stripworkspacenumbers: no
i3-wm.workspace.01.name: 1: term
i3-wm.workspace.02.name: 2: web
i3-wm.workspace.03.name: 3: dev
i3-wm.workspace.04.name: 4: apps
i3-wm.workspace.05.name: 5: files
@jensens
jensens / .Xresources
Last active March 1, 2021 09:53
config
i3-wm.bar.trayoutput: eDP-1
i3-wm.gaps.focus_follows_mouse: yes
i3-wm.program.files: /usr/bin/nemo
i3-wm.workspace.01.name: 1:<span font_desc='JetBrains Mono Medium 10'> 1 terminal </span>
i3-wm.workspace.02.name: 2:<span font_desc='JetBrains Mono Medium 10'> 2 web </span>
i3-wm.workspace.03.name: 3:<span font_desc='JetBrains Mono Medium 10'> 3 dev </span>
i3-wm.workspace.04.name: 4:<span font_desc='JetBrains Mono Medium 10'> 4 mail </span>
i3-wm.workspace.05.name: 5:<span font_desc='JetBrains Mono Medium 10'> 5 chat </span>
@jensens
jensens / email.txt
Created April 10, 2020 17:58
Simon von der LUGT hat beim Roten Kreuz nachgefragt (08.04.20 17:27)
Hi,
Ich habe beim Roten Kreuz nachgefragt - sie werden den Source Code der
App offenlegen - Fahrplan dazu habe ich aber keinen bekommen (siehe
Auszug aus dem Mail unten).
lg
Simon
@jensens
jensens / pyproject.toml
Created November 29, 2018 10:34
Plone style Black and Isort cfg
[tool.black]
line-length = 79
# skip-string-normalization = true
@jensens
jensens / buildout.cfg
Created August 13, 2018 14:49
Sentry on Docker to monitor Zope (for Andreas)
...
[instance]
...
eggs +=
raven
event-log-custom =
%import raven.contrib.zope
@jensens
jensens / calc_test_percentages.py
Created July 2, 2018 14:42
Simple percentage report of end of tests output.
#!./bin/python
"""
Simple percentage report of end of tests output. Copy the line from there and pass to script:
usage: $./calc_test_percentages.py 9372 tests, 180 failures, 324 errors and 266 skipped in 22 minutes 25.188 seconds
output:
green : 91.784%
failures: 1.921%