Joseph Koski
@jkwa.bsky.social
Author of Functional Programming with Elixir (beta, PragProg). Writing at joekoski.com.
Yet another in my series on the Ash Framework. I wanted to explore what it’s like to bring Ash into an existing project.
www.joekoski.com/blog/2025/11...
#elixirlang
www.joekoski.com/blog/2025/11...
#elixirlang
Ash Framework: Evaluating Ash for Existing Systems
How difficult is it to incorporate Ash into an existing codebase?
www.joekoski.com
November 3, 2025 at 7:44 PM
Yet another in my series on the Ash Framework. I wanted to explore what it’s like to bring Ash into an existing project.
www.joekoski.com/blog/2025/11...
#elixirlang
www.joekoski.com/blog/2025/11...
#elixirlang
Adding to my series on the Ash Framework book. Exploring how Ash works with Ecto and taking the opportunity to try a promising new library called Electric.
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Ash Framework: Combining Ash Writes with Electric Reads
Exploring how Ash implements Ecto.
www.joekoski.com
October 27, 2025 at 8:26 PM
Adding to my series on the Ash Framework book. Exploring how Ash works with Ecto and taking the opportunity to try a promising new library called Electric.
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Reposted by Joseph Koski
Beta Update
Advanced Functional Programming with Elixir by @jkwa.bsky.social
Model Behavior, Manage Complexity, and Maximize Maintainability
pragprog.com/titles/...
B5.0 Release Notes:
* Production complete. On to layout & print.
(Already purchased? Check your email for a download link.)
Advanced Functional Programming with Elixir by @jkwa.bsky.social
Model Behavior, Manage Complexity, and Maximize Maintainability
pragprog.com/titles/...
B5.0 Release Notes:
* Production complete. On to layout & print.
(Already purchased? Check your email for a download link.)
October 21, 2025 at 4:51 PM
Beta Update
Advanced Functional Programming with Elixir by @jkwa.bsky.social
Model Behavior, Manage Complexity, and Maximize Maintainability
pragprog.com/titles/...
B5.0 Release Notes:
* Production complete. On to layout & print.
(Already purchased? Check your email for a download link.)
Advanced Functional Programming with Elixir by @jkwa.bsky.social
Model Behavior, Manage Complexity, and Maximize Maintainability
pragprog.com/titles/...
B5.0 Release Notes:
* Production complete. On to layout & print.
(Already purchased? Check your email for a download link.)
Adding to my series on the Ash Framework book. Taking a closer look at messy authorization.
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Ash Framework: Why Authorization gets Messy
Where is the mess?
www.joekoski.com
October 21, 2025 at 11:34 PM
Adding to my series on the Ash Framework book. Taking a closer look at messy authorization.
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Back from vacation and I thought I'd add to my series on the Ash Framework book. Why does authorization logic get messy?
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Ash Framework: Authorization and Monoids
Authorization logic gets messy fast.
www.joekoski.com
October 14, 2025 at 7:08 PM
Back from vacation and I thought I'd add to my series on the Ash Framework book. Why does authorization logic get messy?
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Reposted by Joseph Koski
Alongside the book, you’ll find a production-ready library that implements these abstractions—fully tested, well documented, and ready to use.
Advanced Functional Programming in Elixir by @jkwa.bsky.social
pragprog.com/titles/...
40% off through the weekend with code Pragpicks
Advanced Functional Programming in Elixir by @jkwa.bsky.social
pragprog.com/titles/...
40% off through the weekend with code Pragpicks
October 10, 2025 at 7:23 PM
Alongside the book, you’ll find a production-ready library that implements these abstractions—fully tested, well documented, and ready to use.
Advanced Functional Programming in Elixir by @jkwa.bsky.social
pragprog.com/titles/...
40% off through the weekend with code Pragpicks
Advanced Functional Programming in Elixir by @jkwa.bsky.social
pragprog.com/titles/...
40% off through the weekend with code Pragpicks
Next in my series on the Ash Framework book. What makes Ash different?
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Ash Framework: The Coordination Problem
Not organization but coordination.
www.joekoski.com
October 7, 2025 at 9:57 PM
Next in my series on the Ash Framework book. What makes Ash different?
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
I learn best by writing, so I wrote up some higher-level notes on Ash from the Ash Framework book. I thought others might find it useful:
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
Ash Framework: My Misconceptions
It’s all about the domain.
www.joekoski.com
October 3, 2025 at 8:38 PM
I learn best by writing, so I wrote up some higher-level notes on Ash from the Ash Framework book. I thought others might find it useful:
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
www.joekoski.com/blog/2025/10...
#elixirlang @pragprog.com
I walked away from ElixirConf thinking it was time to take a serious look at Ash. I don’t have time to wander around, so I picked up the Ash Framework book. Halfway through, I get it.
pragprog.com/titles/ldash...
#elixirlang @pragprog.com
pragprog.com/titles/ldash...
#elixirlang @pragprog.com
Ash Framework
Explore the power of Ash Framework by modeling and building the domain for a real-world web application.
pragprog.com
September 26, 2025 at 4:45 PM
I walked away from ElixirConf thinking it was time to take a serious look at Ash. I don’t have time to wander around, so I picked up the Ash Framework book. Halfway through, I get it.
pragprog.com/titles/ldash...
#elixirlang @pragprog.com
pragprog.com/titles/ldash...
#elixirlang @pragprog.com
An early reader had a suggestion.
Connect functional programming patterns to the libraries Elixir devs already use.
It’s a good idea, but I didn’t have space in the book.
www.joekoski.com/blog/2025/09...
#elixirlang #funx #PragProg
Connect functional programming patterns to the libraries Elixir devs already use.
It’s a good idea, but I didn’t have space in the book.
www.joekoski.com/blog/2025/09...
#elixirlang #funx #PragProg
What’s an Effect?
How do we handle side effects in a pure functional system?
www.joekoski.com
September 25, 2025 at 6:13 PM
An early reader had a suggestion.
Connect functional programming patterns to the libraries Elixir devs already use.
It’s a good idea, but I didn’t have space in the book.
www.joekoski.com/blog/2025/09...
#elixirlang #funx #PragProg
Connect functional programming patterns to the libraries Elixir devs already use.
It’s a good idea, but I didn’t have space in the book.
www.joekoski.com/blog/2025/09...
#elixirlang #funx #PragProg
Reposted by Joseph Koski
One package.
One update.
A worm crawling through the BEAM ecosystem.
A dark “what if” — and how we can stop it before it’s real.
erlef.org/blog/securit...
#erlang #elixirlang
One update.
A worm crawling through the BEAM ecosystem.
A dark “what if” — and how we can stop it before it’s real.
erlef.org/blog/securit...
#erlang #elixirlang
September 24, 2025 at 9:23 PM
One package.
One update.
A worm crawling through the BEAM ecosystem.
A dark “what if” — and how we can stop it before it’s real.
erlef.org/blog/securit...
#erlang #elixirlang
One update.
A worm crawling through the BEAM ecosystem.
A dark “what if” — and how we can stop it before it’s real.
erlef.org/blog/securit...
#erlang #elixirlang
Advanced Functional Programming with Elixir just climbed back to #1 on the @PragProg best seller list!
pragprog.com/best_sellers/
#afpelixir #elixirlang
pragprog.com/best_sellers/
#afpelixir #elixirlang
September 23, 2025 at 2:39 PM
Advanced Functional Programming with Elixir just climbed back to #1 on the @PragProg best seller list!
pragprog.com/best_sellers/
#afpelixir #elixirlang
pragprog.com/best_sellers/
#afpelixir #elixirlang
Can an LLM Tutor?
“I’m not even sure what’s real anymore.” —The Matrix (1999)
www.joekoski.com
September 18, 2025 at 8:41 PM
PragProg is running a 48-hour flash sale — 45% off all books with code flashsale
That includes my book Advanced Functional Programming with Elixir
Sale runs Sept 18–20, 9am CT
Grab it here: pragprog.com
#pragprog
That includes my book Advanced Functional Programming with Elixir
Sale runs Sept 18–20, 9am CT
Grab it here: pragprog.com
#pragprog
Pragmatic Bookshelf: By Developers, For Developers
We improve the lives of professional developers. We create timely, practical books on classic and cutting-edge topics to help you learn and practice your craft, and accelerate your career. Come learn ...
pragprog.com
September 18, 2025 at 4:08 PM
PragProg is running a 48-hour flash sale — 45% off all books with code flashsale
That includes my book Advanced Functional Programming with Elixir
Sale runs Sept 18–20, 9am CT
Grab it here: pragprog.com
#pragprog
That includes my book Advanced Functional Programming with Elixir
Sale runs Sept 18–20, 9am CT
Grab it here: pragprog.com
#pragprog
Reposted by Joseph Koski
Elixir Radar issue 484is out! 📣
You can read it here: buff.ly/vWcu6fa
This issue comes with content from @peerstr.bsky.social @jkwa.bsky.social @mikezornek.com @josevalim.bsky.social , Mike Hostetler and Sven Van Caekenberghe .Thank you!
#ElixirLang
You can read it here: buff.ly/vWcu6fa
This issue comes with content from @peerstr.bsky.social @jkwa.bsky.social @mikezornek.com @josevalim.bsky.social , Mike Hostetler and Sven Van Caekenberghe .Thank you!
#ElixirLang
Elixir Radar 484
buff.ly
September 17, 2025 at 4:15 PM
Elixir Radar issue 484is out! 📣
You can read it here: buff.ly/vWcu6fa
This issue comes with content from @peerstr.bsky.social @jkwa.bsky.social @mikezornek.com @josevalim.bsky.social , Mike Hostetler and Sven Van Caekenberghe .Thank you!
#ElixirLang
You can read it here: buff.ly/vWcu6fa
This issue comes with content from @peerstr.bsky.social @jkwa.bsky.social @mikezornek.com @josevalim.bsky.social , Mike Hostetler and Sven Van Caekenberghe .Thank you!
#ElixirLang
Another deleted scene from my book:
There are many ways to solve equality: duck typing, injection, protocol dispatch.
Here's why Funx uses the one it does:
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
There are many ways to solve equality: duck typing, injection, protocol dispatch.
Here's why Funx uses the one it does:
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
Polymorphism and Behavior Injection
When are two things the same?
www.joekoski.com
September 17, 2025 at 9:54 PM
Another deleted scene from my book:
There are many ways to solve equality: duck typing, injection, protocol dispatch.
Here's why Funx uses the one it does:
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
There are many ways to solve equality: duck typing, injection, protocol dispatch.
Here's why Funx uses the one it does:
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
Reposted by Joseph Koski
I 💜 this passage from @jkwa.bsky.social buff.ly/xIVq6gW
"... understanding doesn’t parallelize, and complexity doesn’t distribute. Each new contributor must climb the same tangled mess... even more time is spent coordinating, clarifying, and patching over mismatches in mental models."
#elixirlang
"... understanding doesn’t parallelize, and complexity doesn’t distribute. Each new contributor must climb the same tangled mess... even more time is spent coordinating, clarifying, and patching over mismatches in mental models."
#elixirlang
Advanced Functional Programming with Elixir
Use advanced functional programming principles, practical domain-driven design techniques, and production-ready Elixir code to build scalable, complex systems from simple, reusable components.
pragprog.com
September 17, 2025 at 2:02 PM
I 💜 this passage from @jkwa.bsky.social buff.ly/xIVq6gW
"... understanding doesn’t parallelize, and complexity doesn’t distribute. Each new contributor must climb the same tangled mess... even more time is spent coordinating, clarifying, and patching over mismatches in mental models."
#elixirlang
"... understanding doesn’t parallelize, and complexity doesn’t distribute. Each new contributor must climb the same tangled mess... even more time is spent coordinating, clarifying, and patching over mismatches in mental models."
#elixirlang
Funx now has Livebooks.
I considered a plugin, but thought this might be a good job for an LLM.
This short post covers my strategy:
www.joekoski.com/blog/2025/09...
#elixirlang #funx
I considered a plugin, but thought this might be a good job for an LLM.
This short post covers my strategy:
www.joekoski.com/blog/2025/09...
#elixirlang #funx
Generate Livebooks with an LLM
So many loops…
www.joekoski.com
September 15, 2025 at 5:59 PM
Funx now has Livebooks.
I considered a plugin, but thought this might be a good job for an LLM.
This short post covers my strategy:
www.joekoski.com/blog/2025/09...
#elixirlang #funx
I considered a plugin, but thought this might be a good job for an LLM.
This short post covers my strategy:
www.joekoski.com/blog/2025/09...
#elixirlang #funx
Most personal blogs are in the low hundreds of unique visitors per month. Mine was too. This month I passed a milestone.
#elixirlang
#elixirlang
September 12, 2025 at 6:09 PM
Most personal blogs are in the low hundreds of unique visitors per month. Mine was too. This month I passed a milestone.
#elixirlang
#elixirlang
I just finished putting together interactive Livebook notebooks for every chapter of Advanced Functional Programming with Elixir.
You can now run all the examples in your browser. Or like me, spin them up locally with Docker:
www.joekoski.com/blog/2025/09...
#elixirlang hashtag#AFPElixir
You can now run all the examples in your browser. Or like me, spin them up locally with Docker:
www.joekoski.com/blog/2025/09...
#elixirlang hashtag#AFPElixir
Livebook Examples from Advanced Functional Programming with Elixir
It feels a bit impolite to ask readers to download code and type mix commands just to run the examples. We have better tools now.
www.joekoski.com
September 10, 2025 at 8:37 PM
I just finished putting together interactive Livebook notebooks for every chapter of Advanced Functional Programming with Elixir.
You can now run all the examples in your browser. Or like me, spin them up locally with Docker:
www.joekoski.com/blog/2025/09...
#elixirlang hashtag#AFPElixir
You can now run all the examples in your browser. Or like me, spin them up locally with Docker:
www.joekoski.com/blog/2025/09...
#elixirlang hashtag#AFPElixir
Just checked in to see if Funx had hit 80 downloads.
Any ideas on what happened?
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
Any ideas on what happened?
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
What is going on?
“They found me. I don’t know how, but they found me.” — Dr. Emmett Brown
www.joekoski.com
September 10, 2025 at 8:22 PM
Just checked in to see if Funx had hit 80 downloads.
Any ideas on what happened?
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
Any ideas on what happened?
www.joekoski.com/blog/2025/09...
#elixirlang #funx #AFPElixir
Some comments on an earlier post had me thinking about polymorphic equality in Elixir, and how == can fall short.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
What’s the point of a polymorphic eq?
Why not keep equality inside the module where it belongs?
www.joekoski.com
September 9, 2025 at 7:46 PM
Some comments on an earlier post had me thinking about polymorphic equality in Elixir, and how == can fall short.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
Just got The BEAM Book by Erik Stenman in the mail.
Time to go spelunking in the BEAM!
#elixirlang #erlang #beam #AFPElixir
Time to go spelunking in the BEAM!
#elixirlang #erlang #beam #AFPElixir
September 9, 2025 at 6:06 PM
Just got The BEAM Book by Erik Stenman in the mail.
Time to go spelunking in the BEAM!
#elixirlang #erlang #beam #AFPElixir
Time to go spelunking in the BEAM!
#elixirlang #erlang #beam #AFPElixir
Follow-up post on polymorphism in Elixir. This one looks at how structs help avoid pitfalls from other languages.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
Polymorphism and Structs in Elixir
Polymorphism has always relied on tags. Elixir’s structs make them safer.
www.joekoski.com
September 7, 2025 at 6:08 PM
Follow-up post on polymorphism in Elixir. This one looks at how structs help avoid pitfalls from other languages.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
I wrote this post about polymorphism in Elixir. Details I wish I had known five years ago.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
Polymorphism in Elixir
This post walks through the basics of protocols in Elixir. It’s the information I wish I knew five years ago.
www.joekoski.com
September 4, 2025 at 6:38 PM
I wrote this post about polymorphism in Elixir. Details I wish I had known five years ago.
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir
www.joekoski.com/blog/2025/08...
#elixirlang #AFPElixir