Building Chatbots in TypeScript with the Microsoft Bot Framework

by Michael Szul on

No ads, no tracking, and no data collection. Enjoy this article? Buy us a ☕.

Well… it's out! Way back in March of 2017, Bill and I did a podcast episode on the Microsoft Bot Framework. Shortly thereafter, I started working on a book about how to build chatbots with the Bot Framework Node.JS SDK. 2 years, a dozen speaking engagements, two rewrites, and countless tweaks later, the book is officially finished.

I've learned that writing a book is easy, but finishing a book is hard. A lot has happened in the last two years, and certainly a lot is still happening in the conversational interface space, so I wanted to take some time to detail out the history behind the book, and my process in writing it.

When we made plans to do the initial podcast episode it was just after the Bot Framework SDK v3 had been released. I wanted to build a sample chatbot for the episode, so that I knew what I was talking about, and had a little more hands-on experience. I decided to go with the Node.JS SDK because prototyping in JavaScript (TypeScript in this case) had become such a quick-and-dirty thing to throw together. It's funny how these few years latter many people online look at me as the JavaScript bot guy, when most of my everyday job deals with being knee-deep in C#.

Something about chatbots just spoken to me. It wasn't a new technology, but it was a rising one, and I felt I could make my mark as an expert in this niche, but growing field. A lot of my earlier blog posts began to center on the Bot Framework, and eventually, I found myself awarded the Microsoft MVP status, and was able to make a trip out to Bellevue. It was here I was able to officially meet Gary Pretty and James Mann: Two high profile Bot Framework communicators from the community.

Just prior to the MVP Summit in Bellevue; however, I began writing the aforementioned book on the Bot Framework. I was probably 2/3rds of the way through it when Microsoft announced via a PGI call that the Bot Framework SDK v4 was coming out, and it was changing an awful lot. I cringed slightly, knowing that I was going to have to rewrite large portions of the book, and unsure if I had the capacity to do it. By the time Microsoft Build came around (where the SDK v4 was announced), I had decided to continue forward. This would be the first of two rewrites, as later changes between preview and GA also required some fine-tuning.

Throughout this process, I had about 7 speaking engagements about chatbots on the East coast region--from code camps to regional conferences like SyntaxCon. While starting to wrap up the book, I worked with an acquisitions editor at O'Reilly making changes to align it with O'Reilly's vision. The book was accepted, I made several more revisions during the contract formation, agreed to a bunch of dates, worked hard to get the chapters ready, signed the contract, and then watched as O'Reilly pulled the contract on the book two days before I was set to deliver the first two chapters and receive the first advance. The last minute rescission sucked, but not because of it getting pulled. I was set to donate the proceeds to autism research, so I was disappointed in that outcome (side note: my acquisitions editor was top-notch during this process, and continued to promote some of my other work even after the contract was pulled).

Despite that setback, I was receiving interest from several other publishers, including Packt. But I decided to reach out to Rob Conery of Big Machine to discuss some of the indie publishing he had been doing. I have become a big fan of indie publishing over the last few years, including email newsletters like Sentiers and small print magazines like Logic, Regeneration, and Offscreen. Some of the best technology books I've read over the past two years have been from self-publishing or indie publishers. Rob convinced me that I should have stuck with my initial instinct, and handled the process myself. I decided to go the indie route, mostly because I've been slowly creating a non-profit meant to empower human decision-making with technology. This particular non-profit is centered around technology support for initiatives in neurodiversity and climate change.

It was a long, hard road. Multiple revisions gave way to upgrading code which gave way to copy-editing, technical reviewers, and indexing. Somewhere along the way, I needed to learn LaTeX. At the end of the day, the book was finally finished, and sales for the book go to support research in autism and neurodiversity, which makes it a bit of a passion project for me, and makes up for the loss when the book was associated with O'Reilly.

Many thanks to all of those who supported me throughout this process, especially Bill, who has been my behind-the-scenes partner in crime for all things Codepunk. I've been on a content kick, and have hammered him for contributions, and he's always entered my enthusiasm.