Skip to content

Instantly share code, notes, and snippets.

View pwright's full-sized avatar
💭

Paul Wright pwright

💭
  • Ireland
View GitHub Profile
{
"id": "karpenter-autoscaling-landscape",
"title": "Karpenter Autoscaling Landscape",
"abstract": "Karpenter provisions Kubernetes worker nodes on AWS just in time for unschedulable pods. This map follows the value chain from application capacity and cost control down through pod scheduling signals, Karpenter policy objects, concrete node claims, AWS infrastructure integration, and operational controls.\n\nLegend: blue = user-visible platform outcomes; green = Kubernetes scheduling inputs; amber = Karpenter control objects; purple = cloud-provider integration; red = disruption and risk controls.",
"categories": [
{
"id": "platform-outcomes",
"title": "Platform Outcomes",
"items": [
{

MkDocs Integration Plan for Skupper Website

Overview

Integrate MkDocs Material to provide enhanced sidebar navigation for documentation at https://skupper.io/docs/ while preserving the existing Transom-based site structure.

Current Situation

  • Problem: Transom and MkDocs both want to process files in input/docs/
  • Conflict: input/docs/index.md (MkDocs) vs input/docs/index.html.in (Transom)
  • Transom limitation: ignored_file_patterns only matches filenames, not directory paths

Enabling shell completion for the Skupper CLI

The skupper completion command generates shell completion scripts for the Skupper CLI. Shell completion lets you press Tab to complete Skupper commands, options, and arguments.

Prerequisites

  • The Skupper CLI is installed.

Procedure

Using worktrees for AI workflows with two repos

The Concept

You have your "source" repos sitting in ~/repos. Instead of messy stashing or constant branch switching, you’re going to project specific branches into a clean folder called featureA.

This allows your main repos to stay on main (or whatever stable branch they need) while you do the heavy lifting in your feature-specific workspace.

The Setup

ChatKeeper Conversation Export Normalizer

chatkeeper 1.3.0 accepts a top-level conversations.json, but newer ChatGPT exports split conversations across files such as conversations-000.json, conversations-001.json, and so on.

If you only care about conversations, the easiest fix is to merge those shards back into a single conversations.json and build a minimal zip containing only that file.

The script for that is:

  • /home/paulwright/Downloads/chats/chatkeeper-normalize-conversations.sh
{
"id": "kubernetes-observability",
"title": "Observability in Kubernetes",
"abstract": "End users and operators need fast answers about service health, performance, and failures. In Kubernetes this is delivered via dashboards, explorers, and alerting that sit on top of signal stores (metrics, logs, traces). These stores are fed by collection and processing pipelines (agents, collectors, aggregators) that rely on Kubernetes primitives and underlying infrastructure (compute, storage, networking).",
"categories": [
{
"id": "experience",
"title": "User Experience",
"items": [
{
{
"id": "skupper-tutorial-flow",
"title": "Skupper Tutorial Steps",
"abstract": "A step-by-step dependency map for the Skupper Hello World tutorial, tracing from platform setup to application access and cleanup.",
"categories": [
{
"id": "network",
"title": "Skupper Network",
"items": [
{
[
{
"id": "tutors-dev-platform",
"title": "Tutors.dev Platform Value Chain",
"abstract": "The Tutors.dev platform enables users to discover, access, and interact with educational content through a rich catalogue and course delivery system. Its value chain spans user experience, content lifecycle management, platform services, and foundational infrastructure.",
"categories": [
{
"id": "experience",
"title": "User Experience",
"items": [
@pwright
pwright / ai.bs
Last active December 7, 2025 21:24
[{
"id": "ai-index-map",
"title": "AI Systems",
"abstract": "This index map represents the full series of AI value-chain maps as higher-level components, double click an item to navigate to that map.",
"categories": [
{
"id": "domain-eng-apps",
"title": "Domain & Engineering Applications",
"items": [
{
javascript:(function(){try{var rawLink=document.querySelector('a[href*="/raw/"]');if(!rawLink){alert('Raw link not found on this page.');return;}var u=new URL(rawLink.href);var parts=u.pathname.split('/').filter(Boolean);if(parts.length<4){window.open(rawLink.href,'_blank');return;}var user=parts[0];var gistId=parts[1];var filename=parts.slice(4).join('/');var latest='https://gist.githubusercontent.com/'+user+'/'+gistId+'/raw/'+filename;console.log('Latest raw URL:',latest);if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(latest).then(function(){alert('Copied latest raw URL:\n'+latest);},function(){window.prompt('Latest raw URL (copy manually):',latest);});}else{window.prompt('Latest raw URL (copy manually):',latest);}}catch(e){console.error(e);alert('Failed: '+e);}})();