Posts on gen-server

  • 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
  • Elixir: Resilient distributed systems

    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: 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.
  • Elixir Agent: Encapsulating the gen_server state logic

    Elixir introduces Agent, a pre-built abstraction of gen_server that simplifies state management.
  • Elixir GenServer: Fault-tolerant services with supervisors

    A GenServer is a generic server process in Elixir that abstracts and manages the lifecycle and state of a server process. It handles incoming requests in sequential order, which is particularly useful for stateful operations.
  • LiveView Testing: Ensuring real-time synchronization across sessions

    This post is part of the Testing Series, an overview of testing strategies for Elixir applications.
  • LiveView: Navigating concurrency in real-time applications

    Software designed to solve real-life problems must effectively address the issue of concurrency, where the order of operations cannot be trusted due to the unpredictability of timing, distance between interactions, and the potential for missed or delayed messages. To prevent corruption of data or application state, it is crucial to...
  • LiveView: The basics

    LiveView is an extension of the Phoenix Framework designed for building real-time, lightweight, interactive web views. It processes most of its logic on the server, minimizing the need for JavaScript, thereby reducing code complexity and enhancing performance.
  • Elixir: An introduction to GenServer

    Elixir runs on the BEAM, the Erlang virtual machine, which allows Elixir to seamlessly interoperate with Erlang code and packages. This enables developers to leverage the extensive ecosystem available in Erlang while writing in Elixir’s modern and expressive syntax.