Posts on phoenix

  • Elixir and Raft: Running a cluster with state

    Elixir Cluster Series Leveraging CRDTs for eventual consistency Elixir: Resilient distributed systems Elixir: Running a cluster of nodes Elixir: Running a cluster of dynamic nodes Elixir and Mnesia: Running a cluster with state Elixir and Raft: Running a cluster with state
  • Elixir and Mnesia: Running a cluster with state

    Elixir Cluster Series Leveraging CRDTs for eventual consistency Elixir: Resilient distributed systems Elixir: Running a cluster of nodes Elixir: Running a cluster of dynamic nodes Elixir and Mnesia: Running a cluster with state Elixir and Raft: Running a cluster with state
  • Elixir: Running a cluster of dynamic nodes

    Elixir Cluster Series Leveraging CRDTs for eventual consistency Elixir: Resilient distributed systems Elixir: Running a cluster of nodes Elixir: Running a cluster of dynamic nodes Elixir and Mnesia: Running a cluster with state Elixir and Raft: Running a cluster with state
  • Elixir: Running a cluster of nodes

    Elixir Cluster Series Leveraging CRDTs for eventual consistency Elixir: Resilient distributed systems Elixir: Running a cluster of nodes Elixir: Running a cluster of dynamic nodes Elixir and Mnesia: Running a cluster with state Elixir and Raft: Running a cluster with state
  • Phoenix Channels: Tracking presence

    Systems that require human intervention, especially in response to emergencies, depend on having accurate information about who is currently available. Phoenix Presence leverages Conflict-free Replicated Data Types (CRDTs) and the BEAM to provide a reliable and scalable presence tracking solution.
  • Phoenix Channels: Inverting responsibility

    WebSockets facilitate real-time, bi-directional communication with low latency but introduce inherent challenges with concurrency. They lack guaranteed message delivery, where messages can arrive out of sequence or not at all. This can lead to inaccurate data presentations on the client side, which is reasonable in non-critical contexts but unacceptable in...
  • Phoenix Channels: Real-time with WebSockets

    A Channel creates a separate process for each open WebSocket connection. It utilizes the WebSocket’s heartbeat to monitor the health of the connection, automatically terminating the process when the WebSocket is closed.
  • Consumer-Driven Contract Testing: Implementing Postman

    Consumer-Driven Contract Testing (CDCT) shifts the responsibility for integration testing from the provider to the consumers. Under this model, providers can freely update their services as long as the changes continue to pass tests defined by consumers. These tests, acting as contracts, specify the conditions the API must meet. If...
  • Documenting APIs: Implementing OpenAPI

    APIs are contracts that stipulate expectations, responsibilities, and mechanisms for identifying faults as services evolve. To ensure these contracts are effectively implemented, the supporting documentation must be current, precise, and easily navigable.
  • APIs as Contracts: Clear expectations and defined responsibilities

    APIs (Application Programming Interfaces) establish contracts to enforce expectations, responsibilities, and mechanisms for fault identification as services evolve. These contracts are fundamental in maintaining reliability and accountability in today’s dynamic environments.
  • Elixir API: Implementing CRUD operations with Phoenix

    Phoenix, like most modern frameworks, has built-in functionality to reduce boilerplate for the common Create, Read, Update, Delete (CRUD) pattern.
  • Elixir and Task: Managing asynchronous execution

    “The real world is concurrent… When you send an email, you have no idea what’s going on at the other end. You don’t share your variables with them or your data tables. They just take the message and do something. That’s how the real world works.” – Joe Armstrong
  • Testing in Elixir: Why good testing practices matter

    This post is part of the Testing Series, an overview of testing strategies for Elixir applications.
  • Elixir Testing: Mocking external services

    This post is part of the Testing Series, which provides an overview of testing strategies for Elixir applications
  • Testing in Elixir: Patterns for Phoenix live-view

    This post is part of the Testing Series, an overview of testing strategies for Elixir applications.