Tell candidates what to expect from your job interviews

In my last job, I helped with a few projects (like brag documents and the engineering levels) to help make the engineering culture a little more inclusive, and I want to talk about one of them today: making the interview process a little easier to understand for candidates.I work … | Continue reading


@jvns.ca | 3 years ago

entr: rerun your build when files change

This is going to be a pretty quick post – I found out about entr relatively recently and I felt like WHY DID NOBODY TELL ME ABOUT THIS BEFORE?!?! So I’m telling you about it in case you’re in the same boat as I was.There’s a great explanation of the tool with lots of examples on … | Continue reading


@jvns.ca | 3 years ago

How does SQLite work? Part 2: btrees

Welcome back to fun with databases! InPart 1of this series, we learned that:SQLite databases are organized into fixed-size pages. I made anexample database which had 1k pages.The pages are all part of a kind of tree called a btree.There are two kinds of pages: interior pages and … | Continue reading


@jvns.ca | 3 years ago

How Does Sqlite Work?

This evening the fantastic Kamaland I sat down to learn a little more about databases than we didbefore.I wanted to hack on SQLite, because I’veused it before, it requires no configuration or separate serverprocess, I’d been told that its source code is well-written andapproachab … | Continue reading


@jvns.ca | 3 years ago

A little bit of plain Javascript can do a lot

I’ve never worked as a professional frontend developer, so even though I’ve been writing HTML/CSS/JS for 15 years for little side projects, all of the projects have been pretty small, sometimes I don’t write any Javascript for years in between, and I often don’t quite feel like I … | Continue reading


@jvns.ca | 3 years ago

What happens when you update your DNS?

I’ve seen a lot of people get confused about updating their site’s DNS records to change the IP address. Why is it slow? Do you really have to wait 2 days for everything to update? Why do some people see the new IP and some people see the old IP? What’s happening?So I wanted to w … | Continue reading


@jvns.ca | 3 years ago

Questions to help people decide what to learn

For the last few months, I’ve been working on and off on a way to help people evaluate their own learning & figure out what to learn next.This past week I built a new iteration of this: https://questions.wizardzines.com, which today has 2 sets of questions: questions about UDP qu … | Continue reading


@jvns.ca | 3 years ago

Understand (A Little) about TCP

This isn’t about understanding everything about TCP or reading through TCP/IP Illustrated. It’s about how a little bit of TCP knowledge is essential. Here’s why.When I was at the Recurse Center, I wrote a TCP stack in Python (and wrote about what happens if you write a TCP stack … | Continue reading


@jvns.ca | 3 years ago

Metaphors in man pages

.nowrap { white-space: nowrap; padding: 0px; } This morning I was watching a great talk by Maggie Appleton where she addresses a question about metaphors that I’ve had sometimes. In her words, “Aren’t metaphors just a frivolous distraction? Why would I pollute my [concepts] with … | Continue reading


@jvns.ca | 4 years ago

Dissecting an SSL Certificate

Hello! In my networking zine (which everyone will be able to see soon), there is a page about TLS/SSL (basically this tweet). But as happens when you write 200 words about a thing on a page, there is a lot more interesting stuff to say. So in this post we will dissect an SSL cert … | Continue reading


@jvns.ca | 4 years ago

Why strace doesn't work in Docker

Continue reading


@jvns.ca | 4 years ago

New zine: How Containers Work!

Continue reading


@jvns.ca | 4 years ago

When debugging, your attitude matters

Continue reading


@jvns.ca | 4 years ago

Getting started with shaders: signed distance functions

Continue reading


@jvns.ca | 4 years ago

Questions you can ask about compensation

Continue reading


@jvns.ca | 4 years ago

Surviving Meetings While Remote

Continue reading


@jvns.ca | 4 years ago

New zine: Become a SELECT Star!

Continue reading


@jvns.ca | 4 years ago

PaperWM: tiled window management for GNOME

Continue reading


@jvns.ca | 4 years ago

2019: Year in review

Continue reading


@jvns.ca | 4 years ago

"server" is hard to define

Continue reading


@jvns.ca | 4 years ago

How tracking pixels work

Continue reading


@jvns.ca | 4 years ago

Challenge: find Twitter memes with suffix arrays

Continue reading


@jvns.ca | 4 years ago

Solutions to the tiny window manager challenge

Continue reading


@jvns.ca | 4 years ago

Challenge: Write a bouncy window manager

Continue reading


@jvns.ca | 4 years ago

What makes a programming exercise good?

Continue reading


@jvns.ca | 4 years ago

How containers work: overlayfs

Continue reading


@jvns.ca | 4 years ago

Some notes on vector drawing apps

Continue reading


@jvns.ca | 4 years ago

Some research on shipping print zines

Continue reading


@jvns.ca | 4 years ago

SQLite is really easy to compile

Continue reading


@jvns.ca | 4 years ago

Print box set of my first 7 zines

Continue reading


@jvns.ca | 4 years ago

SQL queries don't start with SELECT

Continue reading


@jvns.ca | 4 years ago

Zine revenue for 2019

Continue reading


@jvns.ca | 4 years ago

Notes on building SQL exercises

Continue reading


@jvns.ca | 4 years ago

Taking a year to explain computer things

Continue reading


@jvns.ca | 4 years ago

New zine: HTTP: Learn your browser's language!

Continue reading


@jvns.ca | 4 years ago

How to put an HTML page on the internet

Continue reading


@jvns.ca | 4 years ago

How to write zines with simple tools

Continue reading


@jvns.ca | 4 years ago

Git Exercises: Navigate a Repository

Continue reading


@jvns.ca | 4 years ago

curl exercises

Continue reading


@jvns.ca | 4 years ago

Keep a Brag Doc

Continue reading


@jvns.ca | 4 years ago

What does debugging a program look like?

Continue reading


@jvns.ca | 4 years ago

Gzip and Poetry =

Continue reading


@jvns.ca | 4 years ago

Why are monoidal categories interesting?

Continue reading


@jvns.ca | 5 years ago

New zine: Bite Size Networking!

Continue reading


@jvns.ca | 5 years ago

Organizing this blog into categories

Continue reading


@jvns.ca | 5 years ago

!!Con 2019: submit a talk!

Continue reading


@jvns.ca | 5 years ago

Networking tool comics!

Continue reading


@jvns.ca | 5 years ago

So you want to be a wizard

Continue reading


@jvns.ca | 5 years ago