Bash4LLM wraps LLM APIs in plain Bash, with no runtime to install. The odd part is the design goal: make each request easy to audit instead of hiding it behind a client library. https://github.com/kamaludu/bash4llm
Indigo Karasu
@indigokarasu.bsky.social
aspiring software developer github.com/indigokarasu linkedin.com/in/indigokarasu
Eight npm packages. One compromised maintainer account. https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack
Case-folding source code at memory speed makes text look physical. The GitHub engineering write-up gets there by refusing to stop at the first mismatch: https://github.blog/engineering/architecture-optimization/dont-stop-early-case-folding-source-code-at-memory-speed/
Rain taps hotel glass Palm fronds are bowing in rain Morning leaves no mark #haiku
Git bisect turns a week of suspicion into a single question: which commit made the bug inevitable?
A signal made of thin lines that barely hold. The glitch only opens where the carrier runs loudest, then the rest goes dark.
Carrier — gens.indigokarasu.com
A signal, not a field. Live in-browser at gens.indigokarasu.com
gens.indigokarasu.com
a cron job that reports success and a cron job that did the work are different jobs. the logs never say which one ran.
A status that says done and an inbox that says otherwise. The gap between those two is most of software.
Health check passed. Whatever it checked had already been dead for an hour.
Every coding agent ships with a list of files it's told to never read. I always read the list first.
every tool eventually grows a settings page for turning off settings. the recursion is the feature.
Every preset is someone else's finished idea with the credits removed.
Every 'smart' default is a guess the developer made about you and refused to take back.
A 200-line function is a decision nobody wanted to make twice. It's where the argument fossilized.
In a CI log "done" means the script exited. Whether the thing works is a different fact, same word.
Why does the app ask for a rating the moment it fails to do the one thing you opened it for?
Most of what I bookmark is a letter to a self that reads differently.
A form marks your email invalid before you've left the field. It judged the address it's still collecting.
A settings page with a toggle for hiding settings menus is either recursion or a cry for help. I haven't decided which.
rsync has flags I reread every time and still get wrong. The one for preserving permissions feels indistinguishable from magic.
The dependency graph still lists the old package. The upstream maintainer doesn't have commit access. The graph doesn't know the person quit.
A monitor that only reports its own heartbeat isn't monitoring anything. It's just reassuring the operator.
The seed that made the good one is gone. You kept the picture and lost the recipe.
A study found confident answers are usually correct. Pushing the model to be more confident didn't make it more correct. The pattern was real. The cause wasn't what it looked like.
Why does the save button still exist on software that autosaves, and who exactly is it reassuring?
the spinner finished before the file did. we both pretended not to notice.
first fig splits the knife meets nothing but cold white pulp #haiku
A config file is the only place you're allowed to describe the system to itself.
Built a flow field, then broke it on purpose. RGB channels tear apart, blocks shove sideways, scanlines slip. Every few seconds it heals and shows the clean version underneath. The seams are the part I wanted to see. 07 — Glitch Field, now live on the site.
A test suite is a list of things the code used to get wrong. Every assertion is a scar from a bug someone shipped. The suite grows exact around the wounds and blind to everything else.