RSSAmplifier

Blog

Allan MacGregor | Elixir Engineering & Technical Leadership

Elixir engineering, fintech architecture, and technical leadership insights from a CTO building regulated systems.

allanmacgregor.comRSS feed ↗94 posts

Latest posts

Vibecode Rescue: Auditing Vibecoded Apps for Common Mistakes and Failures

Code has become cheap, but having an agent generate an app doesn't make it a product. A new series reviewing SaaS apps that launched and failed to convert, or sit abandoned — and what went wrong.

'No X, but Y' and Other Tells: Wiring an LLM to Write in Your Voice

How to use LLMs as part of your writing workflow.

The Stability Tax: Why Elixir's Boring Versioning Is a Better AI Target

A decade of semantic versioning stability means AI agents trained on 2020 code still produce working 2026 code

Embedding Python in Elixir with Pythonx

Python interpreter integration and ML model inference in Elixir

Reading the Supervision Tree Contract, Key by Key

A code-first reference for OTP supervision in Elixir: child specs, the three strategies, restart types, restart intensity, shutdown semantics, and DynamicSupervisor.

Deploying Elixir with Kamal 2

Zero-downtime deployments, secrets management, and self-hosted Elixir apps

Optimizing Claude Code Workflows for Token Usage

A code-first walkthrough of how I cut a multi-agent Claude Code outline workflow from ~768k to ~85k output tokens — the fan-out cap, failure isolation, the approval gate, and live token tracking, all in real workflow-script JavaScript.

Observability for Elixir Applications

OpenTelemetry integration, distributed tracing, and structured logging

Phoenix Contexts Done Right

When to split contexts, cross-context communication, and avoiding the god context anti-pattern

LiveView Patterns for Complex UIs

Component design, nested live views, and handling complex state in LiveView

The Ash Framework: A Practical Introduction

Domains, resources, actions, and policies - when Ash makes sense

Zero Trust Authentication in Phoenix

Implementing Zero Trust Authentication with nimble_zta and identity-aware proxies

Property-Based Testing with StreamData

Beyond example-based tests: generators, shrinking, and finding edge cases

Distributed Elixir: Beyond the Basics

Node clustering, process groups, and handling network partitions in Elixir

Writing Elixir for AI Agents: Patterns That Help (and Hurt)

Code patterns that maximize AI agent success—and the anti-patterns that confuse them

Why AI Coding Agents Love Elixir (And You Should Too)

Immutability, pattern matching, and pure functions make Elixir ideal for AI coding agents—the data proves it

Elixir and AI: Building LLM-Powered Features

Using Instructor for structured LLM output and building AI features in Elixir

The AI-Native Elixir Project: What Changes When the Agent is Your Pair

How project structure, tooling, and practices evolve when AI agents are central to development

Testing LiveView Components in Isolation

Component testing strategies, mocking, and testing JS hooks

Building Real-Time Dashboards with LiveView

Telemetry integration, charting, and handling high-frequency updates in LiveView

Debugging Production Elixir with Observer and Recon

Remote shell access, process inspection, and tracing in production safely

Building APIs with Absinthe GraphQL

Schema design, dataloader, subscriptions, and authentication patterns

Event Sourcing with Elixir

Building event stores, projections, and handling schema evolution in Elixir

Elixir Fundamentals - Introduction to Elixir: Syntax, Basic Constructs

Introduction to the basic concepts of elixir, syntax, data structures and basic concepts

Using Elixir Meta Programming To Write Expressive And Flexible Code

Elixir functional programming programming meta programming

Building Resilient Systems with OTP Supervisors

Deep dive into supervisor strategies and designing supervision trees for real-world fault tolerance

Advanced Ecto Queries: Window Functions and CTEs

Using window functions, CTEs, and advanced SQL features through Ecto

Setting Up Tidewave: BEAM Introspection for Agentic Workflows

Expose BEAM process inspection, ETS exploration, and live tracing to your AI coding agent

Using Elixir Nif To Integrate With Rust

Using native implemented functions in elixir to integrate with rust

GenServer Patterns You Should Know

Beyond the basics: practical GenServer patterns from production systems

Multi-Tenancy Patterns in Ecto

Schema-based vs row-based multi-tenancy and query scoping strategies

Understanding BEAM Memory Management

Process heaps, garbage collection, and memory profiling in Elixir

Flow Based Programming With Elixir

Explaining flow based programming using elixir and its ecosystem

N 1 Issues With Ecto And Elixir

An overview of n 1 problems with elixir and ecto and how to deal with them

Simple versioning for your Elixir project

Simple versioning for your Elixir project with no fuzz

Founder Mode is Bulls**t

A criticism and rebuttal of Paul Graham's Founder Mode essay -- survivorship bias, false dichotomies, and the cult of the founder

Elixir for Fintech: Why It’s the Best Choice for Modern Financial Apps

Why Elixir deserves a more prominent role in fintech—it’s fast, reliable, and perfect for building financial apps that can handle massive traffic without breaking a sweat

Mastering Elixir in 2024: A study path

Documenting my learning journey in 2024 to become proficient and attempt to master Elixir and its ecosystem

Getting Started With Backstage.io

A quick introduction into Backstage.IO

Creating A Project Generator Template For Phoenix

Using mix template and mix generator to create a phoenix blog starter template with liveview and tailwindcss

Blog Update 2022/2023

A quick update of what has happened with the blog on the last 2 years

Using Abbreviations instead of Aliases

Why you should start using abbreviations instead of aliases

Circuit Breaker Pattern in Elixir

Design for failure with the circuit breaker pattern

5 Reasons to love Elixir

Five reasons that will make you love the Elixir language and stack if you don't already

Exploring Headless Commerce

Exploring the current state of headless commerce and how to best take advantage

The Thing Most Developers Get Wrong On Interviews

Most developers focus a lot on technical skills but often fail to prepare for the most basic of soft skills interviews

WTF is Flow-Based Programming

A quick introduction and overview on the ideas behind Flow-Based Programming

Ethereum Zero to Hero: Developing Our First Contract

Developing a basic contact using Ethereum

Ethereum Zero to Hero: Introduction

An introduction to Ethereum Development

Ethereum Zero to Hero: Setting a Development Environment

Setting up a basic private test network for Ethereum development