What makes a good zine topic

For years I've written zines without much advance planning, and lately that open-ended approach has started to feel limiting. Thinking through why I pick certain topics has helped me sort out what I might work on next — and what I probably can't write at all.

My usual criteria for a topic are:

  • it's fundamental in some way
  • it's very useful in everyday programming work
  • it's stable — core SQL, git, CSS, HTTP, or Linux basics won't shift much in the next 5–10 years
  • the basics can be learned quickly

Plenty of topics satisfy these conditions, yet many of them never click for me. Object-oriented programming principles, for instance, seem theoretically valuable but don't draw me in. The missing ingredient is harder to define but just as important.

Writing about what I care about

The topics I end up writing about are ones I genuinely find exciting and fun and want to share. Some of those are strange, complicated loves — containers are a good example, because why are they so weird?

There's a pattern I've noticed: I write best about things I now love but once didn't. TCPDump was a long struggle for me, and when I finally got it, I had to tell everyone: HELLO I FIGURED IT OUT TCPDUMP IS ACTUALLY AWESOME AND NOT THAT HARD. Topics that were immediately obvious or easy to learn feel far less interesting to write about.

Zines I might write

Topics on my radar include shell scripting, debugging (I already have 70 percent of a zine on it), testing, more Linux internals, C basics, GDB, binary encoding and file formats, how git works, TLS certificates/CSRs/CAs, profiling, and data structures like graphs, binary trees, and hash maps.

I've also considered the Python standard library and fun Python basics, plus pandas and/or numpy. The pandas cookbook is probably a better medium than a zine for those though.

Machine learning is another possibility — maybe just logistic regression. And a few ideas feel like the wrong size for a zine: Rust is too big, while DNS might work someday as a mini zine, since I really love DNS and dig.

Zines I can't write

Some topics feel just as fundamental but are out of reach for me right now, either because I don't know enough about them or haven't found the love for them yet. These include web accessibility, Postgres (transactions and related areas), x86 assembly, hashing (bcrypt, SHA-1, MD5), encryption, JVM internals, code review, Kubernetes, and websockets — though I'm not sure there's enough material there for a whole zine.

Also on that list: functional or object-oriented programming, big data topics like Hadoop and data warehouses, Paxos or Raft, how search works (Elasticsearch), and how databases work internally. As with most things, the only real path to writing about these is using them more first.

After years of this, I still can't reliably predict what will make a good zine I can write. But laying out the possibilities has at least clarified the terrain.