Skip to content

Instantly share code, notes, and snippets.

View forresto's full-sized avatar

Forrest O. forresto

View GitHub Profile
{
"info": {
"title": "moonhance",
"author": "forresto",
"description": "Moon now to floydsteinberg, atkinson, or bayer dithering. More info on the moon renders: https://www.val.town/x/forresto/moon-phase/code/README.md ",
"url": "moon-dither",
"parents": [
"https://gist.github.com/forresto/44386bed2213c93d038f3fe987591840",
""
]
{
"info": {
"title": "moonhance",
"author": "forresto",
"description": "screen the moon onto your blurry moon photo. more info on the moon renders: https://www.val.town/x/forresto/moon-phase/code/README.md ",
"url": "moonhance",
"parents": [
"https://gist.github.com/forresto/44386bed2213c93d038f3fe987591840"
]
},
@forresto
forresto / browser-blob-stream.ts
Created September 8, 2025 10:12
Create a "blob stream" that can be used with PDFKit in the browser.
/**
* Minimal browser-native replacement for blob-stream
* Provides the same interface as [blob-stream](https://github.com/devongovett/blob-stream/issues/6) but uses browser-native APIs
*/
interface BlobStreamInterface {
// EventEmitter interface methods that PDFKit expects
on(event: string, callback: (...args: any[]) => void): this;
once(event: string, callback: (...args: any[]) => void): this;
emit(event: string, ...args: any[]): boolean;
addListener(event: string, callback: (...args: any[]) => void): this;
{
"info": {
"title": "make some colors move on a screen",
"author": "forresto",
"description": "tween → color → rectangle → slitscan",
"url": "scroll-a-gradient-challenge",
"parents": [
"https://gist.github.com/forresto/c80560726b93c6a2495299ecdfb15c7f"
]
},
{
"info": {
"title": "video loop to zoom",
"author": "forresto",
"description": "video loop, it was animated in webflow, but it's more visible in meemoo",
"url": "perpetual-zoom-motion",
"parents": [
"https://gist.github.com/forresto/35e3b45b5fb0ab1e0625c4410da84105"
]
},
{
"info": {
"title": "cam to gif",
"author": "forresto",
"description": "webcam to animated gif",
"url": "save-test",
"parents": [
"https://gist.github.com/forresto/a62c356eef68f000dc492b57911f9edb"
]
},
{
"info": {
"title": "microphone audio in demo",
"author": "forresto",
"description": "combining again",
"url": "mic-cam-twist-circles",
"parents": [
"https://gist.github.com/forresto/43346efc3436e849bf77f4e681a1bfcb",
"https://gist.github.com/forresto/52832b3b34f76eb0dbbabfea3f692369",
"https://gist.github.com/forresto/7df546c9866309a441fc4f6429d9d31b"
{
"info": {
"title": "microphone audio in demo",
"author": "forresto",
"description": "combining again",
"url": "mic-cam-twist-copy",
"parents": [
"https://gist.github.com/forresto/43346efc3436e849bf77f4e681a1bfcb",
"https://gist.github.com/forresto/52832b3b34f76eb0dbbabfea3f692369"
]
{
"info": {
"title": "cam to gif",
"author": "forresto",
"description": "webcam to animated gif",
"url": "cam2gif",
"parents": [
"https://gist.github.com/forresto/5764f9981f251f1da8bf3df0be8cdb82",
"https://gist.github.com/forresto/ea1741c8cddafba8d956ca11e1626cdd"
]
@forresto
forresto / mic-check.meemoo.json
Created December 22, 2024 23:32
mic-check.meemoo.json
{
"info": {
"title": "microphone audio in demo",
"author": "forresto",
"description": "i had audio input written like 10 years ago for the quickest way to get party beats into graphs... added a little frequency viz today",
"url": "mic-check"
},
"nodes": [
{
"id": 0,