Skip to content

Instantly share code, notes, and snippets.

View jensens's full-sized avatar

Jens W. Klein jensens

View GitHub Profile
@jensens
jensens / 00-README.md
Created November 13, 2026 00:33
Zope #1300: ExtensionClass and CPython's type attribute cache - analysis and benchmarks

Zope classes and CPython's type attribute cache

Analysis for zopefoundation/Zope#1300, "Zope is slower since python 3.13". The CPython side is tracked in python/cpython#156096.

Result in short

The report is correct. On current Python releases, CPython does not use its type attribute cache for any class based on ExtensionClass. That covers nearly every persistent class in Zope, CMF and Plone.

@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