NoRaincheck

Shell and Fonts

Iosevka - because I work off my laptop screen alot, specifically a custom variant.

For general “stuff”, I currently enjoying the “gothic” router font aesthetic, which is used in this blog.

For my shell:

Themes

Catppuccin has started to replace Dracula as my daily driver, though I still use some Dracula themes like the terminal which I believe to be superior option still. Alternatives I’ve considered are Rosé Pine which I’ve briefly toyed with, but haven’t taken seriously.

Text Completion via LLMs

llama-vscode with llama.cpp. It’s proven to be good enough and gets out of the way (plus I can self-host this). I’ve had good success using Devstral-Small or even a general LLM like gemma-3-12b variants

1llama-server \
2    -m qwen2.5-coder-3b-q8_0.gguf \
3    --port 8012 -ngl 99 -fa -ub 1024 -b 1024 \
4    --ctx-size 0 --cache-reuse 256

I’ve also started using aider for /ask commands. Though I generally don’t use local LLMs for agentic code editing as my daily driver.

1uvx --from aider-install aider \
2  --model openai/default \
3  --openai-api-base http://127.0.0.1:8080/ --openai-api-key NONE \
4  --map-tokens 1024 \
5  --no-show-model-warnings \
6  --no-gitignore

VSCode Settings

I generally like to leave things to default, since moving to other people’s computer and workspaces things don’t get confusing. Though the keybindings.json I generally stick to is the terminal focus variant:

 1[
 2  "files.exclude": { "**/.git": false },
 3  "workbench.colorTheme": "Catppuccin Macchiato",
 4  "editor.fontFamily": "'Iosevka Curly', Menlo, monospace",
 5  "go.inlayHints.assignVariableTypes": true,
 6  "go.inlayHints.compositeLiteralFields": true,
 7  "go.inlayHints.compositeLiteralTypes": true,
 8  "go.inlayHints.constantValues": true,
 9  "go.inlayHints.functionTypeParameters": true,
10  "go.inlayHints.parameterNames": true,
11  "rust-analyzer.cargo.features": ["all"]
12]

gitconfig

Stolen from here.

 1# ~/.gitconfig
 2[column]
 3    ui = auto
 4[branch]
 5    sort = -committerdate
 6[tag]
 7    sort = version:refname
 8[init]
 9    defaultBranch = main
10[diff]
11    algorithm = histogram
12    colorMoved = plain
13    mnemonicPrefix = true
14    renames = true
15[push]
16    default = simple
17    autoSetupRemote = true
18    followTags = true
19[fetch]
20    prune = true
21    pruneTags = true
22    all = true
23
24[help]
25    autocorrect = prompt
26[commit]
27    verbose = true
28[rerere]
29    enabled = true
30    autoupdate = true
31[core]
32    excludesfile = ~/.gitignore
33[rebase]
34    autoSquash = true
35    autoStash = true
36    updateRefs = true

GPG

1brew install gpg
2gpg --gen-key
3# by default for self stuff, use symmetric encryption

Ensure in ~/.zshrc

GPG_TTY=$(tty)
export GPG_TTY

Example usage:

1echo foo | gpg --symmetric > foo.gpg
2gpg --decrypt foo.gpg
3# to clipboard
4gpg --decrypt foo.gpg | pbcopy

fnox with age+yubikey

To do this, I’m using age with age-plugin-yubikey

1brew install age age-plugin-yubikey fnox

To make it work with fnox do the startup with age-plugin-yubikey. Ensure that the resutling age1yubikey1... is placed in ~/.config/fnox/age.txt.

When you go through the fnox init the steps should be straight forward to follow. The resulting file should look something like:

1[providers.age]
2type = "age"
3recipients = ["age1yubikey1..."]

Misc

stats, because why not?
Insomnia, postman, but self-hosted
KeePass, self-hosted password manager
Obsidian for taking notes, with Harper LSP Plugin

I’ve been keeping a 10+ year old computer alive. Pale Moon has been amazing for this.