Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Provide seminars project] Training topics #18

Open
pdgonzalez872 opened this issue Feb 24, 2020 · 11 comments
Open

[Provide seminars project] Training topics #18

pdgonzalez872 opened this issue Feb 24, 2020 · 11 comments

Comments

@pdgonzalez872
Copy link
Collaborator

pdgonzalez872 commented Feb 24, 2020

Let's share what we think should be the focus for training. There are no bad ideas, so don't be shy :)

@miriampena
Copy link
Collaborator

how to setup a small web server in elixir?

@miriampena
Copy link
Collaborator

how does a gen_server work?

@starbelly
Copy link
Member

starbelly commented Feb 24, 2020

how does a gen_server work?

Yes and supervision, supervision, supervision.

how to setup a small web server in elixir?

Yes, but taking that idea further... build a web framework from scratch. No plug, etc. That might be too much depending on time.

@pdgonzalez872
Copy link
Collaborator Author

pdgonzalez872 commented Feb 24, 2020

@pdgonzalez872
Copy link
Collaborator Author

Training focused to use existing tools, kinda the opposite approach of "building from scratch", maybe we call it "use the wheel, use it well" :)

  • boot up a webserver
  • connect it to a database
  • build a release?
  • deploy it to Heroku (free) or Gigalixir (free)

@starbelly
Copy link
Member

@pdgonzalez872 Ahh I see. 👍

@miriampena
Copy link
Collaborator

how does a gen_server work?

Yes and supervision, supervision, supervision.

how to setup a small web server in elixir?

Yes, but taking that idea further... build a web framework from scratch. No plug, etc. That might be too much depending on time.

I meant setup one web server, not build it . so you just get your endpoint working.

@pdgonzalez872
Copy link
Collaborator Author

@starbelly , creating your own is also an interesting topic. Not shutting anything down at the moment. Keep them coming!

@starbelly
Copy link
Member

@pdgonzalez872 haha no worries... I like to take people to the deep end of the pool 😁 But that's not the context here, so no worries.

@elbrujohalcon
Copy link
Collaborator

elbrujohalcon commented Feb 25, 2020

From the training I gave at @AdRoll (each root item is a 2-hours + practice time workshop):

  • Basics of Functional Programming
    • The Erlang Shell
    • Expressions & Variables
    • Your first Erlang Module
    • Attributes & Functions
    • The Erlang Compiler
    • Your first test
    • Pattern-Matching
    • Recursion
  • Advanced Sequential Erlang Techniques
    • High-Order functions
    • List Comprehensions
    • Binary Comprehensions
  • Concurrent Erlang 101: Messages & Processes
    • Spawning Processes
    • Message Passing
    • Receiving Messages
    • Loops & Tail Recursion
    • Timeouts
    • Stateful Processes
  • Error Handling
    • Sequential Erlang
      • catch and throw
      • try…catch…after…end
      • Throws, errors and exits
    • Concurrent Erlang
      • Linked Processes
      • Exit Signals
      • Trapping Exits
      • Monitors

@elbrujohalcon
Copy link
Collaborator

The ideas we had for the following sessions at NextRoll (the training was interrupted because it was for people in SF and I'm living in Barcelona, Spain now… so we still need to figure out a schedule that works):

  • Intro to OTP
    • A bit of history
    • What comes in the box? (i.e. an overview of tools and libraries)
    • Behaviors 1:1 (i.e. recognizing common patterns and abstracting them)
    • Existing behaviors and when to use each
  • Deep dive into gen_server
    • When should we use one?
    • Writing tests for a gen_server
    • Required and optional callbacks
  • Building a supervision tree
    • What is a supervisor and when to use it?
    • The different restart strategies
    • The different kinds of supervisor
    • The different kinds of children and when to use each one
    • Testing supervisors
    • Supervising supervisors and building supervision trees
    • Tips on how to better build your trees in different scenarios
  • Building an application
    • What is an OTP application and when to use it?
    • Required and optional callbacks
    • The application environment (including config files)
    • Managing apps with rebar3 (the basics, including dependencies)
    • Testing applications
    • Distributed applications
  • Releases
    • <insert stuff about releases here>
  • Tools
    • Dialyzer
    • Xref
    • Elvis
    • et
    • dbg / redbug / recon
    • <others>

@pdgonzalez872 pdgonzalez872 changed the title Training topics [Provide seminars project] Training topics May 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants