Skip to content

Instantly share code, notes, and snippets.

View WomB0ComB0's full-sized avatar
πŸ˜΅β€πŸ’«
I need an Advil

Mike Odnis WomB0ComB0

πŸ˜΅β€πŸ’«
I need an Advil
View GitHub Profile
@WomB0ComB0
WomB0ComB0 / extract-types-properties.ts
Created November 30, 2024 23:17
Extract the types and properties from input literal/type/tuple of types
type Decrement<N extends number> = [
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19
][N];
type ExtractNthProperty<T, N extends number> =
T extends readonly [infer First, ...infer Rest]
? N extends 0
? First
: ExtractNthProperty<Rest, Decrement<N>>

VPS Setup Script for Bun Applications

An automated setup script for deploying Bun applications on a VPS with Nginx reverse proxy, SSL, and PM2 process management.

Features

  • πŸš€ One-command setup for Bun applications
  • πŸ”’ Automatic SSL certificate configuration via Let's Encrypt
  • πŸ”„ Nginx reverse proxy with optimized settings
  • πŸ“Š PM2 process management
@jh3y
jh3y / magnify-this.js
Last active January 27, 2025 01:32
Magnify This. Bookmarklet code for magnifying a website.
javascript:(function () {
var active;
var magnifier;
var config = {
scale: 75,
size: 160,
image:
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAOtMSURBVHgBrL2JmuS4zQQYyK/e/42b2EkRcUDVY/vf3bKnK0spkSCOwMFDdep0F9D9z3/8jfjvfe379/nnn8/8ffqfazXfNY7a+V77XsXz/fk2gn9+8+o//3yb+efSP9fm7+jj+89zb+G2Md9/H2A/35/nmtqfNqfvnr+zv2Yb/9x/YpykjW3c5jyuZzxFOmYMddvxdQQN7/H85fr7+3m+a9N3ya+hA+r7PG1eWmroJy+f+5//7ee+f3+fAeV0QgY1fOiQpfofum9nz7OHn3vz6bY/8v/S+X2W8unh29CdfFMfKY/gbS/5//MF9eBLy/eGD/XYcmGf5PXhtTN8Hxm7r9Ad9pn2Eboj+SPtZNp7Pv/zz+efcZwWzzrsY/X5Hcsaw9D7JbggmtIeT8hC16RD2LpyIJ6fe+n5/WP1ug8UB3a16FGs5pejI50KNMTRqJ4nxuKevz/Tfl0lGF1/nqsYxHQ7mvXPr88/9zbBokJF2ko49J1/tLhG4fkbYRjdVOPnMvzXvf/5xDYevRrg4p2PUpzhHHlgnpAy0TAGUexsjKLMaff7vX42P9hvVQ1wmGgaVdOcef3Lqw9u3xLkUEY6SXNodX1GBqAy9+0XIbfRmOJjyLF/CT+3WdLesAH2lVd9an7jkZdQ76UHNbI+//yvKq+HBoweSZ/68orGGMwaJ1OPo/oa42DT0+B95ozkpt1nvE1lhMVMhQs7CF0cxbnjnRs+dXXz80+/f1IGo4hz+9MV++4BSOp5fVq8fcBhQ
@adtac
adtac / Dockerfile
Last active May 8, 2025 00:47
#!/usr/bin/env docker run
#!/usr/bin/env -S bash -c "docker run -p 8080:8080 -it --rm \$(docker build --progress plain -f \$0 . 2>&1 | tee /dev/stderr | grep -oP 'sha256:[0-9a-f]*')"
# syntax = docker/dockerfile:1.4.0
FROM node:20
WORKDIR /root
RUN npm install sqlite3
@ixahmedxi
ixahmedxi / tsup.config.ts
Created December 2, 2023 13:38
tsup multi entrypoint
import fs from 'fs';
import path from 'path';
import { defineConfig } from 'tsup';
// INFO: This is the only place you need to update when adding new entry folders
const entryFolders = ['primitives', 'ui'];
function getAllFilesInDirectory(dirPath: string): string[] {
return fs.readdirSync(dirPath).reduce<string[]>((allFiles, file) => {
@trozzelle
trozzelle / atproto_image.js
Created April 18, 2023 15:45
Image upload code for making a Bluesky post.
// Provide a uint8array of image data and set MIME type.
// Bluesky only supports jpg and png at the moment.
const testUpload = await agent.uploadBlob(testPng, {encoding: "image/png"})
// The response contains a BlobRef object, which is what
// agent.post expects.
const result = await agent.post({
text: 'Post Text',
reply: {
parent: {
@Phryxia
Phryxia / disjointSet.ts
Last active August 16, 2024 06:27
TypeScript implementation of disjoint set (union and find algorithm)
export function createDisjointSet(initialSize: number) {
const roots = Array.from(new Array(initialSize), (_, index) => index)
const sizes = roots.map(() => 1)
let groups = initialSize
// return the id of the set which given index-th element exists.
// but set id may changes if further union operations are done.
function find(index: number): number {
if (roots[index] === index) return index
return roots[index] = find(roots[index])
@bradtraversy
bradtraversy / node_nginx_ssl.md
Last active April 30, 2025 07:51
Node app deploy with nginx & SSL

Node.js Deployment

Steps to deploy a Node.js app to DigitalOcean using PM2, NGINX as a reverse proxy and an SSL from LetsEncrypt

1. Sign up for Digital Ocean

If you use the referal link below, you get $10 free (1 or 2 months) https://m.do.co/c/5424d440c63a

2. Create a droplet and log in via ssh

I will be using the root user, but would suggest creating a new user