# Learning Resources

**URL:** https://forum.crystal-lang.org/c/learning-resources/8.md?page=2

[Latest](https://forum.crystal-lang.org/latest.md) · [Categories](https://forum.crystal-lang.org/categories.md) · [Tags](https://forum.crystal-lang.org/tags.md)

**Page:** 3

---

## [Book: Programming Crystal](https://forum.crystal-lang.org/t/book-programming-crystal/409)

<div class="topic-metadata">

**Author:** [@simonstl](https://forum.crystal-lang.org/u/simonstl)\
**Replies:** 12\
**Last updated:** [February 2, 2021, 3:22pm UTC](https://forum.crystal-lang.org/t/book-programming-crystal/409 "2021-02-02T15:22:27Z")

</div>

I’m delighted to announce that Programming Crystal, written by Ivo Balbaert and myself, is now available in print as well as electronically: https://pragprog.com/book/crystal/programming-crystal We tried to keep the bo…

---

## [Raw Crystal conference talks on YouTube](https://forum.crystal-lang.org/t/raw-crystal-conference-talks-on-youtube/2778)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 1\
**Last updated:** [December 16, 2020, 7:36pm UTC](https://forum.crystal-lang.org/t/raw-crystal-conference-talks-on-youtube/2778 "2020-12-16T19:36:22Z")

</div>

I’ve put together a YouTube playlist for you to replay the talks from Raw Crystal 2020 :popcorn: If you find anything particularly inspiring or interesting, then consider letting other people know on this thread :arro…

---

## [Handling method calls to nullable objects](https://forum.crystal-lang.org/t/handling-method-calls-to-nullable-objects/2735)

<div class="topic-metadata">

**Author:** [@jim2007](https://forum.crystal-lang.org/u/jim2007)\
**Replies:** 3\
**Last updated:** [December 3, 2020, 3:59pm UTC](https://forum.crystal-lang.org/t/handling-method-calls-to-nullable-objects/2735 "2020-12-03T15:59:31Z")

</div>

So I’m still on the learning curve and while I understand the error message OK, I’m unable to figure out how to make the call in a way that satisfies the compiler. The cfg object has a property called common which is …

---

## [Logging to a file](https://forum.crystal-lang.org/t/logging-to-a-file/2719)

<div class="topic-metadata">

**Author:** [@jim2007](https://forum.crystal-lang.org/u/jim2007)\
**Replies:** 8\
**Last updated:** [November 30, 2020, 4:49pm UTC](https://forum.crystal-lang.org/t/logging-to-a-file/2719 "2020-11-30T16:49:38Z")

</div>

Can someone please point me to a simple example of writing log messages to a file? I would have thought this was a common thing, but I can’t seem to find an example in the documentation.

---

## [\[Screencast\] Translating a Lucky app with the TechMagister/i18n shard](https://forum.crystal-lang.org/t/screencast-translating-a-lucky-app-with-the-techmagister-i18n-shard/2640)

<div class="topic-metadata">

**Author:** [@stephendolan](https://forum.crystal-lang.org/u/stephendolan)\
**Replies:** 0\
**Last updated:** [October 26, 2020, 4:40pm UTC](https://forum.crystal-lang.org/t/screencast-translating-a-lucky-app-with-the-techmagister-i18n-shard/2640 "2020-10-26T16:40:45Z")

</div>

I recently translated an app that I’m building in Lucky, and thought it’d be helpful to share the tooling I set up as well as a few simple examples! I think this is a really critical piece of web development that a lot …

---

## [\[Blog Post\] Crystal JSON beyond the basics](https://forum.crystal-lang.org/t/blog-post-crystal-json-beyond-the-basics/2603)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 8\
**Last updated:** [October 9, 2020, 4:28am UTC](https://forum.crystal-lang.org/t/blog-post-crystal-json-beyond-the-basics/2603 "2020-10-09T04:28:03Z")

</div>

Hi Crystal folks, I’ve just published an article on how to use the json package for encoding and decoding algebraic data types. This covers Automatic encoding with JSON::Serializable Type resolution with discrimin…

---

## [Passing data during "crystal build"](https://forum.crystal-lang.org/t/passing-data-during-crystal-build/2602)

<div class="topic-metadata">

**Author:** [@franza](https://forum.crystal-lang.org/u/franza)\
**Replies:** 2\
**Last updated:** [October 7, 2020, 7:41am UTC](https://forum.crystal-lang.org/t/passing-data-during-crystal-build/2602 "2020-10-07T07:41:18Z")

</div>

Hello, Is there a way to pass data during the crystal build? What I mean is similar to how it’s done in Go: go build -ldflags "-X main.VariableName=VariableValue" see article - https://blog.alexellis.io/inject-build-t…

---

## [\[Screencast\] Lucky framework's unique take on rendering HTML with plain Crystal methods](https://forum.crystal-lang.org/t/screencast-lucky-frameworks-unique-take-on-rendering-html-with-plain-crystal-methods/2477)

<div class="topic-metadata">

**Author:** [@stephendolan](https://forum.crystal-lang.org/u/stephendolan)\
**Replies:** 1\
**Last updated:** [August 27, 2020, 4:18pm UTC](https://forum.crystal-lang.org/t/screencast-lucky-frameworks-unique-take-on-rendering-html-with-plain-crystal-methods/2477 "2020-08-27T16:18:51Z")

</div>

Just released my love letter to the way Lucky handles rendering HTML using plain Crystal methods. It’s been a game-changer for my developer productivity, and was a huge reason why I got involved with Lucky and, through t…

---

## [\[Screencast\] Named slots in Lucky framework components](https://forum.crystal-lang.org/t/screencast-named-slots-in-lucky-framework-components/2449)

<div class="topic-metadata">

**Author:** [@stephendolan](https://forum.crystal-lang.org/u/stephendolan)\
**Replies:** 0\
**Last updated:** [August 17, 2020, 4:25pm UTC](https://forum.crystal-lang.org/t/screencast-named-slots-in-lucky-framework-components/2449 "2020-08-17T16:25:20Z")

</div>

Still quite new to the whole screencasting thing, but I’m hoping at least a few folks will gain something from the latest LuckyCasts video on how to use named slots in your Lucky components! If you haven’t…

---

## [Live coding a URL status checker in Crystal](https://forum.crystal-lang.org/t/live-coding-a-url-status-checker-in-crystal/1400)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 15\
**Last updated:** [August 1, 2020, 8:31am UTC](https://forum.crystal-lang.org/t/live-coding-a-url-status-checker-in-crystal/1400 "2020-08-01T08:31:17Z")

</div>

Hi all :wave: I’d like to share a bunch of live coding sessions I’ve streamed on Twitch. The idea is to explore Crystal’s concurrency, with emphasis on Channels, Fibers and the CSP model, by means of building a simple t…

---

## [Running crystal in AWS lambda](https://forum.crystal-lang.org/t/running-crystal-in-aws-lambda/166)

<div class="topic-metadata">

**Author:** [@spinscale](https://forum.crystal-lang.org/u/spinscale)\
**Replies:** 6\
**Last updated:** [April 22, 2019, 1:08pm UTC](https://forum.crystal-lang.org/t/running-crystal-in-aws-lambda/166 "2019-04-22T13:08:04Z")

</div>

Hey, I wrote a quick blog post how to run a crystal app in AWS Lambda thanks to the newly announced custom runtimes. No rocket science in there, but maybe it helps others. Despite crystal you need serverless, a node-bas…

---

## [Utilizing Macros & Annotations in a Web Framework (Part 2)](https://forum.crystal-lang.org/t/utilizing-macros-annotations-in-a-web-framework-part-2/2383)

<div class="topic-metadata">

**Author:** [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Replies:** 0\
**Last updated:** [July 27, 2020, 10:57pm UTC](https://forum.crystal-lang.org/t/utilizing-macros-annotations-in-a-web-framework-part-2/2383 "2020-07-27T22:57:21Z")

</div>

---

## [Part 1 of my building a blockchain with Crystal series](https://forum.crystal-lang.org/t/part-1-of-my-building-a-blockchain-with-crystal-series/2366)

<div class="topic-metadata">

**Author:** [@nolyoi](https://forum.crystal-lang.org/u/nolyoi)\
**Replies:** 2\
**Last updated:** [July 23, 2020, 6:45pm UTC](https://forum.crystal-lang.org/t/part-1-of-my-building-a-blockchain-with-crystal-series/2366 "2020-07-23T18:45:33Z")

</div>

Here is the first post of a short series I’m writing about building a blockchain using the lovely Crystal language. Enjoy! https://nolanm.dev/posts/10-a-rudimentary-blockchain-written-in-crystal

---

## [\[Video tutorial\] Building an interactive DSL](https://forum.crystal-lang.org/t/video-tutorial-building-an-interactive-dsl/2311)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 2\
**Last updated:** [July 10, 2020, 9:16am UTC](https://forum.crystal-lang.org/t/video-tutorial-building-an-interactive-dsl/2311 "2020-07-10T09:16:14Z")

</div>

Hi folks :wave: Here is a write-up of my 5-episode series on building an interactive Domain-Specific Language in Crystal. This might be new to you, in case you managed to not hear me shouting about it on Twitter and Red…

---

## [OpenGL with Crystal](https://forum.crystal-lang.org/t/opengl-with-crystal/2298)

<div class="topic-metadata">

**Author:** [@gummybears](https://forum.crystal-lang.org/u/gummybears)\
**Replies:** 1\
**Last updated:** [July 2, 2020, 3:08pm UTC](https://forum.crystal-lang.org/t/opengl-with-crystal/2298 "2020-07-02T15:08:31Z")

</div>

For those who are interested to learn OpenGL, please see https://github.com/gummybears/opengl\_with\_crystal

---

## [Docs need updating for 128 bit Ints](https://forum.crystal-lang.org/t/docs-need-updating-for-128-bit-ints/2266)

<div class="topic-metadata">

**Author:** [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Replies:** 2\
**Last updated:** [June 20, 2020, 5:27pm UTC](https://forum.crystal-lang.org/t/docs-need-updating-for-128-bit-ints/2266 "2020-06-20T17:27:48Z")

</div>

API docs: https://crystal-lang.org/api/0.35.1/ contains info on 128 bit ints: https://crystal-lang.org/api/0.35.1/Int128.html but in ref manual: https://crystal-lang.org/reference/ no mention of 128 bit ints: https:/…

---

## [Dependency Injection in Crystal](https://forum.crystal-lang.org/t/dependency-injection-in-crystal/1005)

<div class="topic-metadata">

**Author:** [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Replies:** 4\
**Last updated:** [June 17, 2020, 2:45am UTC](https://forum.crystal-lang.org/t/dependency-injection-in-crystal/1005 "2020-06-17T02:45:57Z")

</div>

---

## [Best libraries for language study](https://forum.crystal-lang.org/t/best-libraries-for-language-study/2195)

<div class="topic-metadata">

**Author:** [@hutou](https://forum.crystal-lang.org/u/hutou)\
**Replies:** 2\
**Last updated:** [June 6, 2020, 6:49am UTC](https://forum.crystal-lang.org/t/best-libraries-for-language-study/2195 "2020-06-06T06:49:49Z")

</div>

I have been using Crystal for several months now, and I would like to improve my knowledge of the language (best practices, idioms). For this purpose, I plan to study some standard libraries or shards, but I would like …

---

## [\[Blog Post\] 5 Use cases for Crystal's select statement](https://forum.crystal-lang.org/t/blog-post-5-use-cases-for-crystals-select-statement/2061)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 4\
**Last updated:** [June 1, 2020, 7:38pm UTC](https://forum.crystal-lang.org/t/blog-post-5-use-cases-for-crystals-select-statement/2061 "2020-06-01T19:38:50Z")

</div>

Hi folks :raised\_hands: I finally managed to put my thoughts on Crystal’s select in order. You can find them here: Not much has been written on the topic, so let me know if any section lacks in clarity or you spot an…

---

## [Share your ICR or bash session with other users on LAN](https://forum.crystal-lang.org/t/share-your-icr-or-bash-session-with-other-users-on-lan/2120)

<div class="topic-metadata">

**Author:** [@pebauer68](https://forum.crystal-lang.org/u/pebauer68)\
**Replies:** 0\
**Last updated:** [May 16, 2020, 8:47pm UTC](https://forum.crystal-lang.org/t/share-your-icr-or-bash-session-with-other-users-on-lan/2120 "2020-05-16T20:47:12Z")

</div>

The bash\_chat.cr program allows multiple users to connect to a single server process like a long running interactive bash session or any other program which runs on the command…

---

## [Making Blog Posts](https://forum.crystal-lang.org/t/making-blog-posts/2044)

<div class="topic-metadata">

**Author:** [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Replies:** 7\
**Last updated:** [May 6, 2020, 2:15pm UTC](https://forum.crystal-lang.org/t/making-blog-posts/2044 "2020-05-06T14:15:32Z")

</div>

I was wondering if there is a way to submit blog posts for the website Blog. After doing a number of Rosetta Code tasks now, I have experienced lots of trials, tribulations, and triumphs that could be educational for ot…

---

## [Rosetta Code Chronicles #1](https://forum.crystal-lang.org/t/rosetta-code-chronicles-1/2064)

<div class="topic-metadata">

**Author:** [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Replies:** 1\
**Last updated:** [May 3, 2020, 8:17pm UTC](https://forum.crystal-lang.org/t/rosetta-code-chronicles-1/2064 "2020-05-03T20:17:32Z")

</div>

This is the first in a series sharing my knowledge, insights, and thoughts acquired from my trials, tribulations, and triumphs solving Rosetta Code tasks using Crystal. Hopefully, this will help the intrepid reader to ma…

---

## [Advent of code 2019](https://forum.crystal-lang.org/t/advent-of-code-2019/1427)

<div class="topic-metadata">

**Author:** [@mavu](https://forum.crystal-lang.org/u/mavu)\
**Replies:** 29\
**Last updated:** [April 23, 2020, 5:12am UTC](https://forum.crystal-lang.org/t/advent-of-code-2019/1427 "2020-04-23T05:12:29Z")

</div>

Hi, Just a reminder that Advent of code has started for 2019. If you don’t know it, it is a coding advent calendar which has a small programming task every day until christmas. They usually start simple, but get reall…

---

## [Crystal paid courses](https://forum.crystal-lang.org/t/crystal-paid-courses/1961)

<div class="topic-metadata">

**Author:** [@kazzkiq](https://forum.crystal-lang.org/u/kazzkiq)\
**Replies:** 4\
**Last updated:** [April 15, 2020, 8:59pm UTC](https://forum.crystal-lang.org/t/crystal-paid-courses/1961 "2020-04-15T20:59:24Z")

</div>

Do you guys know of any “pro-level” course for Crystal? By pro-level I mean those courses that get you by the hand and teach every single aspect of the language, from ground up, with hundreds of lessons, like those comp…

---

## [Finally starting to get some YouTube content created](https://forum.crystal-lang.org/t/finally-starting-to-get-some-youtube-content-created/1845)

<div class="topic-metadata">

**Author:** [@watzon](https://forum.crystal-lang.org/u/watzon)\
**Replies:** 5\
**Last updated:** [March 23, 2020, 9:39pm UTC](https://forum.crystal-lang.org/t/finally-starting-to-get-some-youtube-content-created/1845 "2020-03-23T21:39:58Z")

</div>

I’ve been planning on this for a while, but it’s taken a bit to get my motivation up. Today though I recorded two videos, and I plan on releasing several a week related to Crystal and other programming concepts. Here are…

---

## [\[Video tutorial\] Concurrency in Crystal: a primer](https://forum.crystal-lang.org/t/video-tutorial-concurrency-in-crystal-a-primer/1783)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 0\
**Last updated:** [March 1, 2020, 8:18pm UTC](https://forum.crystal-lang.org/t/video-tutorial-concurrency-in-crystal-a-primer/1783 "2020-03-01T20:18:10Z")

</div>

Hi folks, excited to share that I just posted an introductory presentation on Crystal’s concurrency :tada: We talk about CSP, (a simplified version of) Crystal’s execution model, buffered channels and correctness in co…

---

## [A half-hour to learn Rust](https://forum.crystal-lang.org/t/a-half-hour-to-learn-rust/1775)

<div class="topic-metadata">

**Author:** [@oren](https://forum.crystal-lang.org/u/oren)\
**Replies:** 2\
**Last updated:** [March 1, 2020, 8:04pm UTC](https://forum.crystal-lang.org/t/a-half-hour-to-learn-rust/1775 "2020-03-01T20:04:15Z")

</div>

I like this format for learning a new technology - short snippet of annotated code I can copy paste and run - https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust/ The only downsize in this example is some of the…

---

## [\[Video tutorial\] Adding Sign in with Twitter to your Crystal web app](https://forum.crystal-lang.org/t/video-tutorial-adding-sign-in-with-twitter-to-your-crystal-web-app/1718)

<div class="topic-metadata">

**Author:** [@lbarasti](https://forum.crystal-lang.org/u/lbarasti)\
**Replies:** 3\
**Last updated:** [February 23, 2020, 6:33pm UTC](https://forum.crystal-lang.org/t/video-tutorial-adding-sign-in-with-twitter-to-your-crystal-web-app/1718 "2020-02-23T18:33:19Z")

</div>

Hi folks, I just published a tutorial on how to add the Sign in with Twitter functionality to a Crystal web app. The inspiration for the tutorial came from a shard I wrote a while ago to simplify the 3-legged OAuth1.…

---

## [Resources aimed at brainwashed C++ programmers?](https://forum.crystal-lang.org/t/resources-aimed-at-brainwashed-c-programmers/1548)

<div class="topic-metadata">

**Author:** [@darenw](https://forum.crystal-lang.org/u/darenw)\
**Replies:** 3\
**Last updated:** [December 31, 2019, 5:53am UTC](https://forum.crystal-lang.org/t/resources-aimed-at-brainwashed-c-programmers/1548 "2019-12-31T05:53:52Z")

</div>

Decades of using C, C++ and other compiled languages with similar concepts has brainwashed me into thinking about what’s on the stack, how things are stored in structs, the way pointers might be used internally, generall…

---

## [Mentor/Maintainer Needed at Exercism](https://forum.crystal-lang.org/t/mentor-maintainer-needed-at-exercism/995)

<div class="topic-metadata">

**Author:** [@kniknoo](https://forum.crystal-lang.org/u/kniknoo)\
**Replies:** 7\
**Last updated:** [December 30, 2019, 3:39pm UTC](https://forum.crystal-lang.org/t/mentor-maintainer-needed-at-exercism/995 "2019-12-30T15:39:16Z")

</div>

Hello. I first discovered Crystal via https://exercism.io but I was sad to find that after a few weeks, I didn’t have a mentor get back to me. Would anyone be willing to mentor me (and the other two in queue) until I com…

[Previous page](https://forum.crystal-lang.org/c/learning-resources/8.md?page=1)

[Next page](https://forum.crystal-lang.org/c/learning-resources/8.md?page=3)
