Tag: elixir
-
Aggressive Regression
· 17 min read
Each regression test is a test, but not each test is a regression test. On why unit tests mostly measure your own reflection, why Elixir refuses to let you poke at private functions, and why the arrival of generated code makes behavioural tests the only thing standing between you and the abyss.
-
The Engine Does Not Win the Race
· 12 min read
Why the harness is what actually decides whether your autocomplete ships or slops, and how it makes the model both smarter and cheaper at the same time.
-
Anti-Antipatterns in Elixir Library Guidelines
· 7 min read
Deconstructing the dogmatic anti-patterns section of the official Elixir library guidelines and demonstrating when every single one of them is actually needed.
-
Exploring Programming Languages
· 2 min read
True story of the developer exploring different programming languages
-
Your Orchestrator Is a Finite Automaton in Denial
· 14 min read
On the lonely `status` column that quietly metastasised into a state machine, the boolean flags breeding in its shadow, and why a real finite automaton is not academic finery but the cheapest insurance you will ever decline to buy
-
Make Friends With Your AI Assistant
· 5 min read
Several rules from my experience which would make your cooperation with AI assistants a charm
-
Mocks Are Your Friends, Not Your Servants
· 6 min read
On treating mocks as protagonists of the testing narrative rather than disposable stand-ins hired to nod along
-
Head of the Agents and Assistants Department
· 7 min read
A first-hand account of building the Cure programming language with AI agents as co-developers—what worked, what crashed spectacularly, and the distilled rules that emerged from the wreckage.
-
Cure, Four Releases Deep: From FSMs to Furniture
· 19 min read
A walk through Cure v0.16.0 through v0.19.1. A Finitomata-inspired FSM rewrite, the dependent-types core finally behaving like it promised, a pattern engine that actually matches, and a stack of ergonomics that should have been there six versions ago.
elixir cure programming compiler type-system fsm dependent-types hacking
-
The Long Road to Cure
· 3 min read
Just under a year ago I started building a BEAM language with dependent types and first-class FSMs—chose the wrong implementation language, wrote spaghetti, had an LLM tell me it was garbage, shipped something embarrassing, then spent months rethinking. Here is what I learned and where Cure stands today.
-
A Score for an Invisible Orchestra
· 9 min read
Every programming language stores its AST in its own idiosyncratic format. Writing a code-analysis tool means rewriting it from scratch for each new language. MetaAST—a meta-model sitting one level above any concrete AST—solves this by providing a single universal representation. One analyser, all languages, linear instead of quadratic growth. This is the score that every instrument in the orchestra can read.
-
How Many Paradigms Does It Take to Screw In a Lightbulb?
· 12 min read
If a developer claims the badge of mid-level-plus but doesn’t feel at ease in at least the five principal paradigms—they are a pompous fool, and you should show them the door.
-
Software Development in 2026
· 9 min read
Three years after the four key developer skills, a modest update: five stages of LLM grief, why the models are glorified T9, why context matters more than the model, and the surprising effectiveness of saying ‘please.’
-
Tests as First-Class Citizens
· 6 min read
A brief description of how I made testing a charm with stream data generators supplied with my estructura library
-
DIY Message Broker
· 6 min read
The history and purpose of Antenna library, providing all the features usually achieved by adding an extra message broker dependency.
-
Long-lived Process and State Recovery After Crashes
· 6 min read
-
Make your library test-friendly
· 8 min read
Finitomata ships with a testing framework
-
Finitomata FTW
· 3 min read
Why would one use Finite Automata for almost anything having state
-
Horizontal Scaling
· 5 min read
Part four of 'four key developer skills': what horizontal scaling actually means (and why Shopify is not an example of it), why FSMs are non-negotiable, and why 201 is good while 200 is dreadful.
elixir erlang programming architecture distributed-systems hacking
-
YAGNIN, but YAGNIL
· 5 min read
Part three of ‘four key developer skills’: why YAGNI is the laziness excuse of the decade, what the correct formulation actually is, and how dependency injection lets you be ready for tomorrow without writing a single superfluous line today.
-
Divide et Impera
· 3 min read
Part two of ‘four key developer skills’: how to break a system into isolated parts, why SRP is the only principle in SOLID worth knowing, and why anyone who says code can’t be tested in isolation should be shown the door.
-
No Failures Despite Bugs
· 6 min read
Part one of ‘four key developer skills’: how to guarantee fault tolerance even when your code has bugs—and why tests and types are a plastic bag on your head.
-
Software Development in 2023
· 5 min read
Four skills that actually matter in 2023, or: a blanket glorification of Elixir masquerading as a balanced opinion piece.
-
Finitomata ❤ Mox
· 3 min read
Synchronization points: the proper way to test FSM in details of how to control data flow (opinionated approach)
-
Finitomata Marries Ecto
· 4 min read
The proper way to use FSM to control data consistency (opinionated approach)
-
FSM Driven Development
· 3 min read
A new library to manage statefull processes as Finite Automatæ and the impudent proposal for the HTTP verbs extentions
-
Md. Another Word About Markdown
· 6 min read
A humanitarian story about how I decided to write my own markdown parser with a customizable grammar and how it went
-
URL Shortener
· 5 min read
How Would You Design a URL Shortener Service Like TinyURL?
-
Shining Access
· 4 min read
Access is the most underrated feature of Elixir
-
Parser for Markdown Family
· 2 min read
What’s wrong with markdown and how can we improve it
-
Finitomata :: First Class Documentation
· 1 min read
The FSM implementation that exposes proper documentation
-
Finitomata :: The Proper FSM for Elixir
· 5 min read
The FSM implementation that’s worth it to give a try
-
Plugins in Elixir Applications
· 3 min read
How to make your application to easily support plugins
-
Help To Test Your Library
· 3 min read
How to make your library a charm to test with a minimal effort
-
Yet Another Markup Parser
· 4 min read
Elixir library for customizable blazingly fast markup parsing with callbacks
-
Finite Automata with Tarearbol
· 3 min read
DynamicManager provided by Tarearbol is extremely handy for FSM implementation
-
Handling Async Responses with Tarearbol
· 2 min read
DynamicManager provided by Tarearbol is extremely handy for handling asynchronous responses from external services
-
Dynamic Nested Function Call
· 4 min read
Macro to the rescue: how to build the nested function call dynamically with a bit of metaprogramming
-
Conditional context for macros
· 3 min read
The trick allowing to implement the extended functionality of macros depending on the context they were called from
-
Conditional guard for structs of an explicit type
· 2 min read
The trick allowing to declare the guard that gracefully falls back on earlier versions of Elixir/OTP
-
Will No One Rid Me Of This Turbulent GUI
· 5 min read
The biased set of reasons why I think IDE does not bring any good at all to the development process
-
Reserved Backward Compatibility
· 5 min read
One small step towards backward compatibility, one giant leap for mankind
-
O tempora, o mores!
· 3 min read
Tempus is a library to deal with time slots, like doctor appointments and/or room reservations
-
Wolf, Goat, Cabbage… and Elixir
· 4 min read
Use asynchronous traversal of a branched state graph to find a solution of a Lewis Carroll’s favorite puzzle
-
Generated Types II — Down the Rabbit Hole
· 5 min read
Use metaprogramming to deal with erlang typespec at runtime
-
Generated Types
· 6 min read
Use metaprogramming to generate nifty types for generated structures
-
Vela → Time Series Cache
· 4 min read
The library providing easy maintaining of the self-expiring cache for several time series
-
Telemetría
· 4 min read
The handy helper to work with :telemetria library without an enormous boilerplate needed
-
Reverse Engineering for Poor
· 2 min read
Quick, nasty, and dirty hack to quickly grasp how the foreign code works
-
Cloister
· 4 min read
The handy helper to work with distributed Erlang in dockerized environment
-
WordCount in Elixir
· 12 min read
Prove of that Elixir/Erlang can be not a mile behind C/Haskell
-
Strong Types Should Have Been Named Strong Hypes
· 5 min read
Arguably more robust way to write the good code compared to Strong Typing hype
-
Dialyzer specs: 2 in 1
· 4 min read
Arguably more elegane way to save keystrokes when providing specs
-
Formulæ and Lazy Combinators
· 5 min read
Formulæ library introduction and tutorial on building lazy combinators
-
Beware of Tests et Fudicia Ferentes
· 5 min read
Post-mortem of one internal discussion on whether or not everything must be covered with tests
-
Standing on the Shoulders of Giants
· 1 min read
How I implicitly helped Joe Armstrong a while ago
-
Scaffolds Backed Up By Behaviours
· 3 min read
Minimizing the boilerplate across your in-house library / applications is easy
-
Use Github CI for Elixir Projects
· 3 min read
Quick and dirty howto on setting Github CI for Elixir projects
-
GenServer At The Therapist's Appointment
· 1 min read
Imagine what could happen if a standalone GenServer came to the therapist's appointment
-
Stop Abusing Nihil
· 5 min read
nil / null is a perfectly valid useful first class citizen in many languages, and here is why
-
Pattern Matching Empty MapSets
· 1 min read
Long story short: Elixir MapSets are cool and shall be used widely. Empty MapSets can be pattern-matched easily.
-
Elixir Structs on Steroids
· 3 min read
Tiny library adding validation support, reasonable Access and Collectable implementations and more to Elixir Structs
-
Gospel of Barabbas or Concurrent Execution
· 5 min read
The beginner-friendly explanation of what concurrency is and why it ever matters
-
Iteraptor → Unforeseen utilization
· 3 min read
Using Iteraptor in test environment to test deeply nested maps/lists passed as JSON
-
Idempotent Supervision Tree
· 3 min read
The main advice on how to keep a supervision tree immune to members crashes
-
Plug in JSON API Readonly Webserver
· 2 min read
How to expose some read-only data from the already existing Elixir application with zero code
-
Elixir Compilation Hooks
· 3 min read
How to make custom macro `use` calls safer by checking the conditions met
-
Go Outta Here
· 6 min read
The step-by-step explanation of why Go language is not good at all
-
Sigils To The Rescue
· 2 min read
Exvalibur does now allow custom guards and pattern matching of values
-
Iteraptable → Swiss Knife For Structs
· 4 min read
Simple way to make the struct all Enumerable, Collectable and Accessable
-
¡AST FTW!
· 4 min read
Why Abstract Syntax Tree is a core feature of any modern language
-
Smart Validation In Elixir With Exvalibur
· 4 min read
Use generated module with pattern matching clauses and guards to validate any input given as a map
-
ActiveRecord Smell With Elixir/Ecto
· 7 min read
Quick how-to on bringing some ActiveRecord goodness into Elixir/Ecto
-
Generated Module As A Guard
· 4 min read
Better and faster way to implement validation of incoming data than just looking it up in the global config map
-
Raise For The Rescue
· 4 min read
When in any incomprehensible situation—raise! Do not let the uncertainty propagate through.
-
Ruby metaprogramming for beginners → Elixir-like specs
· 6 min read
Hacky implementation of Elixir-like specs in pure ruby with examples
-
Protocols in Ruby → Allow Implicit Inheritance
· 2 min read
Dry-behaviour ruby library implementing Elixir protocols for Ruby going towards 1.0 release
-
Adopting Property Testing in Elixir
· 4 min read
Property testing gives way more assurance in many cases than other testing techniques
-
Hype Demythified or Pizza With Pineapple Topping
· 6 min read
Don’t blindly follow the paradigms. Here is why.
-
Tarearbol now allows subscriptions to task results
· 2 min read
Tarearbol gracefully uses Envío’s functionality to subscribe to task execution results
-
Envío as a reincarnation of GenEvent²
· 3 min read
Publishing and subscribing to events with ease
-
These Weird Accents
· 4 min read
The detailed how-to on dealing with strings having accents nowadays
-
To IF Or Not To IF—That’s The Conditional Statement
· 7 min read
Why do I consider using if operator to be a code smell
-
Elixir Iteraptor :: Iterating Nested Terms Like I’m Five
· 6 min read
The tiny elixir library to iterate/map/filter deeply nested structures in Elixir
-
Elixir Pipeline Operators
· 3 min read
What operators can be used in Elixir for pipelining and how
-
Pattern matching on dynamic struct types
· 1 min read
A less known patter matching feature in Elixir
-
Why immutability rules
· 2 min read
A list of some less evident advantages of immutability
-
Pattern matching on binaries takes over Regex
· 3 min read
Cumbersome pattern matching might be way better than parsing strings with regexps
-
Automate pattern matching for structs
· 5 min read
How to bulk pattern match structs in function clauses in Elixir
-
Pattern matcher for Protocols
· 3 min read
How to pattern match a protocol in Elixir
-
.iex.exs to the rescue
· 3 min read
How to tune up your project environment in Elixir
-
Idiomatic function memoization in Elixir
· 3 min read
How to memoize the function in Elixir
-
Unveil Erlang Code of Your Elixir Project
· 2 min read
How to see what erlang code was compiled to run your Elixir project
-
StringNaming to call UTF8 by name
· 7 min read
compile-time generated set of modules to ease an access to a predefined subset of UTF8 symbols
-
Define module in Elixir with initial binding
· 8 min read
tiny library that provides the same binding mechanism as quote bind_quoted: [] does
-
Use `credo` Linter in Git `pre-commit` Hook
· 4 min read
copy-paste solution to start using credo linter in git pre-commit hook
-
`is_empty` Guard for Binaries in Elixir
· 1 min read
nifty trick that provides the same functionality as [not existing] is_empty guard
-
Either Monad in Elixir
· 2 min read
that is not widely known, but an Either monad is already presented in Elixir
-
Iterating Tuples in Elixir
· 3 min read
handy way of making tuples enumerable
-
Open Graph Protocol …and Her Friends
· 2 min read
the how-to on making links to your site beautifully expanded in facebook, twitter and family
-
Dry Behaviour aka Protocol Pattern in Ruby
· 6 min read
Tiny library inspired by Elixir protocol pattern
-
Use Hooks in Riak to Create Views
· 3 min read
Riak hooks are a good tool to simplify creation of views