I wrote a tiny blog post about a custom helper function I use in almost every project: assert_eventually. It makes it easy to wait for an async process to complete in your test suite without using Process.sleep!
Hey community ![]()
I wrote a quick post on how to create Credo check to raise a warning if a Logger call is used as last return statement. A logger call (e.g. logger.error/2) returns :ok, which might be unexpected to new comers in Elixir.
Cheers ![]()
Great title ![]()
I bought the Ash Framework book, and made some notes on the dev lifecycle and include some thoughts and welcome comments.
Ash Framework approaches the TCO (Total Cost of Ownership) argument implicit in LLM AI prompt or vibe coding from a different direction. Ash Framework promises to reduce TCO, with installers, generators, declaration and derivation. Ash gives the TCO of code gen with the precision of SDLC. So lets use the Ash Framework tools!
Does @AshFramework provide accelerated lean precision prompt engineering?
Lots of talk about prompts generating code. I like my code-gen âpromptsâ to be PRECISE and ACCELERATED and carefully considered.
sh <(curl 'https://ash-hq.org/new/store?install=phoenix') \
&& cd store && mix igniter.install ash_phoenix \
ash_graphql ash_json_api ash_postgres ash_sqlite \
ash_authentication ash_authentication_phoenix ash_money \
ash_csv ash_admin ash_oban ash_state_machine \
ash_double_entry ash_archival ash_paper_trail cloak \
ash_cloak --auth-strategy password \
--auth-strategy magic_link --yes && mix ash.setup
It explains how to integrate AG Grid into LiveView projects, enabling features like real-time sorting, filtering, and pagination without full page reloads. The article also covers customizing cell data and implementing efficient updates to ensure a dynamic user experience.
Wrote a new post on security best practices, enjoy!
I couldnât find a complete tutorial for how to set up E2E tests with Cypress and LiveView using Ecto sandboxes. So I wrote on. Hope someone finds it useful!
Introduction to Contexted - an open-source lib I wrote some time ago that can help you keep the Phoenix Contexts maintainable and clean in long-term ![]()
I recently dove into processing large genetic datasets and I utilized a couple of cool tools like Flow and Burrito along the way. The article talks about the why, a bit of genetics background and some considerations I took for working with data this large locally ![]()
Internet is dark and full of strange creatures. Some of them impersonate Erlang nodes and may try to connect to your cluster. Who you gonna call if :AAAAAA@AAAAAAA show up? Hide Your Nodes, AAAAAA@AAAAAAA is Coming | Alex Martsinovich
How do you take care of the security in your projects, are you using available tools to their full potential?
We decided to explore security measures for Elixir and Phoenix:
Secure Web Development in Elixir & Phoenix: Key Security Practices | Curiosum
The article includes topics such as:
Defending against common threats like XSS, CSRF, and SQL Injection
Utilizing Phoenixâs built-in security capabilities effectively
Implementing authentication and authorization methods
Safing sensitive data to prevent leaks and breaches
A deep dive into Elixir compiler compiling Elixir code ![]()
I recently wrote a blog post about creating software with AI. The blog post doesnât go into what tech stack was used as I wanted to keep it more general, but I can mention that here. It was an Elixir/Phoenix/LiveView project. In that particular project, Claude Code generated nearly 25,000 lines of the initial implementation code. After some code formatting, fixing of compile errors, testing, linting, etc., it was a decent start of a functioning site. I had mix phx.new create a base set of code for Claude to implement on. After that initial implementation was complete, I had Claude dump some project stats. Here is a piece of that data:
| Metric | Count |
|---|---|
| Files in initial commit | 25 |
| New files created | 143 |
| Files modified | 143 |
| Lines added | 24,859 |
| Lines deleted | 781 |
Elixirâs Advantage in the Era of AI
Iâve been exploring AI dev assistants (Super into Claude Code right now) and decided that if I want to make a difference I need to contribute to the conversation more. I love Cursor and the direction coding assistants are going is making me really optimistic. In particular, I think Elixir is in an amazing position to capitalize on AI dev. I love Elixir in general and many of the reasons I love it also are great contributors to why I think Iâve had such a positive experience with AI tooling. Hereâs my post on why I think Elixir can shine. Also, first time posting blog content here, please give me feedback ![]()
I did a follow-up to my last post (
couple message up) about how great Elixir and AI have been for me. This one is specifically about how Iâm using the Claude Code cli tool to make big changes to my current Liveview app. Let me know what you think!






















