Julia Evans
@b0rk.jvns.ca
41K followers 320 following 6.7K posts
programming and exclamation marks blog: jvns.ca zines: wizardzines.com
Posts Media Videos Starter Packs
b0rk.jvns.ca
one way I might think of it is that 1% people are good at building developer tooling for themselves and others and I’m not. Like I have the technical skills to build this script but I never would have thought of it github.com/mjdominus/gi...
b0rk.jvns.ca
I’ve never understood how it’s possible to customize your dev environment to suit you in a really micro way

I’m not a good UX designer. If i’m trying to customize something in my editor it’s probably because another editor has an interaction pattern that I like that I’m trying to copy.
b0rk.jvns.ca
I’m not sure about the 1% thing. I’ve actually tried to switch away from vim to an IDE (atom, sublime, VS Code) many times, but it never stuck because I like how stable and fast vim is.

I do think that as I get older I have less and less patience for tinkering with configuration.
b0rk.jvns.ca
thanks these are very good helix posts, learned about some great features
b0rk.jvns.ca
thanks, I appreciate having that to refer to if I end up going back to neovim!
b0rk.jvns.ca
fixed that one too, thanks!
b0rk.jvns.ca
here are some notes based on a very vague memory of my attempts to set this up 5 months ago: gist.github.com/jvns/b1dba4e...
b0rk.jvns.ca
my issues with vim.lsp.config may have been related to refusing to have any Lua code in my neovim config, not sure. I still only use a .vimrc
b0rk.jvns.ca
i’ll try to come up with some notes! i did try vim.lsp.config unsuccessfully but I don’t remember what happened, I can try to dig it up.

I’ve kind of given up on trying out new vim plugins unless there’s an “obvious” contender that everyone agrees is the best so i didn’t try any search alternatives
b0rk.jvns.ca
notes on switching to Helix from vim jvns.ca/blog/2025/10...
b0rk.jvns.ca
watching this was such a fun way to learn a little about Ethernet
tracketpacer.bsky.social
what happens if u cut 4 wires out of an ethernet cable & then plug it into yr PC
b0rk.jvns.ca
it's silly because "this is why it feels good to me to do those things" was right there
b0rk.jvns.ca
I use Affinity Designer right now! I used to use the Notability ipad app before that, and the Squid Android app before that
b0rk.jvns.ca
meet the terminal emulator wizardzines.com/comics/meet-...

(from The Secret Rules of the Terminal, out now! (wizardzines.com/zines/termin...)
your terminal emulator has two main jobs

    turn your actions (typing & clicking) into bytes and send them
    receive bytes and display them visually

Illustration of a terminal emulator, with a winking cursor face, and a program, represented by a box with a smiley face. The program has a heart above it, and there are arrows going back and forth between them labelled “bytes”
a little bit of history

it’s called an “emulator” because in the 80s a “terminal” was a separate machine from the computer

Illustration of a bulky old monitor, with a keyboard attached with a spiral cord, and a wire running to a panl of buttons and displays, labelld “mainframe”. There are arrows going back and forth between them labelled “bytes”

We still use the same 80s protocol!
what are these “bytes”?

the bytes are either:

    text (like cat blah.txt)
    escape codes (for example to tell the terminal what colour to display the text in)
    control characters example Ctrl+C is the byte 3)

it’s in charge of copy and paste

your terminal emulator lets you select text and copy/paste it (usually with Ctrl+Shift+C (Linux) or Cmd+C (Mac))

(copy & paste tips on page 18!)
it manages colours and fonts!

some terminal emulators come with a big theme library of different colourschemes!

if yours doesn’t, this site has colourschemes for many terminal emulators: iterm2colorschemes.com
fun fact: how Ctrl-X gets translated to bytes

Ctrl-A => 1
Ctrl-B => 2
...
Ctrl-Z => 26

Ctrl is the only modifier key I trust in the terminal, all of the others can work differently depending on the situation
b0rk.jvns.ca
ah yeah I imported some tweets from Twitter using
@en.blueark.app and it causes more confusion than I'd like. If you click on it you can see the "original" date it was posted (in 2013)
b0rk.jvns.ca
haha i’m going to tell everyone that’s the reason
b0rk.jvns.ca
it's in there! :)
b0rk.jvns.ca
added a cheat sheet to the official Git website

(with a lot of help from other folks who work on the website)

git-scm.com/cheat-sheet
Git Cheat Sheet
git-scm.com
b0rk.jvns.ca
TERM

wizardzines.com/comics/term/

(from "The Secret Rules of the Terminal", out now! wizardzines.com/zines/termin...)
different terminal emulators use different escape codes

terminal emulator 1: if you print out ESC[2J I’ll clear the screen!

terminal emulator 2: for me it’s ESC[HESC[J!
your system has a database called “terminfo” with escape codes in it

how if plays out when you press Ctrl+L to clear the screen:

program, with a little heart over it, thinking:
ah, she wants fo clear the screen! I’ll look up how to do that in the terminfo database…

(on my machine, the database is in /usr/share/terminfo)

program: ESC[HESC[J

terminal emulator, thinking: ok, clearing the screen!
how programs know what terminal you’re using: TERM

your terminal emulator sets the TERM environment variable when it starts

fun fact: terminal emulators often say they’re “xterm-256color” even if they’re not
this can break when SSHing into an old system with a new terminal emulator

(in a VERY annoying way)

happy little stick fiture: I am using ghostty

program, with a little heart over it: NOPE never heard of it
some ways to fix TERM

    install the terminfo file for your terminal emulator on the system
    use a different terminal emulator
    just set TERM=xterm-256color, it’ll often sort of work