News for hackers. Stuff that matters.
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:02AM (#27997363)
Author here! It feels amazing to have this done and live. I'm happy to talk about whatever you might want to know about it. If you're curious how the sausage was made, I wrote a blog post about taking the web book and bringing it to print and ebook here:

http://journal.stuffwithstuff.com/2021/07/29/640-pages-in-15...

Re:Crafting Interpreters is available in print by cxr on Thursday July 29, 2021 @12:04PM (#27998048)
> I decided to rewrite the whole build system for the book in Dart. The build script I wrote for my first book was dead simple. Literally a single Python script that took a Markdown file for each book chapter and rendered it to HTML while weaving in the code snippets. The world’s dumbest static site generator. [...] Useful, but really straining the limits of how much code I want to maintain in a dynamically typed language like Python [...] it was, frankly, really slow

This is great to hear. When I read about your build system in Crafting "Crafting Interpreters" <https://journal.stuffwithstuff.com/2020/04/05/crafting-craft...>, I had hopes that your next bugbite would be fleshing out half of a quasi-literate programming tool. For a compiler writer, who also happens to be writing a book, the circumstances and fit seem just too natural to avoid it.

I'm looking forward to diving into your Markdown package, too, and expect that it will be easy to port to JS. Nowadays, whenever I need a library for a JS project, my first choice is to check for a clean Dart, Haxe, or Java implementation that does what I want, with the intent of porting it, rather than disadvantaging myself by relying on whatever the NodeJS community has cobbled together and put on NPM. <https://news.ycombinator.com/item?id=24495646>

EDIT: There is a typo "CCS" in the blog post. Highlighted: <https://hyp.is/d2cCEPCLEeu7jSft-ex2Ug/journal.stuffwithstuff...>

Re:Crafting Interpreters is available in print by nirvdrum on Thursday July 29, 2021 @12:07PM (#27998079)
I've been waiting for the print version before diving in, so I'm excited to see it's now available. For what it's worth, I'd be willing to spend more money on an all-format package. I need to hold a book in my hand and not stare at an illuminated screen to absorb the material, but sometimes carry a big book around is not practical so having a Kindle copy is handy. A PDF copy is good for referencing stuff I've already read. Since the book is printed on-demand, such a package might not really be practical, but I thought I'd mention it.

Congrats on getting over the finish line, by the way. It's a huge accomplishment.

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @12:20PM (#27998211)
There used to be a thing where Amazon would let you bundle the print and Kindle versions, but I think they stopped doing that.

If you buy a print copy and email me some kind of confirmation, I'd be happy to send you the PDF or EPUB file.

Re:Crafting Interpreters is available in print by mwcampbell on Thursday July 29, 2021 @11:09AM (#27997436)
Congratulations on completing this long journey. I just bought a copy, mostly to reward your effort, but also to satisfy my curiosity on an aspect of how the PDF sausage was made. I notice that the PDF version of the book doesn't include the semantic tags required for accessibility. Now, please don't take this as a criticism; I know that people (like me) who use a screen reader or other accessibility tool can go with the EPUB or online version. But, I wonder, did you consciously decide to turn off tagged PDF, or were you just going with the default in InDesign? Thanks!
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:11AM (#27997481)
> I just bought a copy, mostly to reward your effort

Thank you!

> did you consciously decide to turn off tagged PDF

I did not. I did export an interactive PDF from InDesign and took care to make sure that the table of contents and internal links work, but I have zero experience in PDF accessibility. I'll take a look into it and see what I can figure out.

Re:Crafting Interpreters is available in print by mwcampbell on Thursday July 29, 2021 @11:19AM (#27997566)
> I have zero experience in PDF accessibility.

You and 99% of people who have ever produced a PDF file, I would guess. Which is why I wish InDesign would do the right thing by default. No big deal for this book since it's available in other formats, and I don't regret purchasing the PDF, but so many other books and documents are made available only as PDF.

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:31AM (#27997717)
Thank you for buying a copy. If you prefer to try out the EPUB file to see if that's better, email me and I can hook you up.
Re:Crafting Interpreters is available in print by ceronman on Thursday July 29, 2021 @11:26AM (#27997658)
Hi Bob! Congratulations on shipping the book!

This book has been a life saver during the pandemic, not only the world situation but I personally was a bit disappointed with my career. I was inspired by one of your posts where you mention that you were writing every single day for four years. I decided to use the same approach and I started reading the book and coding a bit every single day. I was able to finish it completely and I wrote two implementations of Lox. I just ordered a paper copy, from the PDF sample it seems it looks gorgeous!

Thank you very much for such a great contribution to the world!

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:31AM (#27997726)
> I was inspired by one of your posts where you mention that you were writing every single day for four years.

Yes! It is the dumbest, weirdest life hack, but it seems to work for perfectionists like us.

Re:Crafting Interpreters is available in print by hartator on Thursday July 29, 2021 @12:07PM (#27998078)
I wonder if anyone wrote a book about this!
Re:Crafting Interpreters is available in print by jkcxn on Thursday July 29, 2021 @12:24PM (#27998253)
If you're curious there's a subreddit for a technique like this for building/breaking habits https://www.reddit.com/r/thexeffect
Re:Crafting Interpreters is available in print by mprovost on Thursday July 29, 2021 @04:30PM (#28001105)
Re:Crafting Interpreters is available in print by acj on Thursday July 29, 2021 @11:12AM (#27997485)
Congrats, Bob, and thanks for all of your time and effort. I enjoyed the illustration videos that you included in the earlier blog post [1] (under "Illustrating by Hand"). That post landed at a time when many of us were badly stressed, and I remember it being very soothing.

[1] https://journal.stuffwithstuff.com/2020/04/05/crafting-craft...

Re:Crafting Interpreters is available in print by ImJasonH on Thursday July 29, 2021 @05:01PM (#28001451)
Agreed. Maybe it was just the April-2020 of it all, but "Writing is Suffering" really hit me in the feels. It's inspiring to see all your hard work reach this milestone, and I can't wait to hold it in my hands.
Re:Crafting Interpreters is available in print by kelnos on Thursday July 29, 2021 @06:35PM (#28002303)
Thank you so much for all your work on this! I ran through the first part (interpreter in Java, which I ended up doing in Scala for fun) a few years ago, and so much about this sort of thing was demystified for me. I used to think building parsers, tokenizers, AST builders, and interpreters was some sort of unapproachable black magic, but now I realize it's not actually that difficult.

I started working on the second part (decided I'd do this one in Rust instead of C), but got distracted by other things and never got around to picking it up again. I look forward to getting back to it!

Thanks again, and congratulations on getting to this publishing stage!

Re:Crafting Interpreters is available in print by divs1210 on Thursday July 29, 2021 @08:01PM (#28002998)
You might find this blog post interesting:

https://ceronman.com/2021/07/22/my-experience-crafting-an-in...

Re:Crafting Interpreters is available in print by kelnos on Friday July 30, 2021 @03:34PM (#28011471)
Oh, excellent, thanks for the link! I still want to do this myself, but am now pretty wary of building a GC in Rust...
Re:Crafting Interpreters is available in print by manaskarekar on Thursday July 29, 2021 @11:50AM (#27997927)
Thank you so much for everything you have put out. The execution is always beautiful, the content is solid, licensing/pricing model is great, and the meta info about the layout/setup/journey is equally enjoyable.

As the saying goes, your books spark joy. Thank you.

OT: Do I need to purchase the pdf separately if I purchase the print book?

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:52AM (#27997944)
I try, thank you!
Re:Crafting Interpreters is available in print by manaskarekar on Thursday July 29, 2021 @12:03PM (#27998042)
I snuck in the OT question in there as an edit, but curious, is there an option to buy pdf + print or do those need to go separately?
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @12:07PM (#27998090)
I don't have any automated way of bundling stuff. But if you email me with some proof of purchase (I don't know, a picture of you holding the book, or an order screenshot or something), I'm happy to email you the PDF.
Re:Crafting Interpreters is available in print by manaskarekar on Thursday July 29, 2021 @12:14PM (#27998142)
Nice! I can do that. Once again, thank you so much.

Can't wait to hear what you announce next.

Re:Crafting Interpreters is available in print by idsout on Thursday July 29, 2021 @12:06PM (#27998072)
Also interested in this. I prefer a first pass with a physical copy and having a pdf to use as a reference/search
Re:Crafting Interpreters is available in print by cjcampbell on Thursday July 29, 2021 @11:27AM (#27997677)
As others have said, congratulations. I've been following your progress for a good part of this journey, and I'm excited that you're finally able to hold a finished product in your hands! And now I'm stuck with a dilemma. I don't _need_ a physical copy, but I really do _want_ one.
Re:Crafting Interpreters is available in print by tylerscott on Thursday July 29, 2021 @12:28PM (#27998304)
Just a friendly nudge toward the physical copy. Just imagine that fresh book smell! Full disclosure--I bought the physical copy. I am excited for these illustrations and the layout looks fantastic.
Re:Crafting Interpreters is available in print by cjcampbell on Thursday July 29, 2021 @01:45PM (#27999197)
Oh, I’m absolutely buying it. Even more so after seeing Bob say that he’d be willing to send a digital copy with a physical purchase. I’ll just have to keep the physical copy at my office so that my partner doesn’t have to suffer more clutter in our small living space.
Re:Crafting Interpreters is available in print by m0meni on Thursday July 29, 2021 @11:06AM (#27997400)
Congrats! Been following you for a while and just finished the blog post...what a huge effort and meticulous attention to detail. I can't wait to buy the book so I can continue to procrastinate reading the full thing in print instead of on my computer monitor
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:09AM (#27997439)
Personally, I find that I procrastinate so much more effectively in print than on a screen. Being able to hold the material in my hands... and yet still failing to actually do so, really makes a difference.
Re:Crafting Interpreters is available in print by m0meni on Thursday July 29, 2021 @11:13AM (#27997503)
There's nothing like walking around and seeing the constant, physical, and, in the case of this book, beautiful reminder that you're not doing what you want to do.
Re:Crafting Interpreters is available in print by skybrian on Thursday July 29, 2021 @11:52AM (#27997948)
It would be cool to see the Dart script that you wrote to build the book’s website. I know it’s not intended for anything else, but maybe there are some good ideas in there for other websites?

Edit: I guess that’s here: https://github.com/munificent/craftinginterpreters/blob/mast...

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @12:08PM (#27998097)
That's correct. The entire build system is:

https://github.com/munificent/craftinginterpreters/tree/mast...

Re:Crafting Interpreters is available in print by jessewmc on Thursday July 29, 2021 @05:50PM (#28001930)
Congrats! Ordered. Been waiting for a physical copy, being able to scribble notes in the margins and bookmark and flip back and forth by hand just works so much better for me.
Re:Crafting Interpreters is available in print by lawn on Thursday July 29, 2021 @01:13PM (#27998813)
I really loved Game Programming Patterns and I'll definitely need to check this out too.

The way you made your book(s), from making them available online for free to the excellent layout of the printed version, was a huge inspiration for me to write my own book. Thank you.

Re:Crafting Interpreters is available in print by steveklabnik on Thursday July 29, 2021 @11:11AM (#27997477)
Congrats! Can't wait to get my hands on a copy.
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:28AM (#27997682)
I mention you on page 566. :)
Re:Crafting Interpreters is available in print by steveklabnik on Thursday July 29, 2021 @11:29AM (#27997695)
Well if I wasn't sold before... ha! <3
Re:Crafting Interpreters is available in print by intrepidhero on Thursday July 29, 2021 @12:02PM (#27998030)
Thanks for writing about your process! I enjoyed it almost as much as Crafting Interpreters, which is to say, quite a lot.

And you absolutely should be proud of your PDF->PNG->Highlight diffs script. As someone who has kept excel files and PDFs in version control I knew exactly the feeling you were talking about. I got to that part and exclaimed out loud, "Damn cool!"

Re:Crafting Interpreters is available in print by cxr on Thursday July 29, 2021 @01:07PM (#27998733)
> As someone who has kept excel files and PDFs in version control

Hot tip for handling office file formats or anything that uses a ZIP container: just unzip them and commit that to the repo. It won't fix the issue mentioned of the authoring tool making seemingly arbitrary and unnecessary changes, nor will it give you nifty visual diffs, but it's better than shuffling binary blobs through your version control tools.

Re:Crafting Interpreters is available in print by ric2b on Thursday July 29, 2021 @09:41PM (#28003552)
AFAIK that won't save space in git, in fact it will probably use more due to the lack of compression and the fact that git commits aren't diffs, they're just commonly displayed as if they are.
Re:Crafting Interpreters is available in print by cxr on Thursday August 05, 2021 @09:31PM (#28082278)
> AFAIK that won't save space in git

Actually, it should (precisely _because_ of Git's approach to storing blobs) but that's besides the point. Saving space had nothing to do with the motivation for the earlier comment.

> in fact it will probably use more

No.

Re:Crafting Interpreters is available in print by poidos on Thursday July 29, 2021 @11:23AM (#27997624)
I am in absolute awe at the PDF diff tool. Wonderful, wonderful stuff.
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:26AM (#27997653)
It's literally the best idea I've had since I proposed to my wife.
Re:Crafting Interpreters is available in print by rgrmrts on Thursday July 29, 2021 @11:16AM (#27997530)
Woohoo, congrats Bob! I’ll be picking up a copy (is there a difference in your cut for Amazon vs Barnes & Noble?) and am excited to work through it. I’ve been referencing the web version here and there but waited on working through it entirely til I had a physical copy :D
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:26AM (#27997660)
I'll get a bigger cut from Amazon, but order from wherever you prefer.
Re:Crafting Interpreters is available in print by timClicks on Thursday July 29, 2021 @04:01PM (#28000752)
Congratulations, this is such a tremendous achievement. Well done. And thank you for everything that you've done to make language hacking accessible (and Wren is superb, by the way).
Re:Crafting Interpreters is available in print by macintux on Thursday July 29, 2021 @11:19AM (#27997561)
Ordered, thanks. Regrettably I have read fewer than 1% of the books I’ve ever bought, but this one has a much better chance than most.

Congratulations on finally putting this project to rest.

Re:Crafting Interpreters is available in print by a9h74j on Thursday July 29, 2021 @05:30PM (#28001735)
Same here to some degree, but my thought in years past was that I could read a purchased [print] book years later, and still express my appreciation (and compensate the author) with a purchase immediately.
Re:Crafting Interpreters is available in print by mtlynch on Thursday July 29, 2021 @11:12AM (#27997487)
Congrats on the print version, Bob! I appreciate you taking the time to share everything you've learned about the writing and publishing process.

I look forward to reading this!

Re:Crafting Interpreters is available in print by matheusmoreira on Thursday July 29, 2021 @11:40AM (#27997817)
Congratulations. Really enjoy your blog as well, I think I've read every post about programming languages. I've cited them a lot too.
Re:Crafting Interpreters is available in print by jkcxn on Thursday July 29, 2021 @12:37PM (#27998373)
Incredible piece of work, and an inspirational process. Your book helped me write my own language compiler. I love the way you explain the pratt parsing technique and also the way the lexer and parser work together so you don't have to read the whole file at once, and how advance(), consume() and expect() functions work. It all just works together beautifully
Re:Crafting Interpreters is available in print by kizer on Thursday July 29, 2021 @01:29PM (#27998972)
Great job, man. I've consulted the online version a number of times over the years. Will be purchasing this in dead tree form :D.
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @01:43PM (#27999167)
> Will be purchasing this in dead tree form :D.

I like to think of it as "carbon capture representation" these days.

Re:Crafting Interpreters is available in print by rvbissell on Saturday July 31, 2021 @03:23AM (#28016123)
Just a note to say that your writing is excellent!

After seeing this HN post yesterday, I bought your /Crafting Interpreters/ book to see if it could help me evolve my AST-walker into a threaded-interpreter (using GNU's computed goto-label extension.) I find your writing style to be just the right mix of humor and content to keep me engaged.

Re:Crafting Interpreters is available in print by humanlion87 on Thursday July 29, 2021 @11:24AM (#27997633)
Congrats! Will be getting a copy just because I enjoyed reading the online version. I love your writing style!
Re:Crafting Interpreters is available in print by gurleen_s on Thursday July 29, 2021 @03:10PM (#28000172)
Congratulations on releasing the book! Grateful for your work both as a student of computer science and as a Flutter/Dart developer. I’m planning on buying a copy after work. Are there any resources you recommend as a follow up to this book, and do you have any new content planned?
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @08:20PM (#28003103)
The last chapter suggests a few places to go next after reading the book:

http://craftinginterpreters.com/optimization.html#where-to-n...

I have absolutely nothing planned after this. I plan to not have any plans for a while. :)

Re:Crafting Interpreters is available in print by titzer on Thursday July 29, 2021 @11:46AM (#27997883)
I really like the hand-drawn diagrams in the sample PDF! Are the actually hand-drawn or stylized SVG?
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:53AM (#27997954)
Literally hand drawn with my hands. Here's a video of me making one:

https://www.youtube.com/watch?v=iN1MsCXkPSA

It's, like, comically time consuming. But also pretty satisfying.

Re:Crafting Interpreters is available in print by lfowles on Thursday July 29, 2021 @02:30PM (#27999801)
Have you ever tried engineering paper? :) Might save you the step of taping grid paper! The grid only exists on one side, but essentially disappears when scanned.

https://www.staples.com/TOPS-Engineering-Computation-Pad-Gum...

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @03:54PM (#28000668)
Ah, that's a good idea! I haven't seen that stuff in ages.
Re:Crafting Interpreters is available in print by lfowles on Thursday July 29, 2021 @04:17PM (#28000939)
It tends to be hard to find outside of college towns....
Re:Crafting Interpreters is available in print by titzer on Thursday July 29, 2021 @12:16PM (#27998166)
Wow, that is indeed some serious dedication. You even fixed the kerning of the labels. The result looks great. Nice job!
Re:Crafting Interpreters is available in print by ruuda on Thursday July 29, 2021 @04:09PM (#28000847)
This was such an amazing read. Getting nervous about not being able to diff things is so relatable!
Re:Crafting Interpreters is available in print by mwigdahl on Thursday July 29, 2021 @11:49AM (#27997913)
Your book was great; I learned a ton going through it. Congratulations on getting it to print!
Re:Crafting Interpreters is available in print by zerr on Thursday July 29, 2021 @03:58PM (#28000712)
Can you please point out the differences compared to other books for the same topic? Thanks!
Re:Crafting Interpreters is available in print by EamonnMR on Thursday July 29, 2021 @04:15PM (#28000922)
Not the author, but working through it and having read compiler books in the past... I is very practical vs theoretical, very hands on, and willing to engage with sticky problems rather than glossing over them. The language it implements feels modern (vs the Pascal you do in Let's Write a Compiler.) The writing is fun but not over the top. You hand write the parser instead of using a parser generator.
Re:Crafting Interpreters is available in print by geekraver on Friday July 30, 2021 @10:12AM (#28008181)
It’s written by Bob and the others aren’t. That’s a good enough reason for me.
Re:Crafting Interpreters is available in print by rednab on Thursday July 29, 2021 @11:14AM (#27997521)
That's going to look awesome next to my copy of Game Programming Patterns! ... What do you mean "Temporarily Out Of Stock", amazon.co.uk!?
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:27AM (#27997670)
It should sort itself out soon, I hope.
Re:Crafting Interpreters is available in print by rednab on Thursday July 29, 2021 @11:37AM (#27997796)
I'm rather hoping you will sell out your print run, actually. :)

But to pile in with everybody else, congratulations!

Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:40AM (#27997823)
It's print-on-demand so selling out should be hard, but I welcome any attempts to overwhelm the system. :)
Re:Crafting Interpreters is available in print by a9h74j on Thursday July 29, 2021 @05:32PM (#28001765)
So that was step 3 all along! Invite DDOS.

Step 4: ...

Re:Crafting Interpreters is available in print by krylon on Thursday July 29, 2021 @12:22PM (#27998226)
Thank you so much for all the work you put into this!
Re:Crafting Interpreters is available in print by qorrect on Thursday August 05, 2021 @05:57PM (#28080507)
#1 Bestseller! -> https://imgur.com/3GJkMvd
Re:Crafting Interpreters is available in print by marcocampos on Thursday July 29, 2021 @11:06AM (#27997397)
Congrats man, I love the book and the final physical/PDF book layout/design is amazing!
Re:Crafting Interpreters is available in print by munificent on Thursday July 29, 2021 @11:10AM (#27997450)
Thank you! It looks really nice in person, if I do say so myself. It's so cool to see the illustrations in full crisp 600 DPI.
Re:Crafting Interpreters is available in print by syntaxfree on Thursday July 29, 2021 @11:30AM (#27997704)
It’s good work, congratulations.
Re:Crafting Interpreters is available in print by tylerscott on Thursday July 29, 2021 @12:24PM (#27998262)
Just another congrats! I have been waiting for this day. Thanks for all your work!
Re:Crafting Interpreters is available in print by lemonade5117 on Thursday July 29, 2021 @10:52PM (#28003942)
hey! I’d been thinking about this just a few days ago! It’s great that the print version is finally out. Congratulations on publishing your book!