Skip to content

Instantly share code, notes, and snippets.

View clhenrick's full-sized avatar

Chris Henrick clhenrick

View GitHub Profile
@mcollina
mcollina / guide.md
Created April 30, 2026 09:41
Configuring minimum release age across npm, pnpm, and yarn

Configuring minimum release age across npm, pnpm, and yarn

Setting a minimum release age (a "cooldown") on dependencies is a cheap, high-leverage defense against supply-chain attacks. Most malicious package versions are detected and yanked within hours, so a 24-hour delay filters out the smash-and-grab incidents (axios 1.14.1, ua-parser-js, Solana web3.js, etc.).

All three major Node.js package managers now support this, but each one used a different name and a different unit. Here is what you need.

Minimum versions

Tool Setting Unit Introduced in
@clhenrick
clhenrick / async-task-handler-generic.ts
Created January 30, 2024 18:57
Example of using a TypeScript generic type in a function's parameter and return type
// MyType is a generic that we can pass different types when calling handleAsyncTask()
const handleAsyncTask = async function<MyType> (asyncFn: () => Promise<MyType | string>) : Promise<[boolean, MyType | undefined]> {
const result = await asyncFn();
if (typeof result === 'string') {
return [true, undefined];
}
return [false, result];
}
@kconner
kconner / macOS Internals.md
Last active June 26, 2026 11:28
macOS Internals

macOS Internals

Understand your Mac and iPhone more deeply by tracing the evolution of Mac OS X from prelease to Swift. John Siracusa delivers the details.

Starting Points

How to use this gist

You've got two main options:

@rauschma
rauschma / README.md
Last active February 14, 2026 18:21
Bookmarklet for Mastodon: Transport a profile or post to your server

Bookmarklet for Mastodon: Transport a profile or post to your server

This bookmarklet shows a profile or a post on another Mastodon server in your server’s web app.

Installation

  • Change the value of HOST to the domain of your Mastodon server.
  • Create a bookmark and paste the lines in show-in-mastodon-web-app.js into its address (browsers are OK with pasting multiple lines).

Usage

@Preethi-Dev
Preethi-Dev / git__stash__commands.md
Created March 31, 2022 15:19
Cheat sheet for git stash commands

Stash the changes

  1. git stash
  2. git stash save

Stash the untracked files

  1. git stash --include-untracked
  2. git stash -u

List the stashes

  1. git stash list

show the latest stash

  1. git stash show
#!/bin/bash
set -e
# dependencies:
# - youtube-dl: https://ytdl-org.github.io/youtube-dl/
# - ffmpeg: https://ffmpeg.org/
# make sure youtube-dl dep exists
if ! command -v youtube-dl &> /dev/null
then
@Charlie-robin
Charlie-robin / setup-sass.md
Last active June 4, 2025 15:08
Setting up SASS & Using post-css to auto prefix your css

Setting up SASS/SCSS & Prefixing with POSTCSS

Hey 👋,

There are two parts to this gist and the first is independant.

For the second part you need to have completed the first part.

You do not need both just if you want them they are below.

Setting up SASS/SCSS

Twitter abuses all media file uploads, each type in its own way. If we want to upload a good looking animation loop from some low-color, high-detail generative art, we have to game their system's mechanisms.

  • don't upload a video file, they will re-encode it into absolute 💩

  • create a GIF, which they will auto-convert into a video file 😱

  • The frames of the GIF will be resized to an even-sized width using an extremely naive algorithm. Your GIF should be an even size (1000, 2000,

@devadvance
devadvance / part_video_to_gif.sh
Created February 28, 2021 03:10
Create animated GIF and WebP from videos using ffmpeg
ffmpeg -ss $INPUT_START_TIME -t $LENGTH -i $INPUT_FILENAME \
-vf "fps=$OUTPUT_FPS,scale=$OUTPUT_WIDTH:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
-loop $NUMBER_OF_LOOPS $OUTPUT_FILENAME
# Change these placeholders:
# * $INPUT_START_TIME - number of seconds in the input video to start from.
# * $LENGTH - number of seconds to convert from the input video.
# * $INPUT_FILENAME - path to the input video.
# * $OUTPUT_FPS - ouput frames per second. Start with `10`.
# * $OUTPUT_WIDTH - output width in pixels. Aspect ratio is maintained.