Skip to content

Instantly share code, notes, and snippets.

@chr15m
chr15m / vintage-old-school-console-effect-css.html
Created March 15, 2019 07:41
Vintage old-school console effect boilerplate HTML and CSS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<title>Vintage console</title>
<script>
function log(message) {
document.getElementById("log").textContent += message + "\n";
}
@chr15m
chr15m / promises.cljs
Created December 17, 2023 08:11
Run a promise returning function over a sequence sequentially
(ns promises
{:clj-kondo/config '{:lint-as {promsea.core/let clojure.core/let
promesa.core/doseq clojure.core/doseq
promesa.core/loop clojure.core/loop
promesa.core/recur clojure.core/recur}}}
(:require [promesa.core :as p]))
(def panel-choices [1 2 3 4 5])
; simple test function returns a promise with doubled input
@chr15m
chr15m / bash-hash-map.sh
Last active April 12, 2023 00:10
Hash map / dictionary / associative array implementation for bash
#!/bin/bash
# Bash hash-map which works in Bash 3.
# WARNING: this code is useless and you should not use it. See the comments.
# Hashing function from Adam Katz: https://stackoverflow.com/a/12945518
ht() {
local h=0 i
for (( i=0; i < ${#1}; i++ )); do
let "h=( (h<<5) - h ) + $(printf %d \'${1:$i:1})"
@chr15m
chr15m / find-pis
Created December 12, 2016 08:01
Find Raspberry Pi devices on your local networks.
#!/bin/sh
# get broadcast addresses for each network
net=`ifconfig | grep -o -E "Bcast:(.*?) " | cut -f2 -d":"`
# loop over networks running the scan
for n in $net;
do
# first find SSH machines silently to prime the arp table
nmap -T4 -n -p 22 --open --min-parallelism 100 "$n/24" | grep -e "scan report for" -e "ssh" > /dev/null
@chr15m
chr15m / Makefile
Created February 27, 2020 13:14
Makefile rules to activate Python virtualenv for the whole Makefile
# get makefile's own path
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir := $(dir $(mkfile_path))
# add virtualenv in folder "virtualenv" to the path
export PATH := $(mkfile_dir)/virtualenv/bin:$(PATH)
export VIRTUAL_ENV=$(mkfile_dir)/virtualenv
example: something.py
python something.py # <- this will be called with virtualenv activated
@chr15m
chr15m / dht-ping.sh
Created May 6, 2018 09:24
BitTorrent mainline DHT UDP ping shell script example
echo -n $'d1:ad2:id20:\x23\x71\x0c\x1c\xb4\x50\x7d\x87\x29\xb8\x3f\x87\x2c\xc6\xa2\xa4\x4c\x39\x73\x67e1:q4:ping1:t1:01:y1:qe' | nc -u router.utorrent.com 6881
@chr15m
chr15m / extract-latest-log-date.awk
Last active May 13, 2022 23:46
Extract only the latest log lines from apache/nginx logs
#!/usr/bin/awk -f
# Usage:
# zcat -f access.log.* | ./extract-latest-log-date.awk > latest-log.txt
BEGIN {
# pre-compute months field lookup
m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
for(o=1;o<=m;o++){
months[d[o]]=sprintf("%02d",o)
@chr15m
chr15m / extract-modplug-channel-names.py
Created March 28, 2022 03:19
Extract channel names from xm or it files saved with modplug tracker
from sys import argv
f = open(argv[1], "rb").read()
i = f.index(bytearray("CNAM", "utf8"))
for n in range(3):
x = f[i+n*20+8:i+n*20+28].decode("utf8")
print(n, x)
@chr15m
chr15m / git-cloc
Last active January 14, 2022 02:29
Count lines of code in your git repo
#!/bin/sh
# Count the lines of source code checked into your repository
# Requires the `cloc` command as a dependency.
# You can pass extra arguments to cloc like this:
# git cloc --exclude-dir=build --exclude-ext=js
git ls-tree -r `git branch | grep '^*' | colrm 1 2` --name-only | sed 's/.*/"&"/' | xargs cloc "$@"
@chr15m
chr15m / outlined-drop-shadow-header.html
Created December 28, 2021 13:46
Outlined drop-shadow header demo
<!doctype html>
<html lang="en-us">
<head>
<title>Fat font drop shadow.</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="mobile-web-app-capable" content="yes">
<meta name="description" content="Pure CSS fat outline letters with hard drop shadow.">
<style>
@import url('https://fonts.googleapis.com/css2?family=Sigmar+One&display=swap');