Skip to content

Instantly share code, notes, and snippets.

@geekman
geekman / rename-gerbers.cmd
Created February 14, 2020 17:23
rename KiCad gerbers to remove the layer names from filenames, just extension
::
:: Rename Gerbers from "random-crap.ext" to "project-name.ext"
:: This also means you shouldn't have two files with the same extension.
::
:: 2019.09.24 darell tan
::
@echo off
setlocal EnableDelayedExpansion
@geekman
geekman / hexdump2bin.py
Created November 18, 2019 07:50
hexdump to binary file
#
# reconstructs binary files from hex dumps
# designed to be more forgiving than `xxd -r`
# dump formats are flexible, whether grouped by 4 digits,
# with or without ASCII, etc.
#
# 2019.10.24 darell tan
#
import sys
@geekman
geekman / dumpscript-gen.py
Created November 18, 2019 07:47
minicom script generator for dumping firmware
#!/usr/bin/python2
#
# script to generate a minicom script that dumps entire flash
# problem is the stub seems to read all data into RAM first,
# so you can only do in batches
#
# 2019.10.24
# inc needs to be low enough to complete within `expect` timeout
inc = 0x20000
@geekman
geekman / bits.py
Created September 12, 2019 07:55
one-liner combining bits into an integer, the Python way
bits = [1,0,1,0,0,0,0,1]
v = reduce(lambda x, y: x | y,
[n << p for p, n in enumerate(reversed(bits))])
print '%02x' % v
@geekman
geekman / screen-hardstatus.md
Created August 6, 2019 06:08
simple GNU screen hard status line

Simple GNU screen hard status line

:hardstatus alwayslastline "%-Lw%{+d} %n%f %t %{-d}%+Lw"
  • current window is "dimmed" with %{+d} and %{-d} pair
  • %-Lw and %+Lw shows before and after current window

see

@geekman
geekman / .sigrok toy decoder.md
Last active June 28, 2023 08:17
libsigrok toy decoder

libsigrok Toy Decoder

This is a very minimal example for writing your own quick-and-dirty decoder that you can use in PulseView.

This decoder displays annotations for a signal that's made up of 1 ms units. It annotates from one signal edge to another, without regard for time. If you want to handle the actual units of time, more logic is required and that's left as an exercise for the reader.

@geekman
geekman / subst-exec.sh
Created May 30, 2019 09:23
replaces patterns like "<? cmd ?>" by executing cmd
#
# awk one-liner to replace patterns like "<? cmd ?>" by executing cmd
# handy for use in config files "templates"
#
cat <<EOF | awk '{ if (match($0, /<\?(.*)?>/)) { cmd = substr($0, RSTART+2, RLENGTH-2-2); system(cmd) } else print }'
my directory has these files:
<? ls / ?>
EOF
@geekman
geekman / ffmpeg-snippets.md
Last active April 22, 2024 13:06
some ffmpeg commands

create a list of filename,title list

for %f in (*.mp4) do @ffprobe -v error -of csv -show_entries format=filename:format_tags=title %f >> list.txt

resizing for uploading video reviews to sites

ffmpeg -i <input-file> -preset fast -crf 18 -vf scale=720:-2 -an output.mp4

flags:

  • scales to 720 x \
@geekman
geekman / strip-query-snippet.js
Created May 22, 2019 01:18
strips query string from selected URLs on page
// strip query string (or search params) from "/xyz/..". URLs
for (let a of document.querySelectorAll('a[href^="/xyz/"]')) {
let u = new URL(a.href.toString());
u.search = '';
a.href = u;
}
@geekman
geekman / faststart
Created April 26, 2019 15:36
make MP4 files stream better by moving their "moov" atom to the front
#!/bin/sh
# script to make mp4 videos start fast
# (i.e. shifting their moov atoms to the front)
FNAME=$1
[ -f "$FNAME" ] || exit 1
TMPFNAME=`mktemp -u ${FNAME}.XXXXXX`
head -c128 "$FNAME" | grep -F moov -q