Sign in

Joseph Koski

@jkwa.bsky.social
354 followers 801 following 47 posts

Author of Functional Programming with Elixir (beta, PragProg). Writing at joekoski.com.

PostsRepliesMedia
Reposted by Joseph Koski
Code BEAM @codebeam.bsky.social · 16/02/2026
🤔 What happens to pipelines when branching enters the picture? @jkwa.bsky.social shows how Ash's DSL approach solves this - intent-focused composition that stays ergonomic. Learn: better DSL patterns, complex workflows, clearer code codebeamvancouver.com#tickets
071
Reposted by Joseph Koski
Code BEAM @codebeam.bsky.social · 10/02/2026
Advanced BEAM Architecture at Code BEAM Vancouver Joseph Koski: Better DSLs Nicholas Geraedts: GraphQL with Spark Lorena Mireles: BEAM concurrency limits Learn: → Intent-focused DSLs → Developer experience → Concurrency costs codebeamvancouver.com#tickets
021
Joseph Koski @jkwa.bsky.social · 09/02/2026
Funx: Reducing Degrees of Freedom Rules built from a consistent set of primitives with clear semantics are easier to reason about, review, and evolve. Includes a Livebook so you can try it yourself. www.joekoski.com/blog/2026/02... #elixirlang #livebook #funx
joekoski.com
Funx: Reducing Degrees of Freedom
Reducing degrees of freedom to make rules more dependable.
040
Joseph Koski @jkwa.bsky.social · 02/02/2026
Funx: Free Your Predicates Avoid burying your domain rules in control flow. Includes a Livebook so you can try it yourself. www.joekoski.com/blog/2026/02... #elixirlang #livebook #funx
joekoski.com
Funx: Free Your Predicates
“A complex system that works is invariably found to have evolved from a simple system that worked.” — John Gall
020
Joseph Koski @jkwa.bsky.social · 27/01/2026
Funx Eq: What does “same” mean in your domain? How to model equality as a domain rule. Includes a Livebook so you can try it yourself. www.joekoski.com/blog/2026/01... #elixirlang #livebook #funx
joekoski.com
Funx: Equality as a Domain Rule
“A model is a selectively simplified and consciously structured form of knowledge.” — Eric Evans
070
Joseph Koski @jkwa.bsky.social · 21/01/2026
Optics in Funx: optics don’t live alone. Lens, Prism, Traversal, and Iso work together. Includes a Livebook www.joekoski.com/blog/2026/01... #elixirlang #livebook #funx
joekoski.com
Funx: Optics Working Together
“You’re looking at it wrong.” — The Big Lebowski (1998)
020
Joseph Koski @jkwa.bsky.social · 14/01/2026
Optics in Funx: same thing, different representations. That’s an Iso. Includes a Livebook www.joekoski.com/blog/2026/01... #elixirlang #livebook #funx
joekoski.com
Funx: The Optic Iso
“I see dead people.” — The Sixth Sense (1999)
040
Joseph Koski @jkwa.bsky.social · 08/01/2026
My book is #1 on Amazon! Proving once again that you can be #1 in anything, as long as you control the denominator. a.co/d/dPiWKRE
a.co
Advanced Functional Programming with Elixir: Model Behavior, Manage Complexity, and Maximize Maintainability: Koski, Joseph, Tulton, Adaobi Obi: 9798888651797: Amazon.com: Books
Advanced Functional Programming with Elixir: Model Behavior, Manage Complexity, and Maximize Maintainability [Koski, Joseph, Tulton, Adaobi Obi] on Amazon.com. *FREE* shipping on qualifying offers. Ad...
3151
Reposted by Joseph Koski
Code BEAM @codebeam.bsky.social · 08/01/2026
New speakers: Lorena Miles, @hayleigh.dev & @jkwa.bsky.social join Code BEAM Lite Vancouver! More announcements coming. Join waiting list for exclusive pricing. codebeamvancouver.com#speakers
052
Joseph Koski @jkwa.bsky.social · 05/01/2026
More optics in Funx: when you need multiple foci, use a traversal. Includes a Livebook www.joekoski.com/blog/2026/01... #elixirlang #livebook #funx
joekoski.com
Funx: Adding the Optic Traversal
“You’re either in or you’re out.” — Ocean’s Eleven (2001)
030
Reposted by Joseph Koski
The Pragmatic Bookshelf ✅ @pragprog.com · 01/01/2026
Insight: Top Ten 2025 Titles at pragprog.com #6 Advanced Functional Programming with Elixir by Joseph Koski @jkwa.bsky.social pragprog.com/titles/... Use code INSIGHT to save 40% off this title (and almost everything else) at pragprog.com
052
Joseph Koski @jkwa.bsky.social · 01/01/2026
Funx: Reorganizing Eq and Ord www.joekoski.com/blog/2025/12... #elixirlang
joekoski.com
Funx: Reorganizing Eq and Ord
When designing Funx I leveraged protocols, which meant some concessions.
0120
Joseph Koski @jkwa.bsky.social · 29/12/2025
Funx Optics: Declare your order. www.joekoski.com/blog/2025/12... #elixirlang
joekoski.com
Funx: Building Lexicographic Sorts with Optics
“You’re not thinking fourth dimensionally!” — Doc Brown, Back to the Future Part II (1989)
0101
Joseph Koski @jkwa.bsky.social · 22/12/2025
My book up on Amazon 🎉 About 900 people have already purchased it directly from the Pragmatic Bookshelf. If you’re one of them, I’d really appreciate a review. Even a quick sentence or two makes a huge difference. a.co/d/bWoZwVc
a.co
Advanced Functional Programming with Elixir: Model Behavior, Manage Complexity, and Maximize Maintainability: Koski, Joseph, Tulton, Adaobi Obi: 9798888651797: Amazon.com: Books
Advanced Functional Programming with Elixir: Model Behavior, Manage Complexity, and Maximize Maintainability [Koski, Joseph, Tulton, Adaobi Obi] on Amazon.com. *FREE* shipping on qualifying offers. Ad...
170
Joseph Koski @jkwa.bsky.social · 22/12/2025
More optics in Funx: name your shareable boundaries with prisms. Includes a Livebook. www.joekoski.com/blog/2025/12... #elixirlang
joekoski.com
Funx: Adding the Optic Prism
“The problem is choice.” — Neo, The Matrix (1999)
070
Joseph Koski @jkwa.bsky.social · 16/12/2025
Couldn't fit optics in my book, but I can build them into Funx. Here's why lawful lenses matter (even in Elixir): www.joekoski.com/blog/2025/12... #elixirlang
joekoski.com
Funx: Adding the Optic Lens
“I didn’t say it would be easy. I just said it would be the truth.” —Morpheus, The Matrix (1999)
094
Joseph Koski @jkwa.bsky.social · 08/12/2025
New blog post: After building out the Either DSL, I realized Funx needed a context-aware tap. www.joekoski.com/blog/2025/12... #elixirlang
joekoski.com
Funx: Adding tap
Tap tap tap-a-roo
040
Joseph Koski @jkwa.bsky.social · 02/12/2025
New post in my Ash Framework series. This time I’m lifting a few of Ash’s DSL ideas (or stealing them outright) to build an Either DSL in Funx. www.joekoski.com/blog/2025/12... #elixirlang @pragprog.com
joekoski.com
Ash Framework: Lessons from its DSL
Lifting (or perhaps stealing) some of Ash’s good ideas.
0151
Joseph Koski @jkwa.bsky.social · 25/11/2025
A new post in my series on the Ash Framework. This one looks at calculations and includes functional programming strategies for managing uncertainty. www.joekoski.com/blog/2025/11... #elixirlang @pragprog.com
joekoski.com
Ash Framework: Calculations and Uncertainty
How Ash calculations work and ways to deal with missing or uncertain data.
071
Reposted by Joseph Koski
The Pragmatic Bookshelf ✅ @pragprog.com · 20/11/2025
When the work of our authors intersects, it's amazing. Such a privilege to provide a platform for all these talented, passionate humans. And, their books are included in our Black Friday, 50% off sale!
012
Joseph Koski @jkwa.bsky.social · 18/11/2025
A new post in my series on the Ash Framework. This one explores the underlying mechanics of Ash validation and where Funx can help when checks need more structure or concurrency. www.joekoski.com/blog/2025/11... #elixirlang @pragprog.com
joekoski.com
Ash Framework: Diving into Validation
“That’s just, like, your opinion, man.” —The Big Lebowski (1998)
2195
Joseph Koski @jkwa.bsky.social · 12/11/2025
Another in my series on the Ash Framework. Understanding actions from a functional programming perspective. www.joekoski.com/blog/2025/11... #elixirlang
joekoski.com
Ash Framework: A Closer Look at Actions
Time for a closer look at actions.
070
Joseph Koski @jkwa.bsky.social · 03/11/2025
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
joekoski.com
Ash Framework: Evaluating Ash for Existing Systems
How difficult is it to incorporate Ash into an existing codebase?
0114
Joseph Koski @jkwa.bsky.social · 27/10/2025
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
joekoski.com
Ash Framework: Combining Ash Writes with Electric Reads
Exploring how Ash implements Ecto.
091
Reposted by Joseph Koski
The Pragmatic Bookshelf ✅ @pragprog.com · 21/10/2025
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.)
082
Joseph Koski @jkwa.bsky.social · 22/10/2025
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
joekoski.com
Ash Framework: Why Authorization gets Messy
Where is the mess?
071
Joseph Koski @jkwa.bsky.social · 14/10/2025
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
joekoski.com
Ash Framework: Authorization and Monoids
Authorization logic gets messy fast.
0144
Reposted by Joseph Koski
The Pragmatic Bookshelf ✅ @pragprog.com · 10/10/2025
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
031
Joseph Koski @jkwa.bsky.social · 07/10/2025
Next in my series on the Ash Framework book. What makes Ash different? www.joekoski.com/blog/2025/10... #elixirlang @pragprog.com
joekoski.com
Ash Framework: The Coordination Problem
Not organization but coordination.
0163
Joseph Koski @jkwa.bsky.social · 03/10/2025
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
joekoski.com
Ash Framework: My Misconceptions
It’s all about the domain.
0180
Joseph Koski @jkwa.bsky.social · 26/09/2025
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
Ash Framework
Explore the power of Ash Framework by modeling and building the domain for a real-world web application.
2253
Joseph Koski @jkwa.bsky.social · 25/09/2025
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
joekoski.com
What’s an Effect?
How do we handle side effects in a pure functional system?
041
Reposted by Joseph Koski
Jonatan Männchen @maennchen.dev · 24/09/2025
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
091
Joseph Koski @jkwa.bsky.social · 23/09/2025
Advanced Functional Programming with Elixir just climbed back to #1 on the @PragProg best seller list! pragprog.com/best_sellers/ #afpelixir #elixirlang
0140
Joseph Koski @jkwa.bsky.social · 18/09/2025
Want to tinker? Sharing to see what folks think. www.joekoski.com/blog/2025/09...
joekoski.com
Can an LLM Tutor?
“I’m not even sure what’s real anymore.” —The Matrix (1999)
061
Joseph Koski @jkwa.bsky.social · 18/09/2025
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
pragprog.com
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 ...
053
Reposted by Joseph Koski
Elixir Radar @elixir-radar.com · 17/09/2025
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
buff.ly
Elixir Radar 484
044
Joseph Koski @jkwa.bsky.social · 17/09/2025
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
joekoski.com
Polymorphism and Behavior Injection
When are two things the same?
0142
Reposted by Joseph Koski
Nicholas Henry @nicholasjhenry.github.io · 17/09/2025
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
pragprog.com
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.
1102
Joseph Koski @jkwa.bsky.social · 15/09/2025
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
joekoski.com
Generate Livebooks with an LLM
So many loops…
050
Joseph Koski @jkwa.bsky.social · 12/09/2025
Most personal blogs are in the low hundreds of unique visitors per month. Mine was too. This month I passed a milestone. #elixirlang
110
Joseph Koski @jkwa.bsky.social · 10/09/2025
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
joekoski.com
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.
0165
Joseph Koski @jkwa.bsky.social · 10/09/2025
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
joekoski.com
What is going on?
“They found me. I don’t know how, but they found me.” — Dr. Emmett Brown
020
Joseph Koski @jkwa.bsky.social · 09/09/2025
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
joekoski.com
What’s the point of a polymorphic eq?
Why not keep equality inside the module where it belongs?
021
Joseph Koski @jkwa.bsky.social · 09/09/2025
Just got The BEAM Book by Erik Stenman in the mail. Time to go spelunking in the BEAM! #elixirlang #erlang #beam #AFPElixir
020
Joseph Koski @jkwa.bsky.social · 07/09/2025
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
joekoski.com
Polymorphism and Structs in Elixir
Polymorphism has always relied on tags. Elixir’s structs make them safer.
040
Joseph Koski @jkwa.bsky.social · 04/09/2025
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
joekoski.com
Polymorphism in Elixir
This post walks through the basics of protocols in Elixir. It’s the information I wish I knew five years ago.
050
Joseph Koski @jkwa.bsky.social · 02/09/2025
Why is learning FP so hard? I wrote a short post on my blog about this a couple of weeks back. www.joekoski.com/blog/2025/08... #Elixir #LearnFP
joekoski.com
Why Is This So Hard?
A blog about software development, data science, and other things I find interesting.
041
Reposted by Joseph Koski
{:ok, Noah} @nezteb.net · 01/09/2025
I can already tell I'm going to be spending most of my labor day reading through the beta edition of @jkwa.bsky.social's @pragprog.com book: pragprog.com/titles/jkeli... #ElixirLang #FunctionalProgramming
pragprog.com
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.
1173
Reposted by Joseph Koski
Margaret Eldridge @margeditor.bsky.social · 20/08/2025
Celebrating Advanced Functional Programming with Elixir by Joseph Koski now in beta! 🔗 Read more: bit.ly/3V5AQBZ 📘 ebook: pragprog.com/titles/... #Elixir #functionalprogramming #MyElixirStatus #WeBEAMTogether #programming #pragprog
Book cover for Advanced Functional Programming with Elixir by Joseph Koski, showing a world map with glowing blue paths, arrows, and markers
0163