1. Crystal
  2. Introduction
    1. Crystal Language
    2. Crystal Shards (3rd party libraries)
    3. How to install 3rd party shards?
    4. Install Crystal
    5. Crystal in Docker on Linux
    6. Hello World (puts)
    7. Run Crystal source code
    8. Compile Crystal to executable
    9. Speed of Crystal
    10. Hello World (print)
    11. Hello Name (variables)
    12. Hello Name with interpolation
    13. Interpolation
    14. Escaping - Alternative quote as delimiters
    15. Debugging print p!
    16. Comments
    17. Code formatting
    18. Types - typeof
    19. Compound Types - typeof
    20. Add numbers - concatenate strings
    21. Add mixed strings and Integers
    22. Numeric Operators
    23. Methods of Int32
    24. Methods of Float64
    25. Program name
    26. Command line arguments - ARGV
    27. Early exit
    28. Rectangle
    29. True values
    30. Math - PI
    31. Read from STDIN
    32. Read number from STDIN
    33. Interactive environments
    34. Crystal one-liners
    35. Crystal and random numbers
    36. Exercise: Hello World
    37. Exercise: Hello Name - STDIN
    38. Exercise: Hello Name - ARGV
    39. Exercise: Circle STDIN
    40. Exercise: Circle ARGV
    41. Exercise: Calculator STDIN
    42. Exercise: Calculator ARGV
    43. Exercise: Age limit
  3. Strings
    1. Strings intro
    2. Length or size of a string
    3. Locate substring (index, rindex)
    4. Reverse a string
    5. Substring, range of characters
    6. String includes another string
    7. String starts with
    8. String ends with
    9. Replace part of a string (substitute)
    10. Is the string empty or blank?
    11. Iterate over characters of a string
    12. Type conversion from string to float, to int
    13. Converting string to integer or float
    14. Split String
    15. String Transliteration
    16. String Builder
    17. sprintf and %
    18. Split to the same string length
    19. Split characters
    20. printf
    21. Here documents
  4. Conditionals
    1. Comparison Operators
    2. Spaceship operator
    3. if statement
    4. elsif
    5. unless statement
    6. Suffix if
    7. Suffix unless
    8. Logical operators
    9. Truth-table
    10. case / when
    11. case of types
    12. Ternary operator and or to set default value
    13. Exercise: Number Guessing game - level 0
    14. Solution: Number Guessing game - level 0
  5. Loops
    1. loop
    2. loop controls (next, break)
    3. while
    4. until
    5. Exercise: Number guessing game
    6. Solution: Number guessing game
  6. Arrays
    1. Arrays intro
    2. Array elements - indexing
    3. Array iterate over (each, each_with_index)
    4. Array push, append, <<
    5. Empty array
    6. Count digits
    7. Operations on arrays
    8. Add arrays
    9. Repeat arrays
    10. Select (filter, grep)
    11. Reject (negative filter, grep)
    12. Transform with map
    13. Sample from array
    14. Shuffle array
    15. join
    16. Remove nil elements
    17. Create Array with nil
    18. Does array include a value
    19. Delete element from array by value
    20. Delete element from array by location
    21. Insert element into array at location
    22. Arrays shift - remove first element
    23. Arrays uniq elements
    24. First element of the array
    25. Permutations
  7. Hash
    1. Hash intro
    2. Count words
    3. Create empty hash
    4. Hash and types
    5. Hash get value, get default value
    6. Merge hashes
    7. Delete - remove an element from a hash
    8. Reject - remove an element from a hash
    9. Clear - empty a hash
    10. Select - keep certain key-value pairs
    11. Multi-dimensional hash
    12. Dig a hash
  8. Files
    1. Files intro
    2. Read from file (slurp)
    3. Read lines into array
    4. Read file line-by-line
    5. Write to file
    6. Append to file
    7. Does file exist?
    8. Size of file?
    9. Last Modified date of file?
    10. Counter
    11. Multi Counter JSON
    12. Multi Counter YAML
  9. Directories
    1. List directory content
    2. List directory tree
    3. Get Current working directory (cwd, pwd)
    4. Temporary directory
    5. Tempdir function
    6. Join / concatenate file system path
    7. Join / concatenate file system path
    8. Path from string
    9. Expand Path
  10. Sets
    1. Create empty set
    2. Set examples
  11. Functions
    1. Functions and methods
    2. Function return value
    3. Function parameter passing
    4. Function parameter default value
    5. Wrong number of arguments
    6. Any number of arguments (splat, *)
    7. Manually separate
    8. Tuple from
    9. Array overload
    10. Multiple dispatch
    11. Implicit return value
    12. Return Type definition
    13. Type or Nil
    14. Yield
    15. Yield with parameters
    16. Block and parameters
  12. Tuples and Named Tuples
    1. Create Tuple
    2. Create Named Tuple
    3. Access fields of Named Tuple
    4. Named Tuple with non-alphanumeric fields
    5. Named Tuple with optional field
  13. Structs
    1. Empty struct
    2. Initialize immutable struct
    3. Initialize immutable struct - shorthand
    4. Immutable struct with getters
    5. Immutable struct with getter macro
    6. Mutable Struct with setter
    7. Mutable Struct with property macro
    8. Struct with optional attributes
    9. Struct with default value
    10. Struct pass-by-value
    11. Struct from JSON
    12. Struct from JSON - upper case
    13. Struct both from JSON and initialize
    14. Struct from JSON - manual parsing
    15. Multi-level struct manually
    16. Multi-level struct from JSON
    17. Struct from JSON with extra data
    18. Struct from JSON missing data (optional fields)
    19. Extend struct
    20. Extend other structs
  14. Classes
    1. Empty Class definition
    2. Class with attributes
    3. Class with getters
    4. Class with setter
    5. Class with getters and setter (property)
    6. Class with property with default value
    7. Class with declared getter and default value
    8. Class with declared getter
    9. Serialize Crystal-lang class to/from JSON from_json to_json
    10. Compare objects for equality
    11. Singleton using class properties
    12. Singleton using class properties with default values
    13. Class monkey-path add method
    14. Stringification to_s
  15. Regexes
    1. Alternate delimiter matching slashes
    2. Substitute
    3. gsub
  16. Testing
    1. Testing 1
    2. Testing with Spec
  17. Modules
    1. Namespace
    2. Extend class - include module
  18. JSON
    1. JSON (to_json, parse)
    2. JSON to NamedTuple
    3. Reading a JSON file
    4. JSON to Array
  19. Range
    1. Range using dots
    2. Range using a class
    3. Range - sum
    4. Range - count
    5. Range and loop controls
    6. Range with step
    7. Range to Array
  20. Random
    1. rand
    2. Random in other parts of Crystal
    3. Random as a class
    4. Random - seed
  21. YAML
    1. Parse YAML
  22. Exception Handling in Crystal-lang
    1. Catch exception - begin, rescue
    2. Raise exception
  23. Logging
    1. Crystal logging
  24. SQLite
    1. Try SQLite
    2. Multi-counter with SQLite
    3. SQLite last_id last_insert_id
    4. SQLite UPDATE row_affected
    5. SQLite exception handling (during INSERT)
    6. SQLite all
    7. SQLite in memory
  25. Time
    1. Dates and Time
    2. Sleep
    3. Time difference or Time::Span
    4. Elapsed time
    5. Timestamp formatting
    6. Add timespan
    7. Time Types
  26. CLI
    1. ARGV
    2. Usage statement and exit
    3. Command line Option Parser (argparse, GetOpts)
    4. Pass parameters to OptionParser
    5. Order of parsing
  27. HTTP Client
    1. HTTP Client example
    2. Parse URL (URI)
    3. HTTP::Request GET
    4. HTTP::Request POST
  28. Process
    1. Execute external program (system)
    2. Execute external program (backtick)
    3. Execute external program (Process)
    4. Execute external program (capture)
    5. Execute external program (capture)
    6. Abort
  29. Concurrency
    1. Send and receive
    2. Concurrent HTTP request
  30. Kemal
    1. About Kemal
    2. Kemal Install
    3. Hello World
    4. Testing Hello World
    5. Kemal Autorestart (autoreload)
    6. Kemal GET parameters
    7. Kemal POST parameters
    8. Kemal Route parameters
    9. Kemal ECR Templates
    10. Kemal with Jinja templates
    11. Kemal Elapsed time
    12. Accept GET, POST, and route parameter in the same POST route
    13. Kemal indicate 404
    14. Kemal Styling 404 pages
    15. Kemal set headers (change content-type)
    16. Kemal redirect
    17. Kemal in Docker
  31. Other
    1. Sequence
    2. Check if variable is nil?
    3. Single quotes vs double quotes
    4. No type-checking?
    5. Divide by zero is Infinity
    6. Require other files
    7. List Methods
    8. Checking the slides
    9. Crystal mine
    10. Ameba Linter
    11. Gravatar
    12. Try Crystal
    13. STDERR, STDOUT
    14. Return Boolean
    15. Symbols
    16. Docspec
    17. require
    18. Constants
    19. Multiple assignment
    20. Chained assignment
    21. Int methods: Times
    22. Int64 Zero
    23. Question mark: ?
    24. Exclamation mark: !
    25. Ampersand: &
    26. STDIN don't accept nil
    27. Math
    28. Proc
    29. Enums
    30. Type of array elements
    31. Environment variables
    32. Int32 or Nil
    33. Resources
  32. Crystal from 0 to Web site
    1. Crystal from 0 to Web site
    2. Background
    3. Why?
    4. I can do better
    5. How to learn
    6. When
    7. Shardbox
    8. What did I learn?
    9. Crystal is fun
    10. Shards
    11. Code formatter
    12. Ameba - Linter
    13. Spectator - testing framework
    14. Code coverage
    15. CI - GitHub Actions
    16. The language
    17. What do ? and ! mean?!
    18. Emojis and Unicode characters 💎
    19. Meaning of ?
    20. Meaning of !
    21. Web framework?
    22. Amber Framework
    23. Lucky Framework
    24. Kemal
    25. Crinja
    26. Shardbox
    27. Future
    28. Thank you - QA ?!?!
  33. Macros
    1. Macro - increment x by 1
    2. Macro - with parameter and placeholder
    3. Macro Swap
    4. Macro - internal variables - Swap fixed
    5. Macros function
    6. Macro to print type and content