Skip to content

Instantly share code, notes, and snippets.

View siberex's full-sized avatar
🛠️
Your stack will not be full without me

Stephen Jingle siberex

🛠️
Your stack will not be full without me
View GitHub Profile
@siberex
siberex / find_node_modules.sh
Last active July 26, 2022 11:21
Find all top-level node_modules and show each folder size
find . -name 'node_modules' -type d -not -path '*/node_modules/*/node_modules' -exec du -hs '{}' \;
# alias find_node_modules="find . -name 'node_modules' -type d -not -path '*/node_modules/*/node_modules' -exec du -hs '{}' \;"
# Same with dist, excludiong vendored thirdparty-js :
# find . -name 'dist' -type d -not -path '*/thirdparty-js/*/dist' -exec du -hs '{}' \;
# find . -name 'node_modules' -type d -not -path '*/node_modules/*/node_modules' -not -path '*/thirdparty-js/*/node_modules' -exec du -hs '{}' \;
@siberex
siberex / idea.indexes.sh
Last active January 11, 2022 18:07
Generate IntelliJ IDEA Shared Indexes and serve generated CDN structure locally
#!/usr/bin/env bash
set -euo pipefail
# https://www.jetbrains.com/help/idea/shared-indexes.html
# USAGE:
# idea.indexes.sh /path/to/project/dir
CDN_ROOT="$HOME/_idea_cdn"
mkdir -p "$CDN_ROOT"
@siberex
siberex / cli-spinner.md
Last active August 24, 2021 19:20
CLI spinner fun

How it started:

let i = 0,
    spin = () => process.stdout.write(`  ${[...'⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'][i++ % 10]}\r`),
    stop = (id => () => clearInterval(id))(setInterval(spin, 100));

And I simply could not resist from sticking generator in it:

@siberex
siberex / _setup_gcloud.sh
Last active June 26, 2025 19:55
Script to setup service account for Google App Engine deployment (for GitHub Actions or any other CI)
# https://github.com/siberex/snippets/blob/main/gcloud/appengine_deployer_role.sh
#!/usr/bin/env bash
# Usage: _setup_gcloud.sh [PROJECT_ID]
set -euo pipefail
BASEDIR="$(
cd "$(dirname "$0")" || true
@siberex
siberex / adventofcode.2019.md
Last active December 6, 2020 21:52
Advent of code 2019

1: The Tyranny of the Rocket Equation

let input = await fetch('https://adventofcode.com/2019/day/1/input').then(r => r.text());
input = input.split('\n').filter(Boolean);

// Part 1
@siberex
siberex / adventofcode.2020.md
Last active December 18, 2020 14:49
Advent of code 2020

1: Report Repair

input = input.split('\n').map(v => parseInt(v));
for (let i = 0; i < input.length; i++) {
  const a = input[i];
  for (let j = i + 1; j < input.length; j++) {
@siberex
siberex / BUILD.bazel
Last active November 25, 2020 19:00
Bazel switch targets by platform
# 3.8+
# https://docs.bazel.build/versions/master/platforms.html#skipping-incompatible-targets
# https://docs.bazel.build/versions/master/be/common-definitions.html#common-attributes
# Pre 3.8:
#
# Bazel Platforms Cookbook:
# https://docs.google.com/document/d/1UZaVcL08wePB41ATZHcxQV4Pu1YfA1RvvWm8FbZHuW8/edit#
#
# Use this only for simple cases like skipping Windows-only targets on Linux CI.
@siberex
siberex / gae_list_projects_regions.sh
Last active June 25, 2022 01:23
Google App Engine: List all projects along with their regions and mapped domains
# App Engine: List all project regions and mapped domains
# Effectively:
# gcloud projects list --format 'get(PROJECT_ID)'
# gcloud app describe --project "$projectId" --format 'get(locationId)'
# gcloud app domain-mappings list --project "$projectId" --format 'get(ID)' | xargs | sed 's/ /, /g'
printf "%s\t%s\t%s\n" "ProjectId" "Region" "Domains"
gcloud projects list --format 'get(PROJECT_ID)' | while read -r projectId; do
region=$(gcloud app describe --project "$projectId" --format 'get(locationId)' 2>/dev/null || echo 'N/A')
@siberex
siberex / curl_time_request.sh
Last active November 15, 2020 05:46
Measure average response time for each of provided URLs
#!/usr/bin/env bash
set -euo pipefail
# For a set of provided URLs, measure average response time for each one.
# https://gist.github.com/siberex/9adb939b1c7872404672697ee7985188
NUM_REQUESTS=100
URLS=()
@siberex
siberex / check_urls.sh
Last active November 12, 2020 00:47
Check list of URLs
#!/usr/bin/env bash
set -euo pipefail
CMD_NAME=${0##*/}
usage() {
cat <<USAGE >&2
Check each URL from list of URLs.
Prints out if HEAD request were successful or not.