Posts
Elixir Syntax: Functions
Elixir Syntax: Control Flow
Elixir Syntax: Variables
Elixir Syntax: Data Types and Collections
Elixir and Raft: Running a cluster with state
Elixir and Mnesia: Running a cluster with state
Elixir: Running a cluster of dynamic nodes
Elixir Testing Series
Elixir: Running a cluster of nodes
Elixir: Resilient distributed systems
Leveraging CRDTs for eventual consistency
Ecto Series
Exploring retrieval-augmented generation (RAG)
The right tool for the job
Ollama and running AI on the edge
Running a home server
Phoenix Channels: Tracking presence
Phoenix Channels: Inverting responsibility
Phoenix Channels: Real-time with WebSockets
Consumer-Driven Contract Testing: Implementing Postman
Documenting APIs: Implementing OpenAPI
APIs as Contracts: Clear expectations and defined responsibilities
Elixir API: Implementing CRUD operations with Phoenix
Elixir GenServer: Fault-tolerant services with supervisors
Elixir Agent: Encapsulating the gen_server state logic
Elixir Observability: Using logs, metrics, and traces
Elixir and Grafana: Basic logging
Elixir and Oban: For mission-critical tasks
Elixir and Task: Managing asynchronous execution
Testing in Elixir: Why good testing practices matter
Elixir Testing: Mocking external services
Elixir: Managing external services with dependency injection
LiveView Testing: Ensuring real-time synchronization across sessions
LiveView: Navigating concurrency in real-time applications
LiveView: The basics
Elixir: An introduction to GenServer
Testing in Elixir: Patterns for Phoenix live-view
Elixir and Ecto: A DSL for testing schemas and changesets
Elixir and Ecto: Testing behaviors
Absence in Elixir: Gracefully avoiding `nil`
Elixir and Errors: Let it crash
Elixir: Basic setup series
Credo and Elixir: Add linting and analysis
Dialyzer and Elixir: Add static code analysis
Ecto: Basic schemas and changesets
Ecto: Basic setup
Elixir: Publish your docs
A functional programming case for Tailwind
Real-time interactions in Phoenix: LiveView vs. Channels
Socket.IO and Phoenix Channels: A comparative analysis
Concurrency in high-stakes systems: Why Erlang/Elixir (BEAM) stands out
Lessons from writing functional-dart
Why Jekyll for this blog?
subscribe via RSS