Skip to content

Instantly share code, notes, and snippets.

View thehappycheese's full-sized avatar

thehappycheese

  • Australia
View GitHub Profile
@thehappycheese
thehappycheese / devcontainer.json
Created September 26, 2025 15:09
CUDA On Windows Docker
// place in ./.devcontainer folder
{
"name": "Python 3",
"dockerFile": "dockerfile",
"features": {
"ghcr.io/raucha/devcontainer-features/pytorch:1": {},// not sure if these are needed?
"ghcr.io/devcontainers/features/nvidia-cuda:2": {} // not sure if these are needed?
},
"runArgs": ["--gpus","all"], // apparently this is the magic that makes cuda work in docker desktop for windows
/**
* Hash a file without loading the whole thing into memory
* @param {File} file
* @param {"SHA-256"|"SHA-1"} algo
*/
export async function hash_file_in_chunks(file, algo = "SHA-256") {
const chunk_size = 1000 * 1024 * 1024; // 100MB
const count_chunks = Math.ceil(file.size / chunk_size);
const output = new ArrayBuffer(32*count_chunks);
@thehappycheese
thehappycheese / pre-commit.py
Created May 4, 2025 15:59
pre-commit hook stops .ipynb outputs
#! ./python
import json
import sys
from pathlib import Path
import subprocess
def get_staged_files():
"""Get list of files that are staged for commit."""
try:
result = subprocess.run(

Automates reloading a website during development; served using vanilla Deno server using a websocket.

@thehappycheese
thehappycheese / git_wrapper.py
Last active May 8, 2024 03:22
A simple python wrapper for git that helps build synthetic repos based on snapshots of some folder
from __future__ import annotations
import subprocess
from pathlib import Path
from typing import Optional
import os
from dataclasses import dataclass
from deprecated import deprecated
from pandas import Timestamp
# This works... but cant read the output array in the final step! :(
# Experimental!
UserLib ← &ffi ⊂□"User32.dll"
GdiLib ← &ffi ⊂□"Gdi32.dll"
KernelLib ← &ffi ⊂□"Kernel32.dll"
MessageBoxA ← UserLib {"int" "MessageBoxA" "long" "const char*" "const char*" "unsigned int"}
# MessageBoxA {0 "Yes Please" "About to Take A Screenshot" 0}
GetSystemMetrics ← UserLib {"int" "GetSystemMetrics" "int"}
GetDeviceContext ← UserLib {"long long" "GetDC" "long"}
@thehappycheese
thehappycheese / pandas_aoihttp.py
Created February 19, 2024 03:50
pandas_aoihttp
import pandas as pd
import asyncio
from aiohttp import ClientSession, TCPConnector
@pd.api.extensions.register_series_accessor("aiohttp")
class AiohttpAccessor:
def __init__(self, pandas_obj):
self._obj = pandas_obj
async def _fetch_text(self, url: str, session):
@thehappycheese
thehappycheese / Mendelbressenuiuabrott.ua
Created December 26, 2023 19:02
Mendelbressenuiuabrott
# pairwise coefficient of interpolation
Interp ← ÷:⊃(-≡⊢|≡/-)◫2
MarchingSquares ← (
:
⊃(
≡(◫2)Interp
| ◫2⍜⍉Interp
| ≡≡(°⋯♭)◫2_2> # types
| ≡°⍉⍉⊞⊟∩(⇡-1)⊃(⊢⇌|⊢)△
@thehappycheese
thehappycheese / split_dataframe_by_weighted_sequence.py
Created November 17, 2023 03:29
Split DataFrame by Weighted Sequence
import pandas as pd
def split_dataframe_by_weighted_sequence(
df:pd.DataFrame,
split_column:str,
weight_column:str,
skew:float=0.5
):
"""
Split a dataframe into two parts by a sequence of values and a sequence of weights.
from pathlib import Path
import keyring
import pandas as pd
import os
import sys
# You need access to the compiled .NET AdomdClient .dll
# You can get it using nuget
# ```powershell
# nuget.exe install Microsoft.AnalysisServices.AdomdClient.retail.amd64
# nuget.exe install Microsoft.AnalysisServices.Tabular