Software engineer. Elixir at home, JS at work.

Arizona, USA
TypeScript can be surprisingly robust with @EffectTS_. The latest Code and Stuff video walks through some of the parts I like: retries, structured concurrency, error handling, and dependency injection. All with great type safety! piped.video/3havOF8sra4
3
6
57
7,728
Learn how to add OAuth, MCP, and a Lua-based code mode to any @AshFramework application in the latest Code and Stuff video! #MyElixirStatus piped.video/xejfNsxjK3o
3
5
31
2,366
Okay, Sagents is pretty neat. BEAM-native, solid middleware system, persisted state, pluggable filesystem, and observability. One small feature also caught my eye: the agent is aware of how many viewers it has and can stay alive until they leave. hexdocs.pm/sagents/pubsub_pr…
5
6
62
2,780
Replying to @benln
I had to make do with an off-brand one, would love to have something more official!
1
269
Vendors are trying to emulate the BEAM, but there's truly nothing like it. Here's a walkthrough of what makes it special: processes, messaging, registries, ETS, distribution, and its ecosystem. Elixir was made for the current moment, and for what's to come. #MyElixirStatus
6
48
358
64,603
Coming soon on Code and Stuff: There's no place like the BEAM. Sneak preview of some of the graphics: #MyElixirStatus
2
3
75
3,117
Replying to @ThePrimeagen
4
1,177
Something I love about Ash: it's got escape hatches for complex requirements. While I was prototyping the Phoenix Sync video, I found a way to use an Ash Change to emit the Postgres transaction ID as a custom header with ash_json_api.
1
8
39
1,953
I'm excited to see how well a team of three Claude Code agents can work together on a new Ash project 🤞
3
2
36
1,568
What if we asked AI to make an ad about making a C compiler from scratch, from scratch…
1
9
917
Here's the skill file I use to update dependencies in Elixir projects. I used to hate the update cycle, especially in Phoenix. Now it's just a conversation away. #MyElixirStatus gist.github.com/ChristianAle…
4
6
85
3,100
The conclusion of my TanStack DB / Phoenix Sync series is up now! #MyElixirStatus piped.video/UerJDaIXyUI
4
38
2,405
While this thing has been building itself, I also had a tool for building animated graphics synchronized to videos built as a native Mac app!
2
210
The moment the project was able to use itself was a huge unlock. Now I have it building out a merge queue worker so I can scale out the workers beyond two or three.
1
2
204
Draft tasks are a great way to collect ideas that aren't yet ready for execution. Many discovery tickets produce draft epics or draft tickets. Once you review the output of a discovery ticket, it's easy to shift the draft epic and all its child tasks over to be ready for work.
1
2
148
This is absolutely inspired by beads. Dependency awareness and agent-first CLI tooling is a huge unlock. I also added the concept of tickets that require human review, all surfacing in the web UI while being accessible via CLI as well.
1
2
172
I ended up building my own task CLI for coordinating many agents in worktrees. One of the most important features is "epic affinity," where agents that recently worked on tickets within an epic have priority access and suggestions to continue picking up more work in that epic.
3
11
494
Part 1 of my TanStack DB + Phoenix Sync tutorial is out! Truly local-first, this one covers the frontend side of things. It's got optimistic updates, transaction management, and multi-tab sync through a LocalStorage adapter! Check it out now: piped.video/2J48c2sukbo
3
7
76
5,398
Preparation for the new video is coming along, here's one of the explainer graphics showing how @tan_stack DB and @ElectricSQL's Phoenix Sync fit together! #MyElixirStatus
2
1
54
1,977
The project ended up bigger than I anticipated, but I wanted to highlight what makes TanStack DB + Phoenix Sync special. Live sync, optimistic local changes, transactions, and a useful app for groups of hungry, indecisive folks. Here's what we'll build in my next video!
3
9
75
7,078
The latest Code and Stuff video is here! Learn about Server-Side Request Forgery (SSRF) attacks and mitigations, complete with a working webhook demo application! #MyElixirStatus #ApplicationSecurity piped.video/EWdphas_OP4
1
3
27
2,122
Coming soon on Code and Stuff: a walkthrough of Server-Side Request Forgery attacks and mitigations, complete with a working webhook demo application! #MyElixirStatus #ApplicationSecurity
1
3
43
1,944
The latest Code and Stuff video is here! This time, a walkthrough of @mikehostetler's new ReqLLM package, which provides a unified interface to many model providers—all in Elixir! #MyElixirStatus piped.video/watch?v=-U2sQ3e3…
1
7
45
1,940
It's finally here: the Code and Stuff walkthrough of Ash TypeScript! Learn how to build an Ash project from scratch, use LiveView to begin, and eject to React without much fuss! It also fits into @tan_stack really nicely. #MyElixirStatus #AshFramework piped.video/t-hori2Io14
4
11
75
7,640
The upcoming Ash Typescript video is going to be longer than I expected! I'll walk through: * Ash data modeling / seeding data * Building an infinite scrolling LiveView page * The TS generated by ash_typescript * Converting the page to React * Optimizing with TanStack Virtual
3
3
59
2,000
Here's a demo repo showing how to wire up @AshFramework's ash_typescript and @tan_stack table/query/virtual in a Phoenix project! Full video walkthrough coming soon on Code and Stuff. #MyElixirStatus github.com/ChristianAlexande…
2
13
100
5,707
The latest Code and Stuff video is here, this time trying out @flydotio's remote editor and shipping a Phoenix app quickly! #MyElixirStatus #ad piped.video/Xbemvi42Ngs
2
26
2,007
This is all powered by just a few lines of Elixir on the backend!
2
8
489
On the frontend, I imported the generated `listCompanies` function and got field selection, pagination, and sorting!
1
4
524
Using ash_typescript, it was easy to wire up a virtualized TanStack Table without needing to design an API! Ash made it easy to model the domain, React made it easy to have a high performance list. Two ecosystems bridged by a little code generation! #MyElixirStatus
4
12
80
7,945
It's even possible to tie the query to a value found in query parameters, like the selected budget ID…
1
3
921
And on the frontend, reactive queries that re-evaluate whenever the underlying data changes…
2
4
757
On the Elixir side, just two `get` handlers…
1
4
811
I got to play around with phoenix_sync and TanStack DB today. With just two shape handlers that wrap Ecto queries, I was able to add a realtime sync over to a React frontend and get fantastic performance! #MyElixirStatus
6
15
161
19,168
The latest Code and Stuff is here: Auto-Select Timezones in Phoenix Apps It's a quick one, showing a pattern I use all the time. Link below! #MyElixirStatus
3
4
35
1,506
On the next Code and Stuff, I’ll show how I handle time zones in Phoenix apps. Server rendered, without making the user scroll through every zone on earth. Look out for it on Wednesday!
5
56
2,062
Am I a bad prompt engineer if I just show Claude a screenshot and get passive aggressive?
3
13
936
I made an Ash extension! Elixir is capable of hitting services hard; great for throughput but harsh when those services are trying to recover from an outage. The circuit breaker pattern addresses this issue and is now available in Ash! #MyElixirStatus hex.pm/packages/ash_circuit_…
2
7
89
2,964
Phoenix LiveView 1.1 is out! Colocated JavaScript (and hooks), list comprehension improvements, and an igniter-based script that makes updating easier than ever. What an incredible release—check it out! #MyElixirStatus piped.video/EV6DSqTOXM0
2
23
135
12,141
Replying to @thekitze
I wish I could say it's hard to believe, but after skipping rules on a storage bucket… piped.video/watch?v=mMvfBUNN…
1
773
Replying to @vxunderground
What Tea Got Wrong (and how to avoid it) piped.video/mMvfBUNNKIY
84
Replying to @Dexerto
What Tea Got Wrong (and how to avoid it) piped.video/mMvfBUNNKIY
1
290
Thousands of IDs were stolen because Tea misconfigured Firebase. I built a demo to show how easy it is to avoid this mistake. piped.video/mMvfBUNNKIY
7
824
My next video is live! This time, I explore the ash_state_machine extension. Along the way, you'll learn about policies, pubsub, and Oban integration in the demo app! #MyElixirStatus #AshFramework piped.video/_x6TE7hbE1k
1
8
46
3,395
LLMs don't do a great job of cleaning up after themselves. The result: developers include way too much of this AI slop in their commits. Did nobody teach them about git add --patch?
1
1
28
1,088
Coming soon: learn how to model payment states with ash_state_machine! The demo also includes background job processing to simulate payments, auth policies, and real time updates. All made easy with Ash! Which part are you interested in learning? #MyElixirStatus #AshFramework
5
8
90
3,122
Calling multiple services doesn't have to be a nightmare. My latest video explores Reactor for workflow orchestration. Concurrent execution, automatic rollbacks on failure, and of course: it works with Ash AI. #MyElixirStatus piped.video/0Dvn039qD8I
5
13
62
6,346
Coming soon: A Reactor-orchestrated travel booking demo, available as an AI travel agent's tool. It even uses a prompt-backed Ash action to write an email! The only question is, where's this trip headed? #MyElixirStatus
2
6
38
2,467
Why isn't @AshFramework Reactor more popular? Saga orchestration, managed rollbacks, mermaid diagrams, concurrent execution. Works standalone or with Ash. I think steps could even be driven by Ash AI. Who wants a video on this? #MyElixirStatus hexdocs.pm/reactor/01-gettin…
15
5
82
3,176
As promised, a new Phoenix App from Scratch video: Embedded schemas and an intro to Ecto Multi, all in the context of the demo budget tracker app! There's even some animations to describe Multi, if you're into that sort of thing. #MyElixirStatus piped.video/Vx69evZOEAE
2
8
65
3,578
Embedded Ecto schemas in forms and a brief intro to Multi? Coming soon in the Budgie series on Code and Stuff! #MyElixirStatus
2
3
36
1,497
Did you know @AshFramework can import existing database tables as resources automatically? It can even generate relationships and constraints! #AshFramework #MyElixirStatus
6
8
63
2,036
The @AshFramework AI extension is incredibly powerful. I was testing out the demo generator and was blown away by what it can do! If you haven't tried it yet, you're missing out. #AshFramework #MyElixirStatus piped.video/4dzZ44-xVds
1
6
27
2,096
I tried @github Copilot Coding Agent in Phoenix projects this weekend. Once it was configured with the right environment it is extremely productive: just assign it an issue and let it cook! Here's the configuration files I'm using: gist.github.com/ChristianAle… #MyElixirStatus
1
4
37
2,310
The latest Phoenix App from Scratch video is up! I know folks have been asking for this one. Add a sharing feature, allowing users to join budgets created by others. It also includes many UX considerations you might not be expecting. #MyElixirStatus piped.video/Rews5WNxiNk
6
43
2,503
Coming soon: generate sharing links in the budget tracking tutorial app!
4
23
1,308
Phoenix LiveView (1.1) is getting colocated JS support! While JS commands can cover many scenarios, sometimes you just need a sprinkle of JS in a certain component. I'm excited for this to come out soon! #MyElixirStatus
11
17
168
13,319
The latest Phoenix App from Scratch video is live! I walk through Postgres grouping sets, Ecto fragments, and a combination of zip and drop to calculate rolling balances. Along the way, expect some guided refactoring and little tricks. #MyElixirStatus piped.video/f-BFFWzh9uE
1
6
66
1,900
Following some pretty rough burnout, I'm returning to the Budget tracking app series and catching up on Elixir news. I'm excited to be preparing - Period display pages with Postgres grouping sets - Budget sharing feature - Some Ash framework content? Thanks for being patient!
10
4
95
2,856
Replying to @ThePrimeagen
1
5
244
Phoenix Framework 1.18 will include daisyUI by default. While exploring the docs, I spotted something neat: an llms.txt file designed to help LLMs understand the library. This solves a new adoption barrier, ensuring AI editors generate reasonable suggestions. #MyElixirStatus
3
3
86
3,527
Another episode of Phoenix App from Scratch is now out! It's got data modeling, recursion, associations with cast_assoc, recursion, and a deep dive into database indexes! Also, learn why it's common to build lists in reverse in Elixir. #MyElixirStatus piped.video/RfJSMWHO0tY
3
6
53
1,974
In the next video of the Phoenix App from Scratch series, I ended up explaining linked lists, recursion, constructing lists in reverse, and why field ordering matters in database indexes. Accidentally CompSci heavy, the new episode should be out soon! #MyElixirStatus
1
2
63
1,405
Wow, OpenAI managed to recreate the 56k modem experience of images loading slowly, from top to bottom!
3
312
Replying to @kevinhou22
Just press tab!
1
359
Replying to @d4m1n
Wow, a huge upgrade over my old micro USB single button model!
2
9
727
For a few cents of Anthropic API calls, this prototype is able to analyze video scripts from multiple perspectives: acting like a comment section before recording. It's also an opportunity to use assign_async (loading threads) and recursive CTEs (querying them). #MyElixirStatus
11
742
Behind the scenes, this analysis is being performed by Claude through the fantastic InstructorLite library. #MyElixirStatus
1
5
221
I've been playing around with an idea for a tool to critique manually-written video scripts from the perspective of customizable AI personas. Probably won't launch this anywhere but my local machine, but it's been fun to rapidly prototype something.
1
4
397
Episode 5 of my Phoenix App from Scratch series is out now! Learn how to create reusable LiveView form components that support creation and editing. Along the way, we'll add a LiveView JS dropdown menu to make a more smooth experience. #MyElixirStatus piped.video/gMeUOURvDP8
1
9
59
3,165
@zeddotdev, your new edit prediction feature got me thinking: in the age of AI / vibe coding, is it time to redesign the keyboard? What if it was stripped down to its essentials? zed.dev/edit-prediction
74
without_preloads is a function I add to the factory module that unloads associations. The insert method puts the right stuff in the database, and I regain control over my tests. But it feels like a hack… is there a better way?
1
4
405
ExMachina creates valid hierarchies of dependent models and can insert them into the database. The problem arises when I try to test a context module that doesn't preload in the exact same way. So I usually introduce a little hack to my factory module: without_preloads.
1
1
291
When an Ecto data model starts to grow, I tend to reach for ExMachina to define factories. In my experience, the macros in the package are easier to maintain than generated fixtures, but I always run into a problem: preloading. #MyElixirStatus
7
2
49
2,797
The Phoenix tutorial series continues with episode 3! Learn about decimal types, Elixir protocols, and stateless Phoenix components—all while adding transaction support to the app! #MyElixirStatus piped.video/F-QeDtQ8Gy4
3
8
73
3,634
Replying to @RootCert @felt
It's also how @davydog187 managed to support Timescale DB hyperfunctions! github.com/davydog187/timesc…
5
188
This is part of the magic in packages like @felt's geo_postgis, supporting geographic queries without having to reinvent Ecto! github.com/felt/geo_postgis/…
1
3
207
Ecto fragments are an excellent escape hatch for queries that can't be expressed with the built-in query API. When I wanted to use a BETWEEN in a time-based join, it was just a matter of using some placeholders. Everything was cast safely. #MyElixirStatus hexdocs.pm/ecto/Ecto.Query.h…
2
6
64
1,738
There's an easy way in iex to find types that implement certain protocols: Just run `i/1` to get a ton of info on any term. hexdocs.pm/iex/main/IEx.Help…
1
5
166
Ever wonder where Phoenix forms get their name prefixes from? It's harder to trace than you might think, but it's a great lesson on Elixir Protocols. By implementing the FormData protocol on the Changeset type, the schema's name becomes the name of the form. #MyElixirStatus
1
4
45
1,298
I love to see errors like this. I was working on a redirect in a Phoenix app and saw that I had to use the `external` option. Looks like `to` is limited to local paths. This prevents a whole class of redirect vulnerabilities and is the kind of secure default I love to see in web frameworks. #MyElixirStatus
2
2
34
805
Real Python, in Elixir apps. The Pythonx package is an incredible addition to the Elixir ecosystem. Follow along with a sample Livebook in this short video! #MyElixirStatus piped.video/9FSIF281OAo
1
11
47
2,946
New Phoenix App from Scratch tutorial: Detail View & Route Guards! This is a shorter one, ramping up for next week's introduction of the Transaction data model. #MyElixirStatus piped.video/Shav52BfzWk
3
19
1,080
I hate to say that an is_uuid guard still my preferred way of handling Ecto's strict dumping when pulling in IDs from Phoenix paths. Is there a better way to factor this guard expression? Should this just be written using a `with` or `cond` instead? #MyElixirStatus
5
1
10
830
And finally, here's the updated data model. A new context has been added, with a single Budget schema to start.
3
121
After recording, I learned that Phoenix.LiveViewTest.form/3 does some really great validation that I included in the after-episode PR: github.com/ChristianAlexande…
1
4
172
The next episode of my Phoenix App from Scratch series is now available! Learn to add a schema, list records, build a form, perform validation, and add tests—all while keeping data isolated to each user. #MyElixirStatus piped.video/dsCfQ3y5tHQ
1
5
38
1,124
One little import I always add to ConnCase in my Phoenix projects: Plug.HTML.html_escape/1. It's really helpful when performing tests against rendered HTML, which may replace apostrophes with ' Should this be a default in ConnCase from Phoenix? #MyElixirStatus
3
9
43
1,781
Here's two explainer graphics: what does phx.gen.auth generate and how LiveView forms work
6
277
My Phoenix LiveView series starts now with Episode 0: Setup and Auth! In it, I walk through how I set up a project, how Phoenix apps are structured, and customizing phx.gen.auth. #MyElixirStatus piped.video/0rpt5sMb7cw
5
10
98
5,668
I’ve been working on a full demo app to teach Phoenix LiveView concepts: auth, forms, data modeling, navigation, sprinkles of JS, and a bit of extra security. It’ll be a series and will take some time to produce, so here’s a teaser of what we’ll build together! #MyElixirStatus
4
9
92
3,541
Make sure to combine it with remote_ip to get the right IP address when serving behind a load balancer! If you're shipping on @flydotio like me, add the plug to your endpoint with the fly-client-ip header. hexdocs.pm/remote_ip
2
11
315