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 Human-readable: I could open any file in a text editor and understand what I was looking at Easy to build...
First seen: 2025-11-18 21:51
Last seen: 2025-11-19 17:00