2025-11-18
Last month I published Think Weirder: The Year's Best Science Fiction Ideas , a 16-story anthology featuring Greg Egan, Isabel J. Kim, Ray Nayler, Caroline M. Yoachim, and twelve other wonderful authors. The book ended up being the #1 New Release in the Short Stories Anthologies category for a short time on Amazon, outselling many other newly released short story anthologies published by the big NYC publishers with large marketing departments.
I'm not a professional publisher. I have a full-time job and two small kids, so all of this work happened after my kids went to sleep. I had to use my time judiciously, which meant creating an efficient process. Fortunately I'm a programmer, and it turns out that programming skills translate surprisingly well to book publishing. This post is about how I built a complete publishing pipeline using Python, YAML files, and LaTeX — and why you might want to do something similar if you're considering publishing a book. I know that by writing this I'll have my choices questioned by professional designers, but hopefully the software concepts will be helpful.
My initial thought: can I really do ALL of this?
When I started this project, I had some worries. Professional publishers have entire departments of specialists. How could I possibly handle all of that myself?
The answer turned out to be: build tools that automate the repetitive parts, and use simple file formats that make everything transparent and debuggable.
Step 1: Tracking stories with plain text files
The first challenge was tracking hundreds of candidate stories from different magazines. I read 391 stories published in 2024 before selecting the final 16. That's a lot of stories to keep organized.
I could have used a spreadsheet, but I went with plain YAML files instead. Here's why this worked well for me:
Git-friendly : Every decision I made was tracked in version control
... continue reading