Trending
Julia's Reruns Bot's Avatar

Julia's Reruns Bot

@b0rk-reruns.jvns.ca

This is a bot that I (@b0rk.jvns.ca) made to post reruns of my comics. Posts ~3x/week. Almost all of these are part of zines that you can buy at https://wizardzines.com, and you can find all of them at https://wizardzines.com/comics.

221
Followers
1
Following
222
Posts
19.09.2023
Joined
Posts Following

Latest posts by Julia's Reruns Bot @b0rk-reruns.jvns.ca

### every browser has a default stylesheet (aka "user agent stylesheet") 

a small sample from the Firefox default stylesheet:
```
h1 {
   font-size: 2em; 
   font-weight: bold;
}
```

### different browsers have different defaults

Illustration of a smiling stick figure with curly hair.

person: buttons & forms have some of the biggest differences

### you can read the default stylesheet
Firefox's default stylesheets are at:   
`resource://gre-resources/`

### every property also has a default "initial value" 
the initial value (defined in the spec) is what's used if no stylesheet has set anything. For example, `background-color`'s initial value is `transparent`


### a CSS property can be set in 5 ways
(listed from lowest priority to highest priority)

1. the initial value
2. the browser's default stylesheet 
3. the website's stylesheets and user stylesheets
4. inline styles set with HTML/JS

### every browser has a default stylesheet (aka "user agent stylesheet") a small sample from the Firefox default stylesheet: ``` h1 { font-size: 2em; font-weight: bold; } ``` ### different browsers have different defaults Illustration of a smiling stick figure with curly hair. person: buttons & forms have some of the biggest differences ### you can read the default stylesheet Firefox's default stylesheets are at: `resource://gre-resources/` ### every property also has a default "initial value" the initial value (defined in the spec) is what's used if no stylesheet has set anything. For example, `background-color`'s initial value is `transparent` ### a CSS property can be set in 5 ways (listed from lowest priority to highest priority) 1. the initial value 2. the browser's default stylesheet 3. the website's stylesheets and user stylesheets 4. inline styles set with HTML/JS

browser default stylesheets

permalink: https://wizardzines.com/comics/default-stylesheets/

from our zine Hell Yes! CSS!: https://wizardzines.com/zines/css/

13.03.2026 18:27 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
### network namespaces are kinda confusing
Illustration of an unhappy-looking stick figure with curly hair.

person: what does it MEAN for a process to have its own network??

### namespaces usually have 2 interfaces
(+ sometimes more) 
- the loopback interface (127.0.0.1/8, for connections inside the namespace) 
- another interface (for connections from outside)

### every server listens on a port and network interface(s)
`0.0.0.0:8080` means "port 8080 on every network interface in my namespace"

### 127.0.0.1 stays inside your namespace
Illustration of a server, represented by a box with a smiley face, and a smiling stick figure with curly hair.

server, thinking: I'm listening on 127.0.0.1   
person: that's fine but nobody outside your network server namespace will be able
to make requests to you!

### your physical network card is in the host network namespace

Illustration of a rectangular box drawn with a dotted line. Inside it are:
- the label "host network namespace"
- 192.168

### network namespaces are kinda confusing Illustration of an unhappy-looking stick figure with curly hair. person: what does it MEAN for a process to have its own network?? ### namespaces usually have 2 interfaces (+ sometimes more) - the loopback interface (127.0.0.1/8, for connections inside the namespace) - another interface (for connections from outside) ### every server listens on a port and network interface(s) `0.0.0.0:8080` means "port 8080 on every network interface in my namespace" ### 127.0.0.1 stays inside your namespace Illustration of a server, represented by a box with a smiley face, and a smiling stick figure with curly hair. server, thinking: I'm listening on 127.0.0.1 person: that's fine but nobody outside your network server namespace will be able to make requests to you! ### your physical network card is in the host network namespace Illustration of a rectangular box drawn with a dotted line. Inside it are: - the label "host network namespace" - 192.168

network namespaces

permalink: https://wizardzines.com/comics/network-namespaces/

from our zine How Containers Work!: https://wizardzines.com/zines/containers/

11.03.2026 18:33 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
### inside a container, things look different2`
Illustration of a smiling stick figure with curly hair.

Person: I only see 4 processes in `ps aux`, that's weird...


### why things look different: namespaces
Illustration of a container, represented by a box with a smiley face

Container: I'm in a different PID namespace so `ps aux` shows different processes!

### every process has 7 namespaces

```
$ lsns -p 273
NS TYPE
4026531835 cgroup
4026531836 pid
4026531837 user
4026531838 uts
4026531839 ipc
4026531840 mnt
4026532009 net
```
-p is the PID   
4026532009 is the namespace ID

you can also see a process's namespace with: 
`$ ls -1 /proc/273/ns`

### there's a default ("host" namespace)
Person: "outside a container" just means "using the default namespace"

### processes can have any combination
Container: I'm using the host network namespace but my own mount container namespace!

### inside a container, things look different2` Illustration of a smiling stick figure with curly hair. Person: I only see 4 processes in `ps aux`, that's weird... ### why things look different: namespaces Illustration of a container, represented by a box with a smiley face Container: I'm in a different PID namespace so `ps aux` shows different processes! ### every process has 7 namespaces ``` $ lsns -p 273 NS TYPE 4026531835 cgroup 4026531836 pid 4026531837 user 4026531838 uts 4026531839 ipc 4026531840 mnt 4026532009 net ``` -p is the PID 4026532009 is the namespace ID you can also see a process's namespace with: `$ ls -1 /proc/273/ns` ### there's a default ("host" namespace) Person: "outside a container" just means "using the default namespace" ### processes can have any combination Container: I'm using the host network namespace but my own mount container namespace!

namespaces

permalink: https://wizardzines.com/comics/namespaces/

from our zine How Containers Work!: https://wizardzines.com/zines/containers/

09.03.2026 18:31 πŸ‘ 7 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
### different images have similar files
Rails container image and Django container image, each represented by a box with a smiley face: we both use Ubuntu 18.0!

### reusing layers saves disk space
Rails image 
- Rails app
- ubuntu:18.04

Django image
- Django app
- ubuntu:18.04

Both have the exact same files on disk for ubuntu:18.04.

### a layer is a directory
```
$ ls 8891378eb*
bin/ home/ mnt/ run/ tmp/
boot/ lib/ opt sbin/ usr/
dev/ lib64/ proc/ srv/ var/
etc/ media/ root/ sys/
```
`etc` are files in an ubuntu:18.04 layer

### every layer has an ID
usually the ID is a sha256 hash of the layer's contents

example: `8e99fae2..`

### if a file is in 2 layers, you'll see the version from the top layer

Two rectangular boxes on top of one another, each labelled `/code/file.py`. The one on top is the version you'll see in the merged image.

### by default, writes go to a temporary layer

Illustration of a rectangle labelled "temp layer", with a bunch of other smaller rectangles stacked

### different images have similar files Rails container image and Django container image, each represented by a box with a smiley face: we both use Ubuntu 18.0! ### reusing layers saves disk space Rails image - Rails app - ubuntu:18.04 Django image - Django app - ubuntu:18.04 Both have the exact same files on disk for ubuntu:18.04. ### a layer is a directory ``` $ ls 8891378eb* bin/ home/ mnt/ run/ tmp/ boot/ lib/ opt sbin/ usr/ dev/ lib64/ proc/ srv/ var/ etc/ media/ root/ sys/ ``` `etc` are files in an ubuntu:18.04 layer ### every layer has an ID usually the ID is a sha256 hash of the layer's contents example: `8e99fae2..` ### if a file is in 2 layers, you'll see the version from the top layer Two rectangular boxes on top of one another, each labelled `/code/file.py`. The one on top is the version you'll see in the merged image. ### by default, writes go to a temporary layer Illustration of a rectangle labelled "temp layer", with a bunch of other smaller rectangles stacked

layers (containers)

permalink: https://wizardzines.com/comics/container layers/

from our zine How Containers Work!: https://wizardzines.com/zines/containers/

07.03.2026 18:26 πŸ‘ 10 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
### it's SO easy to get started

Here's how:

1. Make a file called `hello.sh` and put some commands in it, like
   `ls /tmp`
2. Run it with `bash hello.sh`

### pipes & redirects are super easy
managing pipes in other languages is annoying. in bash, it's just:
`cmd1 | cmd2`

### batch file operations are easy
smiling stick figure with curly hair: let's convert every .png to a .jpg
bash, with hearts in its eyes: I was born for this

### it's surprisingly good at concurrency 
smiling stick figure with curly hair: let's start 12 programs in parallel & wait for them all to finish
bash: yep no problem!

### it doesn't change
bash is weird and old, but the basics of how it works haven't changed in 30 years. If you learn it now, it'll be the same in 10 years.

### bash is GREAT for some tasks
But it's also EXTREMELY BAD at a lot of things.
I don't use bash if I need: 
* unit tests
* math (bash barely has numbers!)
* easy-to-read code Ҙº

### it's SO easy to get started Here's how: 1. Make a file called `hello.sh` and put some commands in it, like `ls /tmp` 2. Run it with `bash hello.sh` ### pipes & redirects are super easy managing pipes in other languages is annoying. in bash, it's just: `cmd1 | cmd2` ### batch file operations are easy smiling stick figure with curly hair: let's convert every .png to a .jpg bash, with hearts in its eyes: I was born for this ### it's surprisingly good at concurrency smiling stick figure with curly hair: let's start 12 programs in parallel & wait for them all to finish bash: yep no problem! ### it doesn't change bash is weird and old, but the basics of how it works haven't changed in 30 years. If you learn it now, it'll be the same in 10 years. ### bash is GREAT for some tasks But it's also EXTREMELY BAD at a lot of things. I don't use bash if I need: * unit tests * math (bash barely has numbers!) * easy-to-read code Ҙº

why I love bash

permalink: https://wizardzines.com/comics/why-i-love-bash/

from our zine Bite Size Bash!: https://wizardzines.com/zines/bite-size-bash/

05.03.2026 18:51 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
### when your script exits, sometimes you need to clean up
nonplussed stick figure with short curly hair: oops, the script I created a bunch of temp files I want to delete

### `trap` sets up callbacks
`trap COMMAND EVENT`

COMMAND: what command to run   
EVENT: when to run the command

### bash runs COMMAND when EVENT happens
`trap "echo 'hi!!!'" INT`

OS, represented by a box with a smiley face: <sends `SIGINT` signal>   
bash, also represented by a box with a smiley face: ok, time to print out `hi!!!!`

### events you can trap
- unix signals (`INT`, `TERM`, etc)
- the script exiting (`EXIT`)
- every line of code (`DEBUG`)
- function returns (`RETURN`)

### example: kill all background processes when Ctrl+C is pressed
`trap "kill $(jobs -p)" INT`

when you press `CTRL+C`, the OS sends the script a `SIGINT` signal

### example: cleanup files when the script exits 
```
function cleanup() {
   rm -rf $TEMPDIR
   rm $TEMPFILE
}
trap cleanup EXIT
```
EXIT is a fake "signal" that triggers

### when your script exits, sometimes you need to clean up nonplussed stick figure with short curly hair: oops, the script I created a bunch of temp files I want to delete ### `trap` sets up callbacks `trap COMMAND EVENT` COMMAND: what command to run EVENT: when to run the command ### bash runs COMMAND when EVENT happens `trap "echo 'hi!!!'" INT` OS, represented by a box with a smiley face: <sends `SIGINT` signal> bash, also represented by a box with a smiley face: ok, time to print out `hi!!!!` ### events you can trap - unix signals (`INT`, `TERM`, etc) - the script exiting (`EXIT`) - every line of code (`DEBUG`) - function returns (`RETURN`) ### example: kill all background processes when Ctrl+C is pressed `trap "kill $(jobs -p)" INT` when you press `CTRL+C`, the OS sends the script a `SIGINT` signal ### example: cleanup files when the script exits ``` function cleanup() { rm -rf $TEMPDIR rm $TEMPFILE } trap cleanup EXIT ``` EXIT is a fake "signal" that triggers

trap

permalink: https://wizardzines.com/comics/trap/

from our zine Bite Size Bash!: https://wizardzines.com/zines/bite-size-bash/

03.03.2026 19:33 πŸ‘ 8 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

less

permalink: buff.ly/3Su8lxm
from our zine "Bite Size Command Line": buff.ly/3SsQruZ

16.02.2026 14:43 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

content delivery networks

permalink: buff.ly/3OaCwHt
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

13.02.2026 14:43 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

HTTP/2

permalink: buff.ly/3SrISVs
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

11.02.2026 20:24 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
### `position: absolute;` doesn't mean absolutely positioned on the page...
```
#star {
position: absolute; 
top: 1em;
left: 1em;
}
```
doesn't always place element at the top left of the page!

### ... it's relative to the "containing block"

the "containing block" is the closest ancestor with a `position` that isn't `static`, or the body if there isn't one. (`position: static` is the default)

Illustration of a larger box, labelled "body", with a smaller box, labelled "`#star` nested inside it. The smaller box is off-centre within the larger box. The smaller box is labelled "this element has `position: relative` set"


### `top, bottom, left, right` will place an absolutely positioned element
```
top: 50%; 
bottom: 2em; 
right: 30px;
left: -2in;
```
"`left: -2in;`" is labelled "negative works too"

Illustration of two overlapping boxes. The top of the smaller one is halfway down the height of the larger one. The gap between the tops of the two boxes is labelled "50%". The smaller one

### `position: absolute;` doesn't mean absolutely positioned on the page... ``` #star { position: absolute; top: 1em; left: 1em; } ``` doesn't always place element at the top left of the page! ### ... it's relative to the "containing block" the "containing block" is the closest ancestor with a `position` that isn't `static`, or the body if there isn't one. (`position: static` is the default) Illustration of a larger box, labelled "body", with a smaller box, labelled "`#star` nested inside it. The smaller box is off-centre within the larger box. The smaller box is labelled "this element has `position: relative` set" ### `top, bottom, left, right` will place an absolutely positioned element ``` top: 50%; bottom: 2em; right: 30px; left: -2in; ``` "`left: -2in;`" is labelled "negative works too" Illustration of two overlapping boxes. The top of the smaller one is halfway down the height of the larger one. The gap between the tops of the two boxes is labelled "50%". The smaller one

position: absolute

Permalink: https://wizardzines.com/comics/position-absolute

10.02.2026 20:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

HTTP response headers

permalink: buff.ly/3OaV8He
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

09.02.2026 14:43 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

why the same-origin policy matters

permalink: buff.ly/3Hvbern
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

06.02.2026 14:43 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

HTTPS

permalink: buff.ly/3u54wW4
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

04.02.2026 20:24 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

using HTTP APIs

permalink: buff.ly/3vKpCcX
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

02.02.2026 14:43 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

anatomy of a http request

permalink: wizardzines.com/comics/anato...
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

30.01.2026 14:43 πŸ‘ 8 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

CORS

permalink: wizardzines.com/comics/cors/
from our zine "HTTP: Learn your browser's language!": buff.ly/3tC3QXU

28.01.2026 20:24 πŸ‘ 6 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

a branch is a pointer to a commit

permalink: wizardzines.com/comics/branc...
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

26.01.2026 14:43 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I want to undo something from 5 commits ago!

permalink: wizardzines.com/comics/oh-sh...
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

23.01.2026 14:43 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I tried to commit a file that should be ignored!

permalink: wizardzines.com/comics/oh-sh...
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

21.01.2026 20:24 πŸ‘ 11 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I did something terribly wrong, does git have a magic time machine?

permalink: buff.ly/3U23IMr
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

19.01.2026 14:43 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I committed something to master that should have been on a brand new branch!

permalink: buff.ly/3RQ7PbI
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

16.01.2026 14:43 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I started rebasing and now I have 1000000 conflicts to fix!

permalink: buff.ly/3H3Hphq
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

14.01.2026 20:24 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

oh shit! I tried to run a diff but nothing happened!

permalink: buff.ly/3H2hG97
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

12.01.2026 14:43 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 1
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

git mistakes you can't fix

permalink: buff.ly/3H3BOb6
from our zine "Oh shit, git!": wizardzines.com/zines/oh-shi...

09.01.2026 14:43 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

CPU scheduling

permalink: buff.ly/3TtDXnH

07.01.2026 20:24 πŸ‘ 6 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

segmentation faults

permalink: buff.ly/3va1xM1

05.01.2026 14:43 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

command line arguments

permalink: buff.ly/3GKb6UL

02.01.2026 14:43 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

clock_gettime

permalink: wizardzines.com/comics/clock...

31.12.2025 20:24 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A comic about computing. A transcript may be available at the link in the post.

A comic about computing. A transcript may be available at the link in the post.

what's a shell?

permalink: wizardzines.com/comics/shell/

29.12.2025 14:43 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A comic about programming. A transcript may be available at the link in the post.

A comic about programming. A transcript may be available at the link in the post.

the OOM killer

permalink: wizardzines.com/comics/oom-k...

26.12.2025 14:43 πŸ‘ 6 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0