Skip to content

Instantly share code, notes, and snippets.

View ZachSaucier's full-sized avatar
💻
I have a lot to be humble about.

Zach Saucier ZachSaucier

💻
I have a lot to be humble about.
View GitHub Profile
@ZachSaucier
ZachSaucier / userChrome.css
Created August 11, 2025 18:09
Hide all Firefox tab media controls
/* Hide the mute/unmute button */
.tab-icon-overlay:not([sharing], [crashed]):is([soundplaying], [muted]) {
display: none !important;
}
.tab-icon-sound {
display: none !important;
}
.tab-audio-button { display: none !important; }
/* Keep site icon visible on hover */
.tabbrowser-tab:hover .tab-icon-stack:not([sharing], [crashed]):is([soundplaying], [muted]) > :not(.tab-icon-overlay),
function draw_arrow(context, x, y, angle, magnitude) {
const head_length = 10;
const dx = Math.cos(angle) * magnitude;
const dy = Math.sin(angle) * magnitude;
const end_x = x + dx;
const end_y = y + dy;
context.beginPath();
context.moveTo(x, y);
context.lineTo(end_x, end_y);
context.lineTo(end_x - head_length * Math.cos(angle - Math.PI / 6), end_y - head_length * Math.sin(angle - Math.PI / 6));
@ZachSaucier
ZachSaucier / .zshrc
Last active September 12, 2025 14:54
Create and navigate to a new git branch from any other branch
# Just Read
zipjr () {
rm ../jr.zip
zip -r ../jr.zip . -x ".ebextensions/*" ".git/*" "node_modules/*"
}
# Svelte
dev () {
npm run dev -- --open
}
const hrefs = [...document.querySelectorAll('.albumThumb a[href*="playlist.view?id="]')].map((e) => e.href);
let lastPlaylistId = -1;
hrefs.forEach((e) => {
const id = parseInt(new URL(e)?.searchParams?.get('id'));
if (id > lastPlaylistId) {
lastPlaylistId = id;
}
});
for (let i = 1; i <= lastPlaylistId; i++) {
let index = i;
@ZachSaucier
ZachSaucier / svelte.config.js
Created January 24, 2024 16:54
Multiple sites in one Svelte project in order to share components
// apps/website-1/svelte.config.js
import { createSvelteConfig } from 'config/svelte.js'
import adapter from '@sveltejs/adapter-cloudflare'
export default createSvelteConfig({
adapter: adapter(),
alias: {
$sections: 'src/sections',
},
@ZachSaucier
ZachSaucier / index.html
Created December 4, 2023 23:07
devtools-detect console.info animation setup
<script type="module" defer>
import devtools from '/devtools-detect.js';
const consoleInfoAnimation = () => {
// console.info animation here
};
const handleDevtoolsChange = (e) => {
if (e.detail.isOpen) {
consoleInfoAnimation();
@ZachSaucier
ZachSaucier / doubly-linked-list.ts
Last active May 6, 2023 18:58
A (comprehensive?) implementation of doubly linked lists using TypeScript.
// Note: This doubly linked list implementation is meant to cover most any use
// case of doubly linked lists. You likely don't need all of the functions
// included for your use case.
class DoublyLinkedListNode<T> {
public value: T;
public next?: DoublyLinkedListNode<T>;
public prev?: DoublyLinkedListNode<T>;
constructor(value: T) {
interface YearDropdownPluginConfig {
text: string;
theme: string;
date: Date;
yearStart: number;
yearEnd: number;
}
const yearDropdownPlugin = function ({
text = "",
float dist = 0.5*0.5 - (m.x * m.x + m.y * m.y);
float t = mix( dist / border, 1., max(0., sign(dist - border)) );
gl_FragColor = mix(color0, color1, t);
import os, glob, eyed3
os.chdir("./")
for file in glob.glob("*.mp3"):
filename = os.path.basename(file)
if " - " in filename:
artist, track = filename.split(' - ')
if "".__eq__(track):
track = artist
artist = ""