Skip to content

Instantly share code, notes, and snippets.

View anthumchris's full-sized avatar
🎶
learning Ableton Live

anthumchris

🎶
learning Ableton Live
  • Colorado 🇺🇸
View GitHub Profile
@anthumchris
anthumchris / httpsSocketRequest.js
Last active June 23, 2025 04:35
HTTPS request with NodeJS TLS Socket
#!/usr/bin/env node
import tls from 'node:tls'
const host = 'one.one.one.one' // Cloudflare DNS
const port = 443
const timeout = 5_000
const path = '/dns/'
const request = trim(`
@anthumchris
anthumchris / validate-permissions.js
Created June 9, 2022 20:55
Validate AWS Policy Action Permissions for IAM User or Role
/* This NodeJS script tests IAM Policy Actions for yourself or a specific PolicySourceArn user/role.
*
* https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/configuring-the-jssdk.html
*/
import AWS from 'aws-sdk' // $ npm i -D aws-sdk@2
const iam = new AWS.IAM()
const sts = new AWS.STS()
@anthumchris
anthumchris / Greeting.js
Last active May 3, 2023 11:16
Use Webpack 5 and Babel 7 to create JavaScript bundle for Internet Explorer 11 (IE11, IE 11)
export default 'Hello!'
@anthumchris
anthumchris / gist:ee5355fcdecb9fd93e3d07227a2880a0
Created November 14, 2020 16:43
toggle oscillator playback
<html>
<head>
<style>body { padding: 4rem; text-align: center; }</style>
<script>
/* Parentheses may be needed to instantiate: `audioCtx = new (OBJECT)()`<br />
* Oscillator waveform may need explicit definition: `osc.type = 'sine'`
*/
var audioCtx = null
var isPlaying = false
@anthumchris
anthumchris / app.jsx
Created August 6, 2020 19:37
i18n Pattern
// Devs can easily use English strings that will be translated if necessary
function DeleteButton() {
function prompt() {
alert(intl('Are you sure you want to delete gateway?'))
}
return(
<button onclick={prompt}>
{intl('Delete Gateway')}
</button>
@anthumchris
anthumchris / README.md
Last active September 25, 2022 19:04
Clear Nginx Cache

Clearing Nginx's HTTP Cache

I recently implemented Nginx HTTP content caching on our WordPress web servers to improve page load speeds and eliminate redundant, unneeded server-side page rendering. Caching the pages was relatively straightforward, but clearing the cache required a custom workaround.

Nginx comes in two versions: free and “Nginx Plus” at $2,500/year. The free version of Nginx does not offer the needed cache-clearing features of Nginx Plus, and I wasn’t comfortable paying $20,000 for 8 instances without trying to build my own solution.

Our Nginx servers run as an HTTP proxy for multiple PHP/MySQL-backed WordPress sites. The goal was to cache the dynamic PHP HTML responses in Nginx and serve the HTML pages from Nginx to avoid redundant, CPU-intensive PHP renders.

Site Cache Configuration

The example below shows how PHP response caching is configured for a site (other nginx configuration details are excluded for brevity). A cache named cachedemo-prod is defined to store cached HTML f

@anthumchris
anthumchris / build.sh
Last active July 3, 2021 02:56
Emscripten WebAssembly Module.ready Promise initialization similar to Module.onRuntimeInitialized
#!/bin/bash
emcc \
-O0 `# leave uncompressed for example` \
-s WASM=1 \
-s EXPORTED_FUNCTIONS="['_hello']" \
-s EXTRA_EXPORTED_RUNTIME_METHODS="['cwrap']" \
-o emscripten-module.js \
--post-js module-post.js \
hello.c
/* To test, initiate the fetch() and interrupt your network conneciton
* (e.g. turn off wireless). The originating ReadableStreamDefaultReader.read()
* error is lost and unavailable to application's outermost Promise.reject catch()
*/
fetch('https://fetch-progress.anthum.com/10kbps/images/sunrise-baseline.jpg')
.then(response => {
const reader = response.body.getReader();
return new Response(
new ReadableStream({
@anthumchris
anthumchris / custom-fetch-response-reader.js
Last active March 13, 2018 13:45
Custom Fetch Response Stream Reader
fetch('the-best-song-ever.mp3')
.then(response => {
if (!response.body) {
throw Error("ReadableStream is not yet supported in this browser. See https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream")
return response;
}
const reader = response.body.getReader();
read()
@anthumchris
anthumchris / post-receive
Last active March 29, 2017 18:25
Git Push to Deploy — Instantly deploy your local Git repository to your remote web server
#/bin/bash
# This script will push your local repository's latest commit to a remote repository on your server.
# It's useful for quickly pushing your local changes to deployment servers (Dev, Stage, Prod/Live, etc.)
#
# This file should be placed in your remote server's project's git hooks folder and named .git/hooks/post-receive.
# Security reminder: Your web server should not allow access to the /.git folder URL
#
# Ensure that this script is executable:
# $ chmod +x .git/hooks/post-receive