I’m writing another book!

Hey everyone, I’ve finally turned this blog into a book! Or, rather, I am deep in the process of turning this blog into a book. Yes, it’s about 20 years, give or take, after I first thought of doing so, but who’s counting? The title is, of course:

Fabulous Adventures In Data Structures And Algorithms

The first few chapters are now available as part of the Manning Early Access Program (MEAP); the idea of this program is that you pay now and get access to the book as I finish writing it. I plan to finish by the spring of 2026. That way you get access early, and I get to test the code in production. 🙂 The source code is at:

https://github.com/ericlippert/FabulousAdventures.

Even better, everything is 50% off STARTING RIGHT NOW and going until November 13th, so go engage in commerce!

If you have questions or suggestions or any constructive feedback at all, you can leave it as a comment here or on Manning’s forum for book comments.


I was not expecting to write another book. Here’s how it happened:

Over my career I’ve been a technical editor for a lot of the programming book publishers as a fun hobby that pays for itself; last year Manning asked me if I was interested in helping edit a book not about programming, but rather a book about writing about programming, and of course I jumped at the chance. Cynthia Dunlop and Piotr Sarna wrote an insightful (and surprisingly funny) book; editing Writing For Developers was one of the most enjoyable side gigs I ever had.

After we got that book into production at the end of last year, the editor in charge of it asked me if I had any ideas for books about the current Microsoft developer ecosystem. Sadly, I’ve been out of that loop for more than a decade now, so I don’t have a good sense of what is current. Well then, is there any other kind of book that you think is missing from the current market?

I’m occasionally asked by development editors at various publishers if I’d write them yet another “review the data structures and algorithms that you learned in school, forgot about, and now need to brush up on your skills for an interview” book. I am not interested in that! Many of those books are very good. That there is a market demand for more of them is perhaps a symptom that the industry is still not great at interviewing. But I am not interested in writing another one.

You know, I said to the editor, if hypothetically I were to write another programming book, which I absolutely do not want to do, it would be:

(Cover mockup by Editor Jonathan.)

The title needs work but can you write me a proposal showing what the table of contents for that book would look like?

A clever editor used his rhetorical judo skills to make me write a book proposal, which then got shown to a bunch of editors and industry people some of whom I thought were my friends, and those jerks all recommended that Manning convince me to write the book. Which they did.

More seriously though: long-time readers of my blog know that expanding my personal toolbox of programming techniques was key to my career growth, and that it’s important to me to share those tools with others. This blog was one of the main ways I did that in the last two decades, and I am excited to have the opportunity to reach a new audience.

I’ve spent the last few months reflecting on old blog articles and thinking about the topics I never got around to writing about here, and it’s been a lot of fun getting back into writing after a long, long break. More on that later. For now, please check out the MEAP edition, and let me know what you think!

25 thoughts on “I’m writing another book!

  1. But were you able to convince them to use purple text in the book? 😉

    Delighted to see you back in action, Eric! Hope things are well.

    Just ordered the print edition of the book, so I have something to look forward to next year. I’m really glad you decided to go with Manning, they are my favorite technical book publisher. I appreciate that their print editions are still made with some quality (something not true of a certain Big-O company…) and I love they give you a free e-book with the print version.

    I’m sure the book is keeping you busy, but if you’re short of ideas for future blog posts (unlikely), I’d be very interested to see what you think about the evolution of C# over the last 5-6 years. There’s been a lot of changes and I wonder how many of them were discussed while you were on the design team, which might be surprises, and your overall thoughts on the current state of the language.

    Best of luck finishing the book!

    • Thank you so much!

      That’s a great idea for a future topic series that I have strong opinions on.

      I still have my hand in slightly in that I am on the C# specification committee for documenting legacy versions, but that’s basically an excuse to talk about C# with old friends.

  2. expanding my personal toolbox of programming techniques was key to my career growth, and that it’s important to me to share those tools with others“Other sources, and ones own enquiring mind, will give you the how of C#, you gave us the why, and that insight – coupled with learning how you view different topics and problems – has proven to be invaluable to me over the years.So I shall buy this book as a thank you to you, for all you have given me.ThanksBinary Worrier (a.k.a. Mark)

  3. Pingback: Dew Drop – October 31, 2025 (#4531) – Morning Dew by Alvin Ashcraft

  4. Well, it was a very pleasant surprise to see a new post from your site on my RSS feed! You can add me to the undoubtedly long list of grateful programmers who devoured (and learned from) your steady stream of blog posts in your Microsoft days: thank you!

    I’m enjoying the book very much. I hope that it will find an audience of younger programmers as well as those of us who can remember the articles from the first time around. It is enjoyable on several levels: directly for the subject matter on unusual data structures; for those of us who enjoy learning about obscure C# features (using extension methods to work around the restrictions on covariance was new to me); as a tutorial on how to think about programming; and, finally, as a great example of how to teach programming to others.

    You asked for feedback, so here is one observation. (Is this the best place for feedback?) In 2.5 Undo and redo you write, “Suppose your program state contains a mutable queue…” This is accurate, but I had to come back to it a few times to separate in my mind the queue you’re using for “program state” from the structures you’re using for the undo/redo functionality. Initially, I mistook the queue for part of the undo/redo mechanism. It might help to have an example of the kind of program that might need to use a queue for its state.

    It’s truly a pleasure to be reading content from you again, and I hope the book is a great success.

    Oliver

    • Thanks for those kind words, and yes, this is a great place for feedback, and yes, I am considering changing that example so that we’re not using too many of the same sorts of data structures all over the chapter.

  5. One language that is crying out for a book is GitHub’s CodeQL. The text documentation is minimalist to say the least (there are various example programs), and the behavior in places is surprising.

    I’m sure a lot more people would use it if they could figure out how.

    • Eric,

      sorry about the above. What I mean to say was:

      When I found out about the book from your blog I bought it immediately. I think the book sounds great. Many thanks to all the good people who convinced you to write it.

      I just finished reading chapter 2 and still digesting.

      In your original “book title” you wrote: “I needed a weird algorithm to solve a specific problem at work and ended up having to read a bunch of abstruse research papers”. Regarding this:

      1. I think it would be good to present in some detail the specific problems you were trying to solve. It would provide context for the algorithms and data structures. I can imagine when Redo/Undo could be useful. However for more esoteric ADTs (at least for me) like Hughes list I am wondering what problem you were trying to solve. In 2.6.4 you provide justification for using the list, but you do not explain the problem you tried to solve and why Hughes list was better than the alternatives. It would be also nice to know how it was evaluated and if it was finally used.
      2. It would be also nice to have references to the abstruse research papers.
      • Thanks for those thoughts, I appreciate it.

        I’m working on the chapter about anti-unification right now and that will be the most “here’s the weird problem I actually had to solve” chapter. It’s a good idea to more clearly identify which algorithms I just thought were neat, and which ones solved a practical problem.

        And yes I absolutely will have a list of papers to read in the book, and I’ll put PDFs of them up on the github site as well at some point.

  6. Would be cool if you could write a quick post on Extension Everything, which has now finally shipped after all these years and you were very close to back in the day.

Leave a reply to Anthony D. Green Cancel reply