Jeff Barr's Blog

Things I Like..

My AWS Book Is Now Available!

It has been a long journey, but my first book, Host Your Web Site in the Cloud, is now available.

I didn’t actually set out to write a book. A while ago a SitePoint editor contacted me and asked if I would be interested in writing some code samples for an upcoming book on the Amazon Web Services. After consulting with my management we agreed that this would be a good use of my time, and I agreed to do it.

Over the next month or two I worked with the editor and the author-to-be to refine and finalize the outline. We agreed on the general structure of the book and we agreed that it would be targeted at mid-level PHP developers. I decided to use the Tarzan toolkit (which has since been renamed to CloudFusion) because it was easy to use, covered all of the common AWS services, and was also well-documented.

With some paperwork signed and out of the way, we were ready to start. The due date for the first chapter came and went, and nothing arrived in my inbox. The editor began to get concerned, as did I. Finally, the original author let us know that his priorities had changed and that he wasn’t in a position to move forward. The editor asked me to suggest a substitute author. After giving it some thought and after discussing it with my management and my family, I decided that this was a project that I could take on, and so I did. My wife and all five of my kids were fully supportive and I can’t thank them enough for their love and their patience.

Little did I know how much work it would be, or how much fun I would have!

The editor set up a chapter schedule and allotted two weeks to each chapter. Practically speaking, I was able to set aside between two and three days every two weeks to work on the book, and this would have to do. I decided that I would have to be focused, disciplined, and organized. I would have to set up a production line and march each chapter through it. And I would have to retain my sanity.

To be focused, it was necessary to eschew email as much as possible during the days that I was focused on the book. I would take care of my inbox in the morning, and then log out until late in the afternoon. I also found that it was necessary to remove every unnecessary object and scrap of paper from my home desk. I wanted to make sure that I had as few distractions as possible. Clearing my desk turned into a morning ritual which served to cleanly divide my morning between “other stuff” and “writing.” I even set up a special Firefox profile (instructions on how to handle multiple profiles here) containing only the bare essentials needed for me to work on the book.

To be disciplined, I set up a strict working rhythm for each chapter. I would take the outline that we’d produced during the planning phase, and enhance it to the next level of detail. From there I would review the web service (e.g. S3) that was to be the focus of the chapter, to make sure that I was covering all of the essential points. I would then decide on the code samples that I needed and I’d write, test, and debug them. This would usually occupy the first day. The next day, I would start at the beginning of the chapter and I would simply write it all the way through, writing 5,000 to 9,000 words in the space of one or two days. I did my best to write it in final form, and didn’t leave any rough ends or unfinished spots. I even took all of the screen shots as I went.

Truth be told, I didn’t even read the drafts before sending them along. I wrote them the way that I wanted them to be, and didn’t see the need to look back. This may sound strange or perhaps even arrogant, but realize that most of my writing in college was done on a typewriter. Cut, copy, and paste were foreign concepts to me until my senior year in college, so I was accustomed to producing decent copy in linear form.

When my managers at Amazon Web Services agreed that I could write a book, they asked me to make sure that each chapter was reviewed by the appropriate team or teams. I secured commitments from each team, and also set up a tracking system to make sure that each chapter had been reviewed by the AWS team and by the external reviewer. My tracking system consisted of a Google Docs spreadsheet with a row for each chapter, a column for each stage of the tracking process, a set of predefined values for each cell, along with some rules to color code the cells. Here’s a snapshot that I took when I was almost finished:

In addition to helping me to stay organized, the color coding served an important psychological purpose by giving me a sense of progress. I was able to watch the spreadsheet gradually change from red to green as I completed each chapter, sent it around for review, incorporated comments, and sent the final copies to the editor. As I was working on the later chapters I was also managing the review process and a lot of documents were in transit. It turned out that tracking the review status was absolutely essential.

To help me stay sane, I took frequent breaks to get some water, refill my bird feeder, water my garden, or just to clear my head. I worked regular (if long) hours on the book and left it behind, both physically and mentally, as soon as I shut off my monitor and left my office. Just as it was important to have a starting ritual (clearing my desk), it was important to have a finishing ritual, both for the day and for each chapter. I also made sure to have dinner with my family, and to thank them for their support and their patience.

The writing process was quite enjoyable. I certainly worked a lot and I cranked out a lot of text and code in fairly short order, but I never felt like the work was overwhelming or excessively stressful. It was just complex work that had to be done in a disciplined fashion to someone else’s schedule. In no particular order, the following things made the work really enjoyable:

  • I was able to work from home with a window open. There was a gentle breeze and the sound of the birds at my bird feeder was relaxing.
  • My daughters made great lunches for me.
  • Everyone did their best not to pester me during working hours.
  • My son Andy was practicing his classical piano pieces for several hours per day at the other end of the house.

On the other hand, I had a few distractions to make things interesting:

  • The kitchen is way too close to my home office. I tried my best to stick to water.
  • A long-planned bathroom remodeling job took place while I was finishing up the final chapters, with the majority of the work happening 20 feet from the door of my office.
  • The roof on our house was replaced just prior to the bathroom remodeling job. Debris from the roof was falling outside my window as I worked on the EC2 and S3 chapters!

I was able to work through the last two items by simply staying disciplined and/or working early in the morning or late at night after the work had finished for the day.

I finished up as planned and we were all set to publish when we realized that two major AWS features that had come out since I wrote the last word really deserved coverage: Booting from EBS and the Relational Database Service. While we were discussing the best way to handle this a few other things changed, and I spent some time making those revisions and getting them reviewed.

Which brings us to the present. The book is now in print and you can order a copy now! Later today (September 21, 2010) I’ll also be a guest on a webinar where we’ll discuss the book.

Looking back on this, I am really happy with how it all turned out and I am happy to be a published writer at long last. This was my first book, but I don’t think that it is my last. I have some great ideas for a novel.