Skip to content
This repository has been archived by the owner on Jan 7, 2018. It is now read-only.

Project ideas

Claudio Ortolina edited this page May 16, 2015 · 1 revision

Enumerable (1hr)

  • Topics: pattern-matching, function application and recursion
  • Description: implement from scratch reverse/1, map/2, reduce/2 and reduce/3 (for finite collections).

Triangles (1hr)

  • Topics: pattern-matching, guard clauses
  • Description: a module capable of categorising/validating a triangle spec.

Planetarium (2hrs)

  • Topics: structs and protocols
  • Description: model a star system data structure with planets. Needs to be able to update/delete planet information and perform basic calculations (average mass, etc.).

Let's build a worker (2hrs)

  • Topics: processes, messages and monitoring
  • Description: step by step exercise on how to build a process with an acceptor loop and a monitor. Used to introduce some ideas that will be referenced later on when talking about OTP.

A key-value store (3hrs)

  • Topics: OTP, workers, supervisors, ets
  • Description: starting from a simple gen_server, building a simple key-value store. First as a standalone process, then a named process, then introducing ets as a storage backend.

Asynchronous data fetch (full day)

  • Topics: OTP, external libraries, supervision trees
  • Description: create a system that can dynamically add and remove workers that fetch information about a specific github user. One worker per username. All workers need to be supervised, data needs to survive crashes and fetching needs to be asyncronous. Optimize for fast reads.

Railway oriented programming (4hrs)

  • Topics: Phoenix, functional patterns, macros
  • Description: how to model and structure application flow according to the railway paradigm. Flow includes parsing some data, validating, storing and some extra background processing.