Here are my programming zines! (what’s a zine?) Click on the cover of any of them to get a summary.
They all have a PDF you can read on your computer and a print version (print directions here) . Many of them are free, and the newer ones are $10.
Descriptions of all the zines
Do you want to get really good at your job? Me too. This zine is about how I learn new things about programming. It discusses:
- how to ask awesome questions
- reading the source code
- debugging skills
- how to design software
- and more!
Cover art by Vladimir Kašiković
Want to get better at profiling & tracing your programs on Linux?
perf is a super useful tool, but
it’s fairly complicated and I found it hard to get started with. Over the last 4 years, I’ve learned
a lot about how perf works, and I’ve compressed what I know into this zine for you!
You’ll learn how you can use perf to profile programs in many different programming languages (C, node.js, Java, Rust, and more!), how to count any kernel event you’re interested in (syscalls! network packets sent!), how to analyze the data that perf gives you, and more!
This is a delightful 24-page zine of comics about Linux / networking / systems! It covers a huge variety of topics – assembly! the CAP theorem! copy on write! directories & symlinks! DNS! floating point! IPv6! the OSI model! MAC addresses! memory allocation! man pages! mesos! mutexes! packets! packets! unix permissions!
The great thing about this zine is that – it’s just a bunch of unrelated comics, so you’re bound to find something interesting in it :)
Ever wanted to know how to use tcpdump, but were intimidated by all the command line options? I was too! But then I learned it, and it wasn’t as bad as I thought. In this zine we’ll explain:
- what kinds of questions you can answer with tcpdump
- how to interpret tcpdump output
- which command line arguments are the really important ones
- how to write a BPF filter to filter tcpdump output
There’s a Russian translation.
Cover art by Vladimir Kašiković (an awesome illustrator).
This is a zine about COMPUTER NETWORKING! I spent a very long time learning how networking works (what happens when you download a picture from the internet? It turns out, a lot!) So I wrote a zine about it!
Cover art by the amazing Lee Baillie.
strace is my favorite program. I think that it doesn’t get enough attention from programmers, so I wrote a zine about it to teach more people about how to use it.
You can buy strace stickers.
This is a zine about some of my favorite Linux debugging tools, especially tools that I don’t think are as well-known as they should be. It covers
ngrep! And there’s a whole section on
perf because perf is the best.
If you don’t know what any of those tools I just mentioned are – PERFECT. You are who this zine is for!!! Read it and find out why I love them! Also, a lot of these tools happen to work on OS X :)
There are a lot of Linux tracing systems. I was extremely confused about the relationship between perf/ftrace/bcc/LTTng/uprobes/kprobes/BPF, etc. What are all these words? What do they mean? This zine breaks it down for you.
If you’re interested in this zine you may also like the blog post Linux tracing systems and how they fit together.
Production machine learning
This is a tiny zine, not as fancy as the others. It has some comics about rules to follow when doing machine learning in production.
If you like it, you should read the fantastic PDF that it’s based on: Rules of Machine Learning: Best Practices for ML Engineering, which I found out about thanks to Avi Bryant.
What's a zine?
According to Wikipedia:
A fanzine (blend of fan and magazine or -zine) is a nonprofessional and nonofficial publication produced by fans of a particular cultural phenomenon (such as a literary or musical genre) for the pleasure of others who share their interest.
I love programming and debugging tools (is that a “cultural phenomenon? I don’t know!“), so I make sometimes make fanzines about how much I love them and give them away. When I have time (and the printing budget) I like to give them out as handouts in my talks.
The easiest way to read any of these is on your computer.
But the best way to read them is to print it out, staple it, fold it, read it, and then give it to a friend. It turns out it’s way easier to convince your friends to read a physical thing that is in front of them.
Printers are kind of annoying, but people do successfully print them and send me pictures.
They’re all available under a creative commons license (CC BY-NC-SA), so you can print as many as you want to give away.
To print any of these:
- open the print version
- print double sided, choose to flip on the “long edge”
I have a lot of other drawings about programming. You can find them at https://drawings.jvns.ca.