# Book: Crystal Programming

**URL:** <https://forum.crystal-lang.org/t/book-crystal-programming/4639>\
**Category:** Learning Resources\
**Tags:** announces\
**Created:** [May 24, 2022, 1:10am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639 "2022-05-24T01:10:33Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Post date:** [May 24, 2022, 1:10am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/1 "2022-05-24T01:10:33Z")

</div>

I’m pleased to announce that @lbguilherme and I have authored a new Crystal book, and it comes out this Friday, May 27, 2022! Electronic and physical versions will be available. Checkout the following links for more information:

- [https://www.packtpub.com/product/crystal-programming/9781801818674](https://www.packtpub.com/product/crystal-programming/9781801818674)
- [Crystal Programming: A project-based introduction to building efficient, safe, and readable web and CLI applications: Dietrich, George, Bernal, Guilherme: 9781801818674: Amazon.com: Books](https://www.amazon.com/Crystal-Programming-project-based-introduction-applications/dp/1801818673/ref=sr_1_2)

At 356 pages, there isn’t much that hasn’t been covered; all written against Crystal `1.4`. While the book is focused towards those with programming experience, previous knowledge of Crystal itself is not required.

Featured topics include the basics as well as higher level language features such as concurrency, IOs, C bindings, and how to use Shards/libraries, as well as more advanced metaprogramming topics such as macros, annotations, and compile time type introspection. There are also chapters dedicated to the external tooling/auxiliary features of Crystal, such as how to document, test, release, and introduce CI into your Crystal project.

We took a project based approach in order to introduce and talk about various Crystal features. This worked out well as it allowed using them within real-world like contexts, as opposed to more abstract examples. We start off by creating a simple CLI application to handle transforming data between formats efficiently and follow it up by walking through the creation of a simple blog application using the Athena Framework.

Overall it was an rewarding process watching the book come together, learning plenty myself throughout the process. I want to give a special thanks to @bcardiff for being our technical reviewer. Your in-depth knowledge of the language, and patience with our questions, is much appreciated!

---

<div class="post-metadata">

**Author:** ![cloutiy](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/cloutiy/32/222_2.png) [@cloutiy](https://forum.crystal-lang.org/u/cloutiy)\
**Post date:** [May 24, 2022, 3:53am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/2 "2022-05-24T03:53:30Z")

</div>

Oh this is a surprise and awesome news🥳 looking forward to getting a copy.

---

<div class="post-metadata">

**Author:** ![cloutiy](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/cloutiy/32/222_2.png) [@cloutiy](https://forum.crystal-lang.org/u/cloutiy)\
**Post date:** [May 24, 2022, 1:42pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/3 "2022-05-24T13:42:47Z")

</div>

Also, would be good to tweet it out from crystal twitter if not already done

---

<div class="post-metadata">

**Author:** ![drhuffman12](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/drhuffman12/32/715_2.png) [@drhuffman12](https://forum.crystal-lang.org/u/drhuffman12)\
**Post date:** [May 24, 2022, 5:23pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/4 "2022-05-24T17:23:55Z")

</div>

Thanks for adding what I’d call real-world-usage dependencies (i.e.: beyond core-language-only examples) like CI as you mentioned; I think that kind of content will be helpful to many others use Crystal and maybe migrate people to Crystal.

I look forward to getting my book! 🙂

---

<div class="post-metadata">

**Author:** ![mavu](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mavu/32/213_2.png) [@mavu](https://forum.crystal-lang.org/u/mavu)\
**Post date:** [May 24, 2022, 7:02pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/5 "2022-05-24T19:02:31Z")

</div>

Very nice!

I’ll have to find who in our company can preorder one this week.

---

<div class="post-metadata">

**Author:** ![kees](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kees/32/914_2.png) [@kees](https://forum.crystal-lang.org/u/kees)\
**Post date:** [May 24, 2022, 8:13pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/6 "2022-05-24T20:13:18Z")

</div>

Thanks, I saw a lot of questions about an up-to-date book!  
Just made a pre-order 😃

---

<div class="post-metadata">

**Author:** ![MarioAriasC](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/marioariasc/32/1434_2.png) [@MarioAriasC](https://forum.crystal-lang.org/u/MarioAriasC)\
**Post date:** [May 25, 2022, 6:24am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/7 "2022-05-25T06:24:46Z")

</div>

Congrats

---

<div class="post-metadata">

**Author:** ![asterite](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/asterite/32/60_2.png) [@asterite](https://forum.crystal-lang.org/u/asterite)\
**Post date:** [May 25, 2022, 12:52pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/8 "2022-05-25T12:52:34Z")

</div>

This is impressive! Thank you and congrats to both of you!  
Next time I’m in the US I’ll definitely grab a copy \<3

---

<div class="post-metadata">

**Author:** ![jzakiya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/jzakiya/32/278_2.png) [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Post date:** [May 25, 2022, 8:23pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/9 "2022-05-25T20:23:09Z")

</div>

I just pre-ordered the ebook only for $10.

---

<div class="post-metadata">

**Author:** ![lebogan](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/lebogan/32/381_2.png) [@lebogan](https://forum.crystal-lang.org/u/lebogan)\
**Post date:** [May 26, 2022, 5:03am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/10 "2022-05-26T05:03:02Z")

</div>

Congrats! Just ordered a copy and looking forward to reading. Thanks for doing this. Huge help!

---

<div class="post-metadata">

**Author:** ![fork-bomber](https://avatars.discourse-cdn.com/v4/letter/f/3e96dc/32.png) [@fork-bomber](https://forum.crystal-lang.org/u/fork-bomber)\
**Post date:** [May 27, 2022, 1:30pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/11 "2022-05-27T13:30:15Z")

</div>

![image](https://canada1.discourse-cdn.com/flex036/uploads/crystal_lang/original/2X/0/0a78bc56493b8746077e359c6c7eac63462a149a.jpeg)

---

<div class="post-metadata">

**Author:** ![Wonner](https://avatars.discourse-cdn.com/v4/letter/w/6a8cbe/32.png) [@Wonner](https://forum.crystal-lang.org/u/Wonner)\
**Post date:** [May 28, 2022, 8:03pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/12 "2022-05-28T20:03:59Z")

</div>

Could someone with a hard copy confirm if this book has an Index. The Amazon preview appears that it does not have an Index, but I find that hard believe.

Thanks

---

<div class="post-metadata">

**Author:** ![drhuffman12](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/drhuffman12/32/715_2.png) [@drhuffman12](https://forum.crystal-lang.org/u/drhuffman12)\
**Post date:** [May 30, 2022, 10:11am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/13 "2022-05-30T10:11:32Z")

</div>

The hard copy does have an index.

---

<div class="post-metadata">

**Author:** ![jzakiya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/jzakiya/32/278_2.png) [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Post date:** [May 30, 2022, 5:11pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/14 "2022-05-30T17:11:35Z")

</div>

The ebook has the index too.

---

<div class="post-metadata">

**Author:** ![Onyx](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/onyx/32/1654_2.png) [@Onyx](https://forum.crystal-lang.org/u/Onyx)\
**Post date:** [June 1, 2022, 2:48am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/15 "2022-06-01T02:48:23Z")

</div>

Awesome job! I’ll be grabbing this for sure.

---

<div class="post-metadata">

**Author:** ![zw963](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zw963/32/1623_2.png) [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Post date:** [June 5, 2022, 9:24am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/16 "2022-06-05T09:24:17Z")

</div>

@Blacksmoke16 If this book need a proofreading or errata, you can @me. i think i can do this work well and quickly base on my knowledge of Crystal and Ruby.

anyway, i hope Crystal can have more high quality books which make it more popular.

---

<div class="post-metadata">

**Author:** ![paulocoghi](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/paulocoghi/32/1429_2.png) [@paulocoghi](https://forum.crystal-lang.org/u/paulocoghi)\
**Post date:** [June 5, 2022, 10:43am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/17 "2022-06-05T10:43:26Z")

</div>

It’s an honor to buy the book! I just ordered the digital version on Packpub. It was simply a no-brainer. 😁 Even more considering the authors!

I thank you both, George Dietrich and Guilherme Bernal, for the excellent work!

---

<div class="post-metadata">

**Author:** ![mavu](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mavu/32/213_2.png) [@mavu](https://forum.crystal-lang.org/u/mavu)\
**Post date:** [June 29, 2022, 10:11pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/18 "2022-06-29T22:11:25Z")

</div>

![crystalbook](https://canada1.discourse-cdn.com/flex036/uploads/crystal_lang/original/2X/a/a2388fb863495d70fe61977da97623cfe8ea01ff.jpeg)

Thanks for your work! :D

---

<div class="post-metadata">

**Author:** ![funcmike](https://avatars.discourse-cdn.com/v4/letter/f/54ee81/32.png) [@funcmike](https://forum.crystal-lang.org/u/funcmike)\
**Post date:** [July 13, 2022, 6:00am UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/19 "2022-07-13T06:00:54Z")

</div>

I just bought an e-book, good stuff :) thx

---

<div class="post-metadata">

**Author:** ![beta-ziliani](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/beta-ziliani/32/1821_2.png) [@beta-ziliani](https://forum.crystal-lang.org/u/beta-ziliani)\
**Post date:** [September 9, 2022, 2:42pm UTC](https://forum.crystal-lang.org/t/book-crystal-programming/4639/20 "2022-09-09T14:42:49Z")

</div>

If you still haven’t acquired your copy of the [Crystal Programming book](https://man.as/nOBdw), now’s your chance to get a 25% discount using the code **25CRYSTAL** on [http://packtpub.com](https://www.packtpub.com/product/crystal-programming/9781801818674) at checkout!

[Next page](https://forum.crystal-lang.org/t/book-crystal-programming/4639.md?page=2)
