@@@ @@@ @@@ @@@
# Writing a book
in 2018 February 22nd 2018 • [Front-end London][] {.footer} [Front-end London]: https://www.frontendlondon.co.uk/archive#fel45 @@@ # Writing a _technical_
book in 2018 February 22nd 2018 • [Front-end London][] {.footer} [Front-end London]: https://www.frontendlondon.co.uk/archive#fel45 @@@ # A _developer_
_writing_ a book
printed on _paper_ in an open source way @@@ # A journey about
a *web developer* and
a *book publisher*. Not so much about how painful it is to write an actual 300 pages book.
Watch [What I learned writing a lousy tech book][] (WTD 2014). {.footer} [What I learned writing a lousy tech book]: https://www.youtube.com/watch?v=w1L2SgQuv6Q
## Hi, I'm **Thomas** A 🥖🧀 living in 🇬🇧 @@@ ## software designer full stack engineer, user research, open source,
agile facilitation, mentoring, etc. [https://thom4.net]() • [@thom4parisot](https://twitter.com/thom4parisot) {.footer} @@@ ## ~~BBC R&D~~ dtc innovation a not-for-profit **cooperative company**
open source and open data projects
Bordeaux • London • Montréal [dtc-innovation.org](https://dtc-innovation.org/) {.footer}
## Context • Writer Experience • Modular Tooling • Publishers • Community Engagement @@@ # 🕐 2008 @@@ ## Me: Fancy a short essay on blah? ## Publisher: Sure! Actually a _book_ would be better! ## Me: 😅 @@@ @@@ ![](images/book.png) @@@ @@@ @@@ @@@ @@@ # 🕐 2014 @@@ ## Me: Fancy a _Node.js_ book? ## Publisher: Sure! send me your _ODT_ copy in 6 months. ## Me: 😅
## Context • **Writer Experience** • Modular Tooling • Publishers • Community Engagement @@@ ## **Playful** Learning by doing, fully working examples. @@@ ## **Friendly** No assumption on who the reader is, close to the common language. @@@ ## **Open** To read online, to contribute, to review. @@@ ## What does it mean,
to write a _book as a software_ application? @@@ ```sh git clone https://github.com/thom4parisot/nodebook ``` @@@ @@@ @@@ @@@ ## _Comfortable_ syntax [Asciidoc][] predates Markdown. [Asciidoctor][] is a superset written in Ruby and JavaScript. [Asciidoc]: http://www.methods.co.nz/asciidoc/ [Asciidoctor]: https://asciidoctor.org/ @@@ ```adoc = Hello, AsciiDoc! :author: Doc Writer <doc@example.com> :toclevel: 4 An introduction to http://asciidoc.org[AsciiDoc]. == First Section * item 1 * item 2 [source,ruby] puts "Hello, World!" ``` @@@ ## _Comfortable_ writing software @@@ @@@ ## _Comfortable_ code editor @@@ @@@ @@@ @@@ ## ~~Developing~~ Writing in the open @@@ @@@ @@@
## Context • Writer Experience • **Modular Tooling** • Publishers • Community Engagement @@@ ## Writing _Code_ @@@ @@@ @@@ @@@ ## Code _quality_ for free @@@ @@@ ## Asciidoc on GitHub is not enough @@@ @@@ ## _Building_ the book ```sh $ make build-html ``` @@@ @@@ ## _Automating_ all the way Repeated manual tasks are good candidates. @@@ @@@ @@@ @@@ ## _Packaged_ code and content What if I could do `npm install nodebook`? @@@ @@@ @@@ ## _Media_ query A ~~picture~~ video is worth 1000 words (when you can play a video) @@@ @@@ @@@ @@@ ## Built with Asciidoctor.js Building a Node.js book with Node.js 🙌 @@@ @@@ ## ✨ Extending _Asciidoctor.js_ ✨ @@@ ## _Interactive_ code Run and tweak code in your browser. @@@ @@@ @@@ ## Grab it on _npm_ 👉 [npmjs.com/asciidoctor-extension-interactive-runner][runner] [runner]: http://npmjs.com/asciidoctor-extension-interactive-runner @@@ ## Copy/paste bash commands ![](images/asciidoctor-bash-dollar.png) Hat tip to [Remy Sharp][]
👉 [remysharp.com/2017/03/27/dollar-in-code-examples][dollar-code] {.footer} [dollar-code]: https://remysharp.com/2017/03/27/dollar-in-code-examples [Remy Sharp]: https://remysharp.com/ @@@ ## MDN web docs _macro_ Expand it to an admonition block • eg: `mdn::global[RegExp]` @@@ ![](images/asciidoc-macro-rendered.png) @@@ ![](images/asciidoc-macro-source.png)
## Context • Writer Experience • Modular Tooling • **Publishers** • Community Engagement @@@ ## Publishers are good at _publishing_ Sourcing authors • Styling ODT files • Sending to printer • Shipping to stores • Payroll and taxes @@@ ## Publishers could be good at _GitHub_ Text reviews (grammar, spelling) • tasks automation @@@ @@@ @@@ ## Good at _books_ @@@ @@@ ## Less good at _dealing with content_ @@@ @@@ @@@ ## _Hamster wheel_ syndrome Not enough time nor vision to streamline
## Context • Writer Experience • Modular Tooling • Publishers • **Community Engagement** @@@ ## 2017 writing residency 3 months writing in _trains_, visiting _friends_ and learning from _peers_. @@@ ![](images/nomadic-residency-ping.png) @@@ ![](images/nomadic-residency-thankyou.png) @@@ ## _Meetups_ Reality check • each crowd has their own problems/culture/focuses. @@@ ![](images/nomadic-residency-meetup.png) @@@ ## _Workshops_ 2h mob programming sessions • reading out loud •
 pair writing • code reviews @@@ @@@ @@@ @@@ ## _Energy_ management Writing is strenuous. We have a _different pace_. Finding a balance in writting _alone_, _social_ workshops and _triaging_ issues on GitHub.
# Wrap up @@@ ## _No_ dialogue ➡️ _poor_ writing experience Publishers in hamster wheels • Writers don't know about alternatives. @@@ @@@ ## Writing _correlates_ tooling Text ∞ Feedback ∞ Feature ∞ Feedback @@@ ## _Derivable_ content Paper (offline) • web (interactive) • npm (all in one) @@@ ## _Debuggable_ content Agile practices apply to writing. @@@ ## Modularity Building blocks _on top of_ content. @@@ ## What about _non-developer_ writers? @@@ @@@ ## _Licensing_ is fuzzy Do contributors get paid for a paragraph? Or raising issues on GitHub? @@@ ## _Balance_ Pacing out the _content_ structure, writing _pace_. Finishing things helps! ~~~~ _Failed_ attempts: Nights + week-ends, part time, etc. Reminder: writing long form is strenuous (at least for me). @@@ ## Writing should be _fun_ If it is not, it's about making it a _creative activity_. @@@ ## Next: _ship it_! ETA June 2018. 4 years later, not too bad… @@@ ## Next: Sciences du Design _Featured article_ about mixing software/text/tooling for publishing purposes. [sciences-du-design.org/en](http://www.sciences-du-design.org/en/) {.footer}
# Merci 😊 Give a shout to [@thom4parisot](https://twitter.com/thom4parisot) or talk to me later. @@@