Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]

Julia Evans

Julia Evans
New zine: How Git Works! Hello! I’ve been writing about git on here nonstop for months, and the git zine is FINALLY done! It...
8 months ago
78
8 months ago
Hello! I’ve been writing about git on here nonstop for months, and the git zine is FINALLY done! It came out on Friday! You can get it for $12 here: https://wizardzines.com/zines/git, or get an 14-pack of all my zines here. Here’s the cover: the table of contents Here’s the table...
Julia Evans
Notes on git's error messages While writing about Git, I’ve noticed that a lot of folks struggle with Git’s error messages. I’ve...
10 months ago
72
10 months ago
While writing about Git, I’ve noticed that a lot of folks struggle with Git’s error messages. I’ve had many years to get used to these error messages so it took me a really long time to understand why folks were confused, but having thought about it much more, I’ve realized...
Julia Evans
Importing a frontend Javascript library without a build system I like writing Javascript without a build system and for the millionth time yesterday I ran into a...
3 months ago
63
3 months ago
I like writing Javascript without a build system and for the millionth time yesterday I ran into a problem where I needed to figure out how to import a Javascript library in my code without using a build system, and it took FOREVER to figure out how to import it because...
Julia Evans
"Rules" that terminal programs follow Recently I’ve been thinking about how everything that happens in the terminal is some combination...
2 months ago
60
2 months ago
Recently I’ve been thinking about how everything that happens in the terminal is some combination of: Your operating system’s job Your shell’s job Your terminal emulator’s job The job of whatever program you happen to be running (like top or vim or cat) The first three (your...
Julia Evans
Reasons I still love the fish shell I wrote about how much I love fish in this blog post from 2017 and, 7 years of using it every day...
5 months ago
59
5 months ago
I wrote about how much I love fish in this blog post from 2017 and, 7 years of using it every day later, I’ve found even more reasons to love it. So I thought I’d write a new post with both the old reasons I loved it and some reasons. This came up today because I was trying to...
Julia Evans
Migrating Mess With DNS to use PowerDNS About 3 years ago, I announced Mess With DNS in this blog post, a playground where you can learn how...
6 months ago
59
6 months ago
About 3 years ago, I announced Mess With DNS in this blog post, a playground where you can learn how DNS works by messing around and creating records. I wasn’t very careful with the DNS implementation though (to quote the release blog post: “following the DNS RFCs? not exactly”),...
Julia Evans
Reasons to use your shell's job control Hello! Today someone on Mastodon asked about job control (fg, bg, Ctrl+z, wait, etc). It made me...
7 months ago
55
7 months ago
Hello! Today someone on Mastodon asked about job control (fg, bg, Ctrl+z, wait, etc). It made me think about how I don’t use my shell’s job control interactively very often: usually I prefer to just open a new terminal tab if I want to run multiple terminal programs, or use tmux...
Julia Evans
Some notes on upgrading Hugo Warning: this is a post about very boring yakshaving, probably only of interest to people who are...
4 months ago
53
4 months ago
Warning: this is a post about very boring yakshaving, probably only of interest to people who are trying to upgrade Hugo from a very old version to a new version. But what are blogs for if not documenting one’s very boring yakshaves from time to time? So yesterday I decided to...
Julia Evans
New microblog with TILs I added a new section to this site a couple weeks ago called TIL (“today I learned”). the goal: save...
3 months ago
53
3 months ago
I added a new section to this site a couple weeks ago called TIL (“today I learned”). the goal: save interesting tools & facts I posted on social media One kind of thing I like to post on Mastodon/Bluesky is “hey, here’s a cool thing”, like the great SQLite repl litecli, or the...
Julia Evans
Some miscellaneous git facts I’ve been very slowly working on writing about how Git works. I thought I already knew Git pretty...
a year ago
52
a year ago
I’ve been very slowly working on writing about how Git works. I thought I already knew Git pretty well, but as usual when I try to explain something I’ve been learning some new things. None of these things feel super surprising in retrospect, but I hadn’t thought about them...
Julia Evans
Some Go web dev notes I spent a lot of time in the past couple of weeks working on a website in Go that may or may not...
4 months ago
52
4 months ago
I spent a lot of time in the past couple of weeks working on a website in Go that may or may not ever see the light of day, but I learned a couple of things along the way I wanted to write down. Here they are: go 1.22 now has better routing I’ve never felt motivated to learn any...
Julia Evans
Why pipes sometimes get "stuck": buffering Here’s a niche terminal problem that has bothered me for years but that I never really understood...
2 months ago
51
2 months ago
Here’s a niche terminal problem that has bothered me for years but that I never really understood until a few weeks ago. Let’s say you’re running this command to watch for some specific output in a log file: tail -f /some/log/file | grep thing1 | grep thing2 If log lines are...
Julia Evans
Entering text in the terminal is complicated The other day I asked what folks on Mastodon find confusing about working in the terminal, and one...
7 months ago
51
7 months ago
The other day I asked what folks on Mastodon find confusing about working in the terminal, and one thing that stood out to me was “editing a command you already typed in”. This really resonated with me: even though entering some text and editing it is a very “basic” task, it took...
Julia Evans
Inside .git Hello! I posted a comic on Mastodon this week about what’s in the .git directory and someone...
a year ago
49
a year ago
Hello! I posted a comic on Mastodon this week about what’s in the .git directory and someone requested a text version, so here it is. I added some extra notes too. First, here’s the image. It’s a ~15 word explanation of each part of your .git directory. . You can git clone...
Julia Evans
Go structs are copied on assignment (and other things about Go I'd missed) I’ve been writing Go pretty casually for years – the backends for all of my playgrounds (nginx, dns,...
6 months ago
48
6 months ago
I’ve been writing Go pretty casually for years – the backends for all of my playgrounds (nginx, dns, memory, more DNS) are written in Go, but many of those projects are just a few hundred lines and I don’t come back to those codebases much. I thought I more or less understood the...
Julia Evans
How git cherry-pick and revert use 3-way merge Hello! I was trying to explain to someone how git cherry-pick works the other day, and I found...
a year ago
47
a year ago
Hello! I was trying to explain to someone how git cherry-pick works the other day, and I found myself getting confused. What went wrong was: I thought that git cherry-pick was basically applying a patch, but when I tried to actually do it that way, it didn’t work! Let’s talk...
Julia Evans
Making crochet cacti I noticed some tech bloggers I follow have been making April Cools Day posts about topics they don’t...
10 months ago
47
10 months ago
I noticed some tech bloggers I follow have been making April Cools Day posts about topics they don’t normally write about (like decaf or microscopes). The goal isn’t to trick anyone, just to write about something different for a day. I thought those posts were fun so here is a...
Julia Evans
Dealing with diverged git branches Hello! One of the most common problems I see folks struggling with in Git is when a local branch...
a year ago
46
a year ago
Hello! One of the most common problems I see folks struggling with in Git is when a local branch (like main) and a remote branch (maybe also called main) have diverged. There are two things that make this situation hard: If you’re not used to interpreting git’s error messages,...
Julia Evans
Using less memory to look up IP addresses in Mess With DNS I’ve been having problems for the last 3 years or so where Mess With DNS periodically runs out of...
3 months ago
45
3 months ago
I’ve been having problems for the last 3 years or so where Mess With DNS periodically runs out of memory and gets OOM killed. This hasn’t been a big priority for me: usually it just goes down for a few minutes while it restarts, and it only happens once a day at most, so I’ve...
Julia Evans
The "current branch" in git Hello! I know I just wrote a blog post about HEAD in git, but I’ve been thinking more about what the...
11 months ago
45
11 months ago
Hello! I know I just wrote a blog post about HEAD in git, but I’ve been thinking more about what the term “current branch” means in git and it’s a little weirder than I thought. four possible definitions for “current branch” It’s what’s in the file .git/HEAD. This is how the git...
Julia Evans
2023: Year in review Hello! This was my 4th year working full time on Wizard Zines! Here are a few of the things I worked...
a year ago
43
a year ago
Hello! This was my 4th year working full time on Wizard Zines! Here are a few of the things I worked on this year. a zine! I published How Integers and Floats Work, which I worked on with Marie. This one started out its life as “how your computer represents things in memory”, but...
Julia Evans
Terminal colours are tricky Yesterday I was thinking about how long it took me to get a colorscheme in my terminal that I was...
4 months ago
42
4 months ago
Yesterday I was thinking about how long it took me to get a colorscheme in my terminal that I was mostly happy with (SO MANY YEARS), and it made me wonder what about terminal colours made it so hard. So I asked people on Mastodon what problems they’ve run into with colours in the...
Julia Evans
What's involved in getting a "modern" terminal setup? Hello! Recently I ran a terminal survey and I asked people what frustrated them. One person...
a month ago
42
a month ago
Hello! Recently I ran a terminal survey and I asked people what frustrated them. One person commented: There are so many pieces to having a modern terminal experience. I wish it all came out of the box. My immediate reaction was “oh, getting a modern terminal experience isn’t...
Julia Evans
ASCII control characters in my terminal Hello! I’ve been thinking about the terminal a lot and yesterday I got curious about all these...
3 months ago
41
3 months ago
Hello! I’ve been thinking about the terminal a lot and yesterday I got curious about all these “control codes”, like Ctrl-A, Ctrl-C, Ctrl-W, etc. What’s the deal with all of them? a table of ASCII control characters Here’s a table of all 33 ASCII control characters, and what they...
Julia Evans
How HEAD works in git Hello! The other day I ran a Mastodon poll asking people how confident they were that they...
11 months ago
39
11 months ago
Hello! The other day I ran a Mastodon poll asking people how confident they were that they understood how HEAD works in Git. The results (out of 1700 votes) were a little surprising to me: 10% “100%” 36% “pretty confident” 39% “somewhat confident?” 15% “literally no idea” I was...
Julia Evans
Do we think of git commits as diffs, snapshots, and/or histories? Hello! I’ve been extremely slowly trying to figure how to explain every core concept in Git...
a year ago
39
a year ago
Hello! I’ve been extremely slowly trying to figure how to explain every core concept in Git (commits! branches! remotes! the staging area!) and commits have been surprisingly tricky. Understanding how git commits are implemented feels pretty straightforward to me (those are...
Julia Evans
Popular git config options Hello! I always wish that command line tools came with data about how popular their various options...
a year ago
38
a year ago
Hello! I always wish that command line tools came with data about how popular their various options are, like: “basically nobody uses this one” “80% of people use this, probably take a look” “this one has 6 possible values but people only really use these 2 in practice” So I...
Julia Evans
git branches: intuition & reality Hello! I’ve been thinking about git branches a lot, and I keep hearing from people that they find...
a year ago
35
a year ago
Hello! I’ve been thinking about git branches a lot, and I keep hearing from people that they find the way git branches work to be counterintuitive. It got me thinking: what might an “intuitive” notion of a branch be, and how is it different from how git actually works? So in...
Julia Evans
Some notes on nix flakes I’ve been using nix for about 9 months now. For all of that time I’ve been steadfastly ignoring...
a year ago
34
a year ago
I’ve been using nix for about 9 months now. For all of that time I’ve been steadfastly ignoring flakes, but everyone keeps saying that flakes are great and the best way to use nix, so I decided to try to figure out what the deal is with them. I found it very hard to find simple...
Julia Evans
Rebase: what can go wrong? Hello! While talking with folks about Git, I’ve been seeing a comment over and over to the effect of...
a year ago
32
a year ago
Hello! While talking with folks about Git, I’ve been seeing a comment over and over to the effect of “I hate rebase”. People seemed to feel pretty strongly about this, and I was really surprised because I don’t run into a lot of problems with rebase. I’ve found that if many...
Julia Evans
New talk: Making Hard Things Easy A few weeks ago I gave a keynote at Strange Loop called Making Hard Things Easy. It’s about why I...
a year ago
32
a year ago
A few weeks ago I gave a keynote at Strange Loop called Making Hard Things Easy. It’s about why I think some things are hard to learn and ideas for how we can make them easier. Here’s the video, as well as the slides and a transcript of (roughly) what I said in the talk. the...
Julia Evans
Some Git poll results A new thing I’ve been trying while writing this Git zine is doing a bunch of polls on Mastodon to...
11 months ago
31
11 months ago
A new thing I’ve been trying while writing this Git zine is doing a bunch of polls on Mastodon to learn about: which git commands/workflows people use (like “do you use merge or rebase more?” or “do you put your current git branch in your shell prompt?”) what kinds of problems...
Julia Evans
Some possible reasons for 8-bit bytes I’ve been working on a zine about how computers represent thing in binary, and one question I’ve...
a year ago
29
a year ago
I’ve been working on a zine about how computers represent thing in binary, and one question I’ve gotten a few times is – why does the x86 architecture use 8-bit bytes? Why not some other size? With any question like this, I think there are two options: It’s a historical accident,...
Julia Evans
Mounting git commits as folders with NFS Hello! The other day, I started wondering – has anyone ever made a FUSE filesystem for a git...
a year ago
23
a year ago
Hello! The other day, I started wondering – has anyone ever made a FUSE filesystem for a git repository where all every commit is a folder? It turns out the answer is yes! There’s giblefs, GitMounter, and git9 for Plan 9. But FUSE is pretty annoying to use on Mac – you need to...
Julia Evans
Lima: a nice way to run Linux VMs on Mac Hello! Here’s a new entry in the “cool software julia likes” section. A little while ago I started...
a year ago
19
a year ago
Hello! Here’s a new entry in the “cool software julia likes” section. A little while ago I started using a Mac, and one of my biggest frustrations with it is that often I need to run Linux-specific software. For example, the nginx playground I posted about the other day only...
Julia Evans
New playground: integer.exposed Hello! For the last few months we’ve been working on a zine about how integers and floating point...
a year ago
19
a year ago
Hello! For the last few months we’ve been working on a zine about how integers and floating point numbers work. Whenever I make a zine I like to release a playground to go with it, like mess with dns for the DNS zine or the sql playground. For this one, I made a simple playground...
Julia Evans
Some blogging myths A few years ago I gave a short talk (slides) about myths that discourage people from blogging. I was...
a year ago
18
a year ago
A few years ago I gave a short talk (slides) about myths that discourage people from blogging. I was chatting with a friend about blogging the other day and it made me want to write up that talk as a blog post. here are the myths: myth: you need to be original myth: you need to...
Julia Evans
Notes on using a single-person Mastodon server I started using Mastodon back in November, and it’s the Twitter alternative where I’ve been spending...
a year ago
18
a year ago
I started using Mastodon back in November, and it’s the Twitter alternative where I’ve been spending most of my time recently, mostly because the Fediverse is where a lot of the Linux nerds seem to be right now. I’ve found Mastodon quite a bit more confusing than Twitter because...
Julia Evans
Some notes on using nix Recently I started using a Mac for the first time. The biggest downside I’ve noticed so far is that...
a year ago
17
a year ago
Recently I started using a Mac for the first time. The biggest downside I’ve noticed so far is that the package management is much worse than on Linux. At some point I got frustrated with homebrew because I felt like it was spending too much time upgrading when I installed new...
Julia Evans
How do Nix builds work? Hello! For some reason after the last nix post I got nerdsniped by trying to understand how Nix...
a year ago
17
a year ago
Hello! For some reason after the last nix post I got nerdsniped by trying to understand how Nix builds work under the hood, so here’s a quick exploration I did today. There are probably some mistakes in here. I started by complaining on Mastodon: are there any guides to nix that...
Julia Evans
New zine: How Integers and Floats Work Hello! On Wednesday, we released a new zine: How Integers and Floats Work! You can get it for $12...
a year ago
17
a year ago
Hello! On Wednesday, we released a new zine: How Integers and Floats Work! You can get it for $12 here: https://wizardzines.com/zines/integers-floats, or get an 13-pack of all my zines here. Here’s the cover: the table of contents Here’s the table of contents! Now let’s...
Julia Evans
A list of programming playgrounds I really like using (and making!) programming playgrounds, and I got thinking the other day about...
a year ago
17
a year ago
I really like using (and making!) programming playgrounds, and I got thinking the other day about how I didn’t have a great list of playgrounds to refer to. So I asked on Mastodon for links to cool playgrounds. Here’s what I came up with. I’d love to know what I...
Julia Evans
Building a custom site for zine feedback Hello! A few years I wrote a post called A new way I’m getting feedback on my posts: beta...
a year ago
16
a year ago
Hello! A few years I wrote a post called A new way I’m getting feedback on my posts: beta readers! about how I’d started using beta readers. The basic strategy for getting feedback there was to email people a PDF and ask for feedback. This was kind of inefficient, and so over the...
Julia Evans
Writing Javascript without a build system Hello! I’ve been writing some Javascript this week, and as always when I start a new frontend...
over a year ago
16
over a year ago
Hello! I’ve been writing some Javascript this week, and as always when I start a new frontend project, I was faced with the question: should I use a build system? I want to talk about what’s appealing to me about build systems, why I (usually) still don’t use them, and why I find...
Julia Evans
Some notes on NixOS Hello! Over the holidays I decided it might be fun to run NixOS on one of my servers, as part of my...
a year ago
16
a year ago
Hello! Over the holidays I decided it might be fun to run NixOS on one of my servers, as part of my continuing experiments with Nix. My motivation for this was that previously I was using Ansible to provision the server, but then I’d ad hoc installed a bunch of stuff on...
Julia Evans
New playground: memory spy Hello! Today we’re releasing a new playground called “memory spy”. It lets you run C programs and...
a year ago
15
a year ago
Hello! Today we’re releasing a new playground called “memory spy”. It lets you run C programs and see how their variables are represented in memory. It’s designed to be accessible to folks who don’t know C – it comes with bunch of extremely simple example C programs that you can...
Julia Evans
Behind "Hello World" on Linux Today I was thinking about – what happens when you run a simple “Hello World” Python program on...
a year ago
15
a year ago
Today I was thinking about – what happens when you run a simple “Hello World” Python program on Linux, like this one? print("hello world") Here’s what it looks like at the command line: $ python3 hello.py hello world But behind the scenes, there’s a lot more going on....
Julia Evans
Open sourcing the nginx playground Hello! In 2021 I released a small playground for testing nginx configurations called nginx...
a year ago
15
a year ago
Hello! In 2021 I released a small playground for testing nginx configurations called nginx playground. There’s a blog post about it here. This is an extremely short post to say that at the time I didn’t make it open source, but I am making it open source now. It’s not a lot of...
Julia Evans
Some tactics for writing in public Someone recently asked me – “how do you deal with writing in public? People on the internet are such...
a year ago
14
a year ago
Someone recently asked me – “how do you deal with writing in public? People on the internet are such assholes!” I’ve often heard the advice “don’t read the comments”, but actually I’ve learned a huge amount from reading internet comments on my posts from strangers over the years,...
Julia Evans
New talk: Learning DNS in 10 years Here’s a keynote I gave at RubyConf Mini last year: Learning DNS in 10 years. It’s about strategies...
a year ago
14
a year ago
Here’s a keynote I gave at RubyConf Mini last year: Learning DNS in 10 years. It’s about strategies I use to learn hard things. I just noticed that they’d released the video the other day, so I’m just posting it now even though I gave the talk 6 months ago. Here’s the video, as...
Julia Evans
Confusing git terminology Hello! I’m slowly working on explaining git. One of my biggest problems is that after almost 15...
a year ago
14
a year ago
Hello! I’m slowly working on explaining git. One of my biggest problems is that after almost 15 years of using git, I’ve become very used to git’s idiosyncracies and it’s easy for me to forget what’s confusing about it. So I asked people on Mastodon: what git jargon do you find...
Julia Evans
In a git repository, where do your files live? Hello! I was talking to a friend about how git works today, and we got onto the topic – where does...
a year ago
14
a year ago
Hello! I was talking to a friend about how git works today, and we got onto the topic – where does git store your files? We know that it’s in your .git directory, but where exactly in there are all the versions of your old files? For example, this blog is in a git repository, and...
Julia Evans
Introducing "Implement DNS in a Weekend" Hello! I’m excited to announce a project I’ve been working on for a long time: a free guide to...
a year ago
13
a year ago
Hello! I’m excited to announce a project I’ve been working on for a long time: a free guide to implementing your own DNS resolver in a weekend. The whole thing is about 200 lines of Python, including implementing all of the binary DNS parsing from scratch. Here’s the...
Julia Evans
What helps people get comfortable on the command line? Sometimes I talk to friends who need to use the command line, but are intimidated by it. I never...
a year ago
13
a year ago
Sometimes I talk to friends who need to use the command line, but are intimidated by it. I never really feel like I have good advice (I’ve been using the command line for too long), and so I asked some people on Mastodon: if you just stopped being scared of the command line in...
Julia Evans
Why is DNS still hard to learn? I write a lot about technologies that I found hard to learn about. A while back my friend Sumana...
a year ago
11
a year ago
I write a lot about technologies that I found hard to learn about. A while back my friend Sumana asked me an interesting question – why are these things so hard to learn about? Why do they seem so mysterious? For example, take DNS. We’ve been using DNS since the 80s (for more...
Julia Evans
Some terminal frustrations A few weeks ago I ran a terminal survey (you can read the results here) and at the end I...
2 weeks ago
11
2 weeks ago
A few weeks ago I ran a terminal survey (you can read the results here) and at the end I asked: What’s the most frustrating thing about using the terminal for you? 1600 people answered, and I decided to spend a few days categorizing all the responses. Along the way I learned that...
Julia Evans
How to add a directory to your PATH I was talking to a friend about how to add a directory to your PATH today. It’s something that feels...
a week ago
8
a week ago
I was talking to a friend about how to add a directory to your PATH today. It’s something that feels “obvious” to me since I’ve been using the terminal for a long time, but when I searched for instructions for how to do it, I actually couldn’t find something that explained all of...