Skip to content

Instantly share code, notes, and snippets.

@haliphax
haliphax / grid-generator.scad
Created June 12, 2026 14:29
Grid generator script for producing unionized grid meshes from an STL file and gap pad meshes
// Generates a grid of body meshes with pad meshes between them.
// "Fence-post" pattern: N bodies get N-1 pads between them.
//
// STL files must be in the same directory as this script,
// or provide absolute paths.
//
// Pad STLs should have their geometry positioned in object-local
// coordinates so that when placed at the same grid points as the
// bodies, they naturally align into the gaps:
// - h_pad.stl: offset to bridge the horizontal gap
@haliphax
haliphax / BodyExport.FCMacro
Last active June 22, 2026 04:58
FreeCAD Macro - Export objects as STL/STEP
"""
BodyExport.FCMacro
Export each selected solid as both STEP and STL into the project file's directory.
Files are named: <project name> - <body name>.<extension>
If no solid objects are selected, top-level results are exported:
- PartDesign::Body objects (unless they are operands of a standalone
boolean result)
- Standalone boolean results (Part::Cut, Part::Fuse, Part::Common)
@haliphax
haliphax / generate.py
Last active June 8, 2026 18:24
STL generator for breakaway stacks
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["numpy-stl"]
# ///
"""
This script is for creating stacks of more-or-less flat meshes that have
symmetrical top and bottom faces (e.g. Multiboard). The gap (default 0.2mm)
should be set to your slicer's layer height. The resulting file should be
printed with 3 walls, 15% infill, with ironing of all top surfaces enabled.
@haliphax
haliphax / gwskills.py
Last active January 28, 2026 07:12
Guild Wars Reforged skill template code parser
"""
Parse Guild Wars Reforged skill template codes
See https://wiki.guildwars.com/wiki/Skill_template_format for reference and
profession/attribute/skill indexes.
"""
# stdlib
from dataclasses import dataclass
from typing import Any, Generator
@haliphax
haliphax / random-string.js
Created October 30, 2023 21:17
generate random string
/** printable ASCII characters */
const ascii = [];
for (let i = 33; i <= 126; ascii.push(String.fromCharCode(i++)));
/** generate random string */
const randomString = limit => {
const result = [];
for (let i = 0; i < limit; i++) {
const index = Math.floor(Math.random() * (126 - 33) + 33);
@haliphax
haliphax / 11ty-transform-htmlMinify.ts
Created August 3, 2023 19:17
Eleventy - HTML and inline script minifier transform
import { UserConfig } from "@11ty/eleventy";
import { DOMParser } from "@xmldom/xmldom";
import { transform } from "esbuild";
import { minify } from "html-minifier";
/** cache for content of script tags with an ID */
const scriptCache = new Map<string, string>();
/** DOM parser for navigating the rendered document; warnings are ignored */
const parser = new DOMParser({ errorHandler: { warning: () => {} } });
@haliphax
haliphax / install-gitmoji-hook.sh
Last active September 11, 2023 04:55
Gitmoji CLI commit hook
#!/usr/bin/env bash
# install gitmoji as a commit hook
#
# - uses https://www.npmjs.com/package/gitmoji-cli
# - does not require global module installation
# - skips hook if message already starts with gitmoji
root="$(git rev-parse --show-toplevel)"
hook="$root/.git/hooks/prepare-commit-msg"

Keybase proof

I hereby claim:

  • I am haliphax on github.
  • I am haliphax (https://keybase.io/haliphax) on keybase.
  • I have a public key ASC0LFekXGTz3OedyiQZMCgD_CiApPRAvykdZJCJsqv5wgo

To claim this, I am signing this object:

@haliphax
haliphax / merge-on-comment.yml
Created April 14, 2023 05:59
Merge pull request with "merge" comment
# Merges a pull request (if able) when a comment is added by a collaborator,
# contributor, or owner with the word "merge" as its only content
name: Merge on comment
on:
issue_comment:
types: [created]
jobs:
@haliphax
haliphax / split_graphemes.py
Last active February 2, 2026 20:29
Split a string into grapheme clusters
"""
Unicode utility for splitting a string into grapheme clusters
This gist was further developed into https://github.com/haliphax/giraph
"""
# stdlib
import logging
from os import environ
from sys import stdout