{"id":1093,"date":"2017-09-13T12:51:22","date_gmt":"2017-09-13T12:51:22","guid":{"rendered":"http:\/\/dlang.org\/blog\/?p=1093"},"modified":"2021-10-08T11:07:52","modified_gmt":"2021-10-08T11:07:52","slug":"the-making-of-d-web-development","status":"publish","type":"post","link":"https:\/\/dlang.org\/blog\/2017\/09\/13\/the-making-of-d-web-development\/","title":{"rendered":"The Making of &#8216;D Web Development&#8217;"},"content":{"rendered":"<p><em>A long-time contributor to the D community, Kai Nacke is the author of &#8216;<a href=\"https:\/\/www.packtpub.com\/web-development\/d-web-development\">D Web Development<\/a>&#8216; and the maintainer of <a href=\"https:\/\/wiki.dlang.org\/LDC\">LDC<\/a>, the LLVM D Compiler. In this post, he tells the story of how his book came together.<\/em><\/p>\n<hr \/>\n<p><a href=\"https:\/\/www.packtpub.com\/web-development\/d-web-development\"><img loading=\"lazy\" class=\"alignleft wp-image-1096 size-medium\" src=\"http:\/\/dlang.org\/blog\/wp-content\/uploads\/2017\/09\/8890OS_B04278_D-Web-Development-243x300.png\" alt=\"\" width=\"243\" height=\"300\" srcset=\"https:\/\/dlang.org\/blog\/wp-content\/uploads\/2017\/09\/8890OS_B04278_D-Web-Development-243x300.png 243w, https:\/\/dlang.org\/blog\/wp-content\/uploads\/2017\/09\/8890OS_B04278_D-Web-Development.png 302w\" sizes=\"(max-width: 243px) 100vw, 243px\" \/><\/a>At the beginning of 2014, I was asked by <a href=\"https:\/\/www.packtpub.com\/\">Packt Publishing<\/a> if I wanted to review <a href=\"https:\/\/www.packtpub.com\/application-development\/d-cookbook\">the D Cookbook<\/a> by Adam Ruppe. Of course I wanted to!<\/p>\n<p>The review was stressful, but it was a lot of fun. At the end of the year came a surprising question for me: would I be willing to switch sides and write a book myself? Here, I hesitated. Sure, writing your own book is a dream, but is this at all possible on top of a regular job? The proposed topic, <a href=\"https:\/\/www.packtpub.com\/web-development\/d-web-development\">D Web Development<\/a>, was interesting. Web technologies I knew, of course, but <a href=\"https:\/\/vibed.org\/\">the vibe.d framework<\/a> was for me only a large unit test for each <a href=\"https:\/\/wiki.dlang.org\/LDC\">LDC release<\/a>.<\/p>\n<p>My interest was awakened and I created a chapter overview, based solely on my experience as a developer and the online documentation of vibe.d. The result came out well and I was offered a contract. It came with an immediate challenge: I should set up a small project plan. How do you plan to write a book?!?<\/p>\n<p>Without any experience in this area, I stuck to the following rules. For each chapter, I planned a little time frame. Each should include at least one weekend, for the larger chapters perhaps even two. I reserved some time for the Easter holiday, too. The first version of the book would therefore be ready at the beginning of July, when I started writing in mid-February.<\/p>\n<p>Even the first chapter showed that this plan was much too optimistic. The writing went off quickly &#8211; as soon as I had something I could write about. But experimenting and testing took a lot of time. For one thing, I didn&#8217;t have much experience with vibe.d. There were sample programs that I wanted to develop Saturday to write about on Sunday. However, I was still searching for errors on Monday, without having written a single line!<\/p>\n<p>On the other hand, there were still a few rough edges in vibe.d at the time, but I did not want to write that these would be changed or implemented in later versions of the library. So I developed a few patches for vibe.d, e.g. <a href=\"https:\/\/github.com\/vibe-d\/vibe.d\/pull\/1000\">digest authentication<\/a>. By the way, there were also new LDC releases to create. Fortunately, the LDC team had expanded, so I just took care of the release itself (thanks so much, folks!). The result was, of course, that I missed many of my milestones.<\/p>\n<p>In May, the first chapters came back from the review process. Other content also had to be written, such as the text for the back of the book. In mid-December, the last chapter was finished and almost all review notes on the other chapters were incorporated. After a little Christmas break, the remaining notes were quickly incorporated and the pre-final version of each chapter was created in January. And then, on February 1, 2016, the news came that my book was now published. I&#8217;d done it! Almost exactly one year after I had started with the first chapter.<\/p>\n<p>Was the work worth it? In any case, it was a very special experience. Would I do it again? Yes! Right now, I am playing with the idea of updating the book and expanding a chapter. Let&#8217;s see what happens&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the beginning of 2014, I was asked by Packt Publishing if I wanted to review the D Cookbook by Adam Ruppe. Of course I wanted to!<\/p>\n<p>The review was stressful, but it was a lot of fun. At the end of the year came a surprising question for me: would I be willing to switch sides and write a book myself? Here, I hesitated. Sure, writing your own book is a dream, but is this at all possible on top of a regular job? The proposed topic, D Web Development, was interesting.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[14,9,22],"tags":[],"_links":{"self":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/1093"}],"collection":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/comments?post=1093"}],"version-history":[{"count":6,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/1093\/revisions"}],"predecessor-version":[{"id":1523,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/1093\/revisions\/1523"}],"wp:attachment":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/media?parent=1093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/categories?post=1093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/tags?post=1093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}