Skip to content

Instantly share code, notes, and snippets.

View kylemcdonald's full-sized avatar

Kyle McDonald kylemcdonald

View GitHub Profile
@kylemcdonald
kylemcdonald / clip_and_combine.py
Created September 5, 2025 22:58
Process MP4 files: trim and concatenate using ffmpeg.
#!/usr/bin/env python3
import os
import sys
import argparse
import subprocess
import glob
from pathlib import Path
import natsort
@kylemcdonald
kylemcdonald / file_checker.py
Created September 5, 2025 22:57
This script checks if all file names from the first directory exist somewhere in the second directory, including subdirectories recursively.
#!/usr/bin/env python3
"""
File Name Checker
This script checks if all file names from the first directory exist somewhere
in the second directory, including subdirectories recursively.
"""
import os
import sys
@kylemcdonald
kylemcdonald / copy_source_files.txt
Created August 6, 2025 01:47
Python script for copying many files of interest from old hard drives.
#!/usr/bin/env python3
import os
import shutil
import argparse
from pathlib import Path
def copy_source_files(source_dir, dest_dir, extensions=('.h', '.cpp', '.pde')):
"""
Recursively find files with specified extensions and copy them to destination
@kylemcdonald
kylemcdonald / oldest-newest.py
Created August 4, 2025 21:06
Python script for showing a histogram of the file creation times of all files in a directory.
import os
import time
import matplotlib.pyplot as plt
from datetime import datetime
def format_time(epoch_time):
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(epoch_time))
# Global figure and axis for single window
fig, ax = None, None
@kylemcdonald
kylemcdonald / list-compute-engines.sh
Created July 4, 2024 20:17
List all compute engine instances on Google Cloud.
#!/usr/bin/env bash
# List all projects
projects=$(gcloud projects list --format="value(projectId)")
# Function to check if Compute Engine API is enabled
is_compute_api_enabled() {
local project=$1
gcloud services list --enabled --project="$project" --format="value(config.name)" | grep -q "compute.googleapis.com"
}
import os
import socket
import time
import struct
from multiprocessing import Process
socket_path = "/tmp/ipc_benchmark_socket"
def run_server():
if os.path.exists(socket_path):
@kylemcdonald
kylemcdonald / FixedVideoDelay.h
Created December 19, 2023 10:12
Video delay for openFrameworks.
#pragma once
#include <vector>
#include "ofImage.h"
class FixedVideoDelay {
private:
int delayAmount;
int totalFrames;
int readPosition;
@kylemcdonald
kylemcdonald / collector.py
Created December 11, 2023 15:43
PUSH-PULL pattern with ZMQ.
import zmq
context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.bind("tcp://*:5558")
print("Collector started... collecting results.")
while True:
result = socket.recv_json()
print(f"Collected: {result}")
@kylemcdonald
kylemcdonald / threaded-pipeline.py
Created December 8, 2023 09:33
Example of a threaded pipeline in Python.
import threading
import queue
class ThreadedWorker():
def __init__(self):
self.input_queue = queue.Queue()
self.output_queue = queue.Queue()
self.should_exit = False
self.thread = threading.Thread(target=self.run)
@kylemcdonald
kylemcdonald / fixed_noise.py
Last active December 8, 2023 05:46
Monkeypatch diffusers to use fixed noise.
import types
import PIL
import torch
from diffusers.pipelines.stable_diffusion_xl.pipeline_stable_diffusion_xl_img2img import retrieve_latents
from diffusers.utils.torch_utils import randn_tensor
def prepare_latents(
self, image, timestep, batch_size, num_images_per_prompt, dtype, device, generator=None, add_noise=True, fixed_noise=True
):
if not isinstance(image, (torch.Tensor, PIL.Image.Image, list)):