#!/bin/bash
# Loop through all PDF files in the current directory
for file in *.pdf; do
# Skip if no PDF files
[ -e "$file" ] || continue
# Set output file name
output="${file%.pdf}.bw.pdf"
echo "Converting: $file -> $output"
# Ghostscript command to convert to grayscale
gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-dColorConversionStrategyForImages=/Gray \
-dAutoRotatePages=/None \
-dNOPAUSE -dBATCH -dQUIET \
-sOutputFile="$output" "$file"
done
Friday, July 18, 2025
bash ghostscript conversion of color pdfs to b&w
Wednesday, July 16, 2025
Tuesday, July 15, 2025
offline transcription/dictation on raspberry pi with vosk
I installed vosk in a venv inside a directory for nerd-dictation which is another script that works great if you want to run vosk in the background and output it into vim. Heres my transcribe.sh for running vosk-transcriber on audio files
#!/bin/bash
# Activate the virtual environment
source "$HOME/.applications/nerd-dictation/venv/bin/activate"
# Check if a file argument was provided
if [[ -z "$1" ]]; then
echo "Usage: $0 "
exit 1
fi
AUDIO_FILE="$1"
# Check that the file exists
if [[ ! -f "$AUDIO_FILE" ]]; then
echo "Error: File '$AUDIO_FILE' not found."
exit 1
fi
# Run transcription and output to file
vosk-transcriber -i "$AUDIO_FILE" -o test.txt
# Print the output to the terminal
echo "Transcription output:"
cat test.txt
heres my vosk.sh for running nerd-dictation
#!/bin/bash
# Absolute path to the project
BASEDIR="$HOME/.applications/nerd-dictation"
# Activate the virtual environment
source "$BASEDIR/venv/bin/activate"
# Run nerd-dictation with the 'begin' command
"$BASEDIR/nerd-dictation" begin
shapescript is like openscad for iphones
came across this 5mb app on the hunt for a parametric modeller for cad stuff. you can import text files extrude them, set the background green and key them out in lumafusion to add cool 3d animated text. This is my basic script:
define words import "Text.txt"
font "Menlo-Bold"
color grey
extrude {
size 2 2 0.5
metallicity 0.9
text words
}
//background green
shapescript mobile on the app store
Thursday, July 10, 2025
png to svg by ethisham niazi
a 6.99$ cad vectorizing app that seems promising for local offline use, 15mb. its nice to see something thats a one time payment instead of subscription.
heres the link to it
on the app store
Tuesday, July 8, 2025
list of tall condensed fonts for movie posters
Font Name | Style | Common Use Case | License Info |
---|---|---|---|
Bebas Neue | All-caps, tall, condensed | Action, thriller, indie posters | Free for commercial use |
League Spartan (Condensed) | Bold, geometric, narrow | Modern drama, minimalist films | Open source (OFL) |
Nexa Light / Thin | Light, clean, minimalist | Sci-fi, tech, design-driven | Commercial license needed |
Futura Condensed | Geometric, classic sans | Sci-fi, classic films | Commercial license needed |
Gotham Narrow / Light | Modern, versatile sans | Drama, thriller, biopics | Commercial license (Hoefler) |
Roboto Condensed Light | Digital, minimal | Sci-fi, modern thrillers | Free (Google Fonts) |
Helvetica Neue Thin | Sleek, iconic sans | Drama, minimalist | Commercial license (Adobe) |
DIN Condensed | Industrial, narrow, bold | Thriller, noir, military themes | Commercial license needed |
Montserrat Thin | Elegant, modernist | Romance, indie, drama | Free (Google Fonts) |
Eurostile Condensed | Futuristic, squarish | Cyberpunk, tech, space themes | Commercial license needed |
minimal raspberry pi os file manager lacked an unzip option
The fix - thunar archive plugin
I knew I needed xarchiver but despite being installed it wasn't showing up. what i needed was the plugin version
sudo apt install xarchiver thunar-archive-plugin
converting csv to xlsx on ios
csvxlsx converter app on the ios app store
Affinity publisher on ipad doesn't support csv imports. Datamerge is only on the desktop version. You can import xlsx spread sheets. I prefer being able to quickly enter in data using textastic as csv or shortcuts actions to streamline the prompting of forms for quickly capturing things. I opened up an xlsx made from some free csv converter websites hoping it would look like xml but it was unreadable junk. Thankfully I found a small app that does exactly what I want locally it was only a buck and it doesn't ask for permissions or take up tons of space. numbers is great but its huge. This is perfect because its only 2mb. Hopefully affinity adds csv support but for now im happy with this work around for prettying up my tables.
Learn To Speak Typographers Slang - A Glossary of Type
Term | Definition |
---|---|
Baseline | The invisible line on which most letters sit. |
Cap Height / Cap Line | The top boundary of uppercase letters. |
X‑Height | The height of lowercase letters (like “x”), excluding ascenders and descenders. |
Ascender | The part of a lowercase letter that extends above the x‑height (e.g., “h”, “b”). |
Descender | The part of a lowercase letter that extends below the baseline (e.g., “g”, “y”). |
Serif | Small strokes attached at the end of letterforms; found in serif typefaces. |
Sans‑Serif / Grotesque | Typefaces without serifs; “Grotesque” is an early sans‑serif category. |
Slab Serif | Serif typeface with thick, block‑like serifs. |
Monospaced | A font where each character takes up the same horizontal width. |
Ligature | Two or more characters joined into a single glyph (e.g., “fi”, “æ”). |
Kerning | Adjustment of space between specific letter pairs. |
Tracking | Uniform adjustment of spacing across a range of characters. |
Leading (Line‑Spacing) | Vertical space between baselines of consecutive lines of text. |
Weight | The thickness of strokes in a typeface (e.g., Light, Bold). |
Italic / Oblique | A slanted version of the font; italics are redesigned, obliques are mechanically slanted. |
Typeface vs. Font | Typeface is the design; font refers to a specific file or style implementation. |
Glyph | A single visual representation of a character in a font. |
Alternate Glyph / Swash | Optional stylized or decorative glyph variations. |
Stroke / Stem | The lines that make up a glyph; stems are the main vertical strokes. |
Bowl / Counter / Aperture | Enclosed or partially enclosed spaces in letters; apertures are open counters. |
Arm / Leg / Shoulder / Spine | Specific stroke parts—arms and legs extend, shoulders curve, the spine is the central curve of an “S”. |
Apex / Vertex | The upper (apex) or lower (vertex) pointed junctions of strokes. |
Arc | A curved stroke element within letters. |
Foot / Spur | The base of a stroke or a small projection from a curved stroke. |
Ball / Teardrop Terminal | Rounded decorative stroke endings, often found on serif fonts. |
Joint / Crotch | The point where two strokes meet, like in “v”. |
Double‑Story | Letters like “a” or “g” with two counters (e.g., Times “a”). |
Point Size | The size of the font, measured in points (~1/72 inch). |
Em / En (units) | Em equals the current font size; En is half that. Used for spacing metrics. |
Condensed / Expanded | Width-variant styles of a typeface. |
Contrast | Variation between thick and thin strokes in a font. |
Typographic Color / Rhythm | The overall texture or ‘grayness’ of text blocks. |
Hierarchy / Scale | Visual importance created through size, weight, etc. |
Legibility / Readability | How easily text can be read, influenced by spacing, x‑height, etc. |
Copyfitting / Optimal Line Length | Adjusting font and layout for readability—ideal line length is typically 50–70 chars. |
Widows / Orphans / Rivers | Layout issues—lone lines or distracting vertical spaces in paragraph text. |
Dingbats / Fleurons | Symbol or ornamental fonts (bullet fonts, decorative elements). |
Drop Cap | A large initial letter spanning multiple lines. |
Pilcrow / Ellipsis / Octothorp | Special characters like ¶, …, and #. |
Raster / Anti‑aliasing | Pixel rendering of fonts and smoothing techniques on screens. |
Hinting | Instructions in fonts improving legibility at small sizes. |
Static / Kinetic / Fluid Typography | Static, animated, or responsive typographic styles. |
Axis / Stress | The orientation of stroke thickness variation in letterforms. |
Small Caps | Capital letterforms scaled to x‑height. |
Subscript / Superscript | Smaller characters positioned below or above the baseline. |
Gutter | Spacing between columns in multi-column layouts. |
Justify | Aligning text evenly to both left and right margins. |
Typography | The craft and technique of arranging type. |
GSUB (Glyph Substitution Table) | OpenType table that substitutes glyphs—used for ligatures, alternates, contextual forms. :contentReference[oaicite:1]{index=1} |
GPOS (Glyph Positioning Table) | OpenType table that handles precise glyph placement—kerning, mark positioning, cursive attachments. :contentReference[oaicite:2]{index=2} |
GDEF (Glyph Definition Table) | OpenType table that classifies glyphs (base, mark, ligature) and defines caret positions. |
BASE (Baseline Table) | OpenType table for baseline alignment across scripts (e.g., roman, ideographic, hanging). |
JSTF (Justification Table) | OpenType table that supports script-specific justification (e.g., Arabic kashida). |
Unicode | The universal character encoding standard covering nearly all scripts and symbols. |
Blackletter | A Gothic script style (Textura, Fraktur) with medieval calligraphic texture. |
Transitional Serif | Serif style between old-style and modern (e.g., Baskerville), moderate contrast. |
Old‑style Serif | Serif faces with diagonal stress and bracketed serifs; inspired by Renaissance writing. |
Didone / Modern Serif | High-contrast serif fonts with vertical stress and fine hairlines (e.g., Bodoni). |
Display Typeface | Highly stylized fonts for headlines or large sizes, often too decorative for body text. |
Text Typeface | Fonts optimized for body text and readability at small sizes. |
Geometric Sans‑Serif | Sans fonts based on simple geometric shapes (e.g., Futura). |
Humanist Sans‑Serif | Sans faces with calligraphic influence and subtle stroke contrast. |
Neo‑Grotesque Sans‑Serif | Neutral, modern sans-serifs (e.g., Helvetica, Univers). |
Script Typeface | Typefaces that mimic cursive handwriting or calligraphy. |
Variable Font | A single font file that supports multiple axes (weight, width, optical size). |
Ligature Caret | A marker in ligature glyphs to define cursor/caret placement. |
Contextual Alternates (calt) | An OpenType feature for substituting glyphs based on context. |
Stylistic Set (ssXX) | Predefined alternate glyph sets that can be turned on manually. |
Oldstyle Figures (onum) | Numerals with varied heights and alignments for flowing text. |
Lining Figures (lnum) | Numerals aligned to cap height, consistent with uppercase letters. |
Proportional Figures (pnum) | Numbers with variable widths designed for visual harmony. |
Tabular Figures (tnum) | Monospaced numerals for tables and aligned columns. |
Discretionary Ligatures (dlig) | Decorative ligatures applied optionally for stylistic effect. |
Fractions (frac / afrc) | OpenType features that auto-create fraction glyphs. |
Swash Capitals | Highly decorative uppercase glyphs, often with flourishing strokes. |
Initial/Final Forms (init / fina) | Contextual forms used at the beginning or end of words (common in Arabic). |
Split Diacritics | Diacritics positioned separately from base glyphs (e.g., Vietnamese). |
Glyph Coverage | The set of Unicode blocks and scripts supported by a font. |
Script Tag | An OpenType label identifying the script for a set of features (e.g., “latn”). |
Feature Tag | A four-letter code defining OpenType features (e.g., kern, liga). |
Lookup Table | A GSUB/GPOS structure defining specific substitutions or positioning rules. |
Coverage Table | Specifies which glyphs are affected by a lookup in GSUB/GPOS. |
Fixing Screen Resolution On Raspberry Pi 4 Running Wayland Labwc and Raindrop With i3wm
Arandr was scriptable and made sense after being replaced with raindrop I couldn't find any info on setting up a config for raindrop the drop in Arandr replacement. First I added an exec no startup id to load raindrop on login with i3 but I finally came up with a better solution.
exec --no-startup-id xrandr --output HDMI-1 --mode 1680x1050
The raspberry pi loads perfectly when I am on my smaller computer monitor but when on the TV text would be cut off on the top of the screen. This was bugging me for ages. I'm glad I finally have this sorted out so all I have to do is plug it in and it auto starts
Wednesday, July 2, 2025
getting mixxx to recognize the fc310 as hid
you need to flick the switch on the back of the controller to d instead of x for direct mode instead of x mode
you get a permissions error about usb devices to fix that create a udev rule
sudo vim /etc/udev/rules.d/99-logitech-f310.rules
# Logitech F310 Gamepad in DirectInput mode
KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c216", MODE="0666", GROUP="plugdev"
sudo udevadm control --reload
sudo udevadm trigger
sudo usermod -aG plugdev $USER
my hid mapping
its cool not needing to use antimicrox, this is as far as I got with the mapping. I was hoping to map the superknobs to controll the delay but have'nt figured it out yet
I still need to add the left/right nudge functionality
Tuesday, July 1, 2025
stuff I added to the mixxx custom keyboard config.
shift 1-8 for samples, removed the loop stuff because i never use it,
ctrl vx turn deck 1 super knob up and down c resets
ctrl r angle and m are up and down for deck 2 super knob
ctrl c and ctrl left angle bracket turn super knob send to zero
[Sampler1]
cue_gotoandplay Shift+!
[Sampler2]
cue_gotoandplay Shift+@
[Sampler3]
cue_gotoandplay Shift+#
[Sampler4]
cue_gotoandplay Shift+$
[Sampler5]
cue_gotoandplay Shift+%
[Sampler6]
cue_gotoandplay Shift+^
[Sampler7]
cue_gotoandplay Shift+&
[Sampler8]
cue_gotoandplay Shift+*
// -----------
// THE SUPER KNOB
// -----
[QuickEffectRack1_[Channel1]_Effect1]
enabled b
[QuickEffectRack1_[Channel1]]
super1_down Ctrl+x
super1_set_default Ctrl+c
super1_up Ctrl+v
[QuickEffectRack1_[Channel2]_Effect1]
enabled n
[QuickEffectRack1_[Channel2]]
super1_down Ctrl+m
super1_set_default Ctrl+,
super1_up Ctrl+.
How To Edit Metadata Using Clipboard Managers, Puddletags And Autohotkey
Its like a spreadsheet its really easy to see everything this way.
trying a few clipboard managers out so I don't need to manually type everything out each time.
diodon, parcellite, copyq
out of all of these my favorite is autohotkey
With it I can easily set it up to label genres like shift 1 jungle shift 2 footwork etc..
Monday, June 30, 2025
you can't safely eject usbs on ios
kind of freaks me out for djing.
tau lets you back up your database to iCloud or dropbox
it's stored locally within the app.
be careful because it might pull down an old version and overwrite your hard work setting cue points and adjusting beat grids.
They say the safest thing is to turn off your device to prevent corrupting it.
- always make backups!
Tau dj mapping for dj control compact
my hercules dj control compact mapping
They got rid of the tempo faders on this controller. The software workaround is to hold shift and turn the jog wheel but the default mapping doesn't do that. This map fixes that but at the expense of being able to finely nudge which isn't great but its works if you just use the touch screen for that.
Saturday, June 28, 2025
fontforge masterclass
michael harmon is the man for making this fontforge tutorial series on youtube.
Friday, June 27, 2025
renoise defaulting to hdmi on raspberry pi 4 fix
install pipewire-jack and run pw-jack renoise to run it with the jack settting but have it bridged to run in the back with pipewire
Thursday, June 26, 2025
beorg and organice encryption with gnupg
Its a 3.99 IAP
beorg encryption
I usually sync everything in icloud and the notes app lets you lock notes
testing it out by using dropbox and syncing notes using organice.200ok.ch
to decrypt on linux:
gpg -d mynote.org
you can use the iSH app to decrypt also
apk add gnupg
gpg -d mynote.org > output.org
that redirects the output from the terminal to a file
Wednesday, June 25, 2025
djay player pro em fix
I was sad
when this app stoped working it was a one time purchase light version without dvs and midi but still very wicked. I was able to still download it and install from under purchase history but it would stuuter.
the fix:
under output options enable experimental 96k output
im so glad it works again
they no longer aell dj player pro
tried to install that and it wouldnt let me subscribe.
the app is now a one time purchase of 50$ called tau djv1