Skip to content

Instantly share code, notes, and snippets.

View leewardbound's full-sized avatar

Leeward Bound leewardbound

View GitHub Profile
@leewardbound
leewardbound / fix-github-pr-skill.md
Last active January 23, 2026 18:29
Claude "Fix PR" skill
name description
fix-pr
Review and address GitHub PR comments. Use when working on PR feedback, fixing review comments, or responding to reviewer concerns. Handles both human and AI bot reviews.

Fix PR Comments

Workflow

0. Determine Which PR to Fix

@leewardbound
leewardbound / async_task_mixin.py
Created December 17, 2025 20:46
Django Async Task Model Mixin Helper
from datetime import datetime, timedelta, timezone
from django.db import models
class AsyncTaskStatus(models.TextChoices):
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
FAILED = "failed"
@leewardbound
leewardbound / Dockerfile
Last active November 13, 2022 22:55
VNC container with Google Chrome (for Industry Idle)
FROM consol/ubuntu-xfce-vnc
USER 0
RUN apt-get update -yq
RUN wget -O /tmp/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i /tmp/google-chrome.deb || true
RUN apt-get install -fyq
USER 1000
@leewardbound
leewardbound / Dockerfile
Created July 27, 2022 23:35
Self-serve minio container, automatically creates bucket at container startup
# Self-service Minio container
# Automatically creates the $MINIO_BUCKET bucket and configures it for public downloads
FROM minio/mc AS mc
FROM minio/minio
RUN echo $'#!/usr/bin/env sh \n\
cat /bin/start-minio.sh \n\
AWAIT_STARTUP="sleep 5" \n\
CONFIGURE_ROOT="mc config host add local http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD" \n\
did:3:kjzl6cwe1jw14acmxg1wwq9bmy49lod9jsqs4at0e6tv3fnpy5mq8lhcercmkp4
// Package join-from-screenshare contains an example of joining an ion instance
// and publishing the screenshare of your X server
package main
import (
"context"
"encoding/json"
"fmt"
"log"
// Package join-from-webcam contains an example of joining an ion instance and
// publishing a stream directly from a webcam device
package main
import (
"context"
"encoding/json"
"fmt"
"log"
GST_DEBUG=3 node gst.js [625c9e3]
{ headless: false,
args:
[ '--enable-usermedia-screen-capturing',
'--allow-http-screen-capture',
'--auto-select-desktop-capture-source=broadcast',
'--load-extension=/home/linked/Nextcloud/home/p/net-prophet/streamhuddle/standup/recorder_extension',
'--disable-extensions-except=/home/linked/Nextcloud/home/p/net-prophet/streamhuddle/standup/recorder_extension',
'--disable-infobars',
'--no-sandbox',
GST_DEBUG=3 gst-launch-1.0 filesrc location=/home/linked/movie.mov ! decodebin name=d ! queue ! videoconvert ! video/x-raw,format=I420 ! x264enc speed-preset=ultrafast tune=zerolatency key-int-max=20 ! flvmux name=flvmux ! rtmpsink location=rtmp://localhost:1935/publish/foobar d. ! queue ! audiorate ! audio/x-raw,channels=1 ! alawenc ! flvmux.
Setting pipeline to PAUSED ...
0:00:00.017335589 2015504 0x558df6d5fa30 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.020963675 2015504 0x558df6d67f00 WARN qtdemux qtdemux_types.c:239:qtdemux_type_get: unknown QuickTime node type chan
0:00:00.020984242 2015504 0x558df6d67f00 WARN qtdemux qtdemux.c:7790:qtdemux_parse_container:<qtdemux0> length too long (873924 > 17)
0:00:00.021007619 2015504 0x558df6d67f00 WARN qtdemux qtdemux.c:3237:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1
0:00:00.021054080 2
> GST_DEBUG=3 gst-launch-1.0 filesrc location=/home/linked/movie.mov ! decodebin name=d ! queue ! videoconvert ! video/x-raw,format=I420 ! x264enc speed-preset=ultrafast tune=zerolatency key-int-max=20 ! flvmux name=flvmux ! rtmpsink location=rtmp://localhost:1935/publish/foobar d. ! queue ! audiorate ! audioconvert ! alawenc ! flvmux.
Setting pipeline to PAUSED ...
0:00:00.016766001 1985518 0x55568474b010 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.019906061 1985518 0x555684750f00 WARN qtdemux qtdemux_types.c:239:qtdemux_type_get: unknown QuickTime node type chan
0:00:00.019921827 1985518 0x555684750f00 WARN qtdemux qtdemux.c:7790:qtdemux_parse_container:<qtdemux0> length too long (873924 > 17)
0:00:00.019941892 1985518 0x555684750f00 WARN qtdemux qtdemux.c:3237:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1
0:00:00.019987877 1985518 0