Sign in

Mark Ericksen

@brainlid.bsky.social
1.4K followers 129 following 124 posts

Keeping an open mind, sharing what's on my mind. ThinkingElixir.com, podcast.ThinkingElixir.com, #ElixirLang

PostsRepliesMedia
Reposted by Mark Ericksen
Tyler A. Young ⚗️🧑🏻‍💻 @tylerayoung.com · 07/07/2026
Two new security advisories published against Phoenix. Update your #ElixirLang dependencies to 1.5.15, 1.6.17, 1.7.24, or 1.8.9 to get the fixes. 👍 github.com/phoenixframe...
github.com
Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
11710
Mark Ericksen @brainlid.bsky.social · 29/06/2026
Interesting! I haven’t seen memory banks before. Very cool idea!
000
Mark Ericksen @brainlid.bsky.social · 28/06/2026
I’ve been thinking about this as a feature. Like the Anthropic article on agent “dreaming” for async processing memories to organize and update. It all feels very application specific currently. Like are memories stored at all? How are they stored and accessed? What’s worth storing? Love to chat tho
100
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 23/06/2026
The final episode! After 6 years, we close with news on LiveView 1.2 colocated CSS, Earmark’s retirement, Sagents v0.8.0, #Postgres 19, SpaceX buying Cursor AI for $60B, and what’s next for David and Mark! @elixir-lang.org #ElixirLang www.youtube.com/watch?v=p5FW...
youtube.com
Thinking Elixir Podcast 309: The Final Episode
YouTube video by Mark Ericksen
53113
Mark Ericksen @brainlid.bsky.social · 19/06/2026
v0.8.0 has breaking changes: transport, SubAgent task_name, Session/Factory, integer todo ids, replace_file_lines removed. Easiest upgrade: re-run mix sagents.setup on a clean branch and merge changes in. Full guide in the changelog: github.com/sagents-ai/sagents
github.com
GitHub - sagents-ai/sagents: Build interactive AI agents in Elixir with OTP supervision, middleware composition, human-in-the-loop approvals, sub-agent delegation, and real-time Phoenix LiveView integ...
Build interactive AI agents in Elixir with OTP supervision, middleware composition, human-in-the-loop approvals, sub-agent delegation, and real-time Phoenix LiveView integration. Built on LangChain...
000
Mark Ericksen @brainlid.bsky.social · 19/06/2026
More polish: - StreamingSession: host-agnostic streaming helpers with multi-tool-safe deltas, so sibling tool calls keep their UI state - Middleware can persist synthetic transcript entries (like multi-step processes) through the same pipeline as LLM messages
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Quality of life: - Pin allow_other / allow_cancel on ask_user instead of trusting the LLM each call - Todo ids are integers now, so "10" stops sorting before "2" - Optional inline todo snapshots rendered right in the chat transcript
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
The generated Coordinator had grown to ~390 lines of session boilerplate living in YOUR app. v0.8 moves it into the library: Session, Factory, FactoryRouter. Per-request data flows through a typed config. Your Coordinator drops to a thin bridge.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
v0.7 sent agent events over Phoenix.PubSub: a cluster broadcast bus for what's usually ONE local subscriber. Streaming deltas scaled as nodes x agents x tokens/sec of cross-node traffic. v0.8 uses direct, monitored delivery. Same API, far less noise.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
An agent crosses 3 process boundaries per run. OpenTelemetry spans, Sentry context, tenant scope, Logger metadata: all lost across them. Detached traces, nil tenant lookups inside tools. New ProcessContext middleware carries it all the way to your tools.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Extraction or tool output failing validation? New :until_tool_success keeps the run going on a bad result so the LLM can fix its own arguments, bounded by max_runs. Errors feed back, the model retries, you get a clean result. Validate-and-retry, built in.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Structured output used to mean bypassing your agent: losing token tracking, scope, tenancy, fallback models, all your middleware. New Sagents.Extract runs extraction THROUGH the agent. Define a schema, get typed args back. Full context, no AgentServer needed.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Need a tool that STOPS a run, not pauses it? A validation gate that says "not ready, stop here"? LLMs ignore polite stop requests and plow ahead trying to help. New :halt interrupt via the Haltable middleware is a hard terminal stop. The model doesn't get to argue.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Your agent asks the user a question, then the server shuts down: deploy, idle timeout, crash. v0.7: the question was silently lost on reload, conversation came back as if nothing was pending. v0.8: the agent boots back into :interrupted with the question intact.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Sagents v0.8.0 is out. Our biggest release for building AI agents in Elixir. Interrupts that survive restarts, structured extraction through your agent, hard-stop tools, cross-process context, and a far lighter integration. Here's what changed since v0.7 github.com/sagents-ai/s... 🧵
github.com
GitHub - sagents-ai/sagents: Build interactive AI agents in Elixir with OTP supervision, middleware composition, human-in-the-loop approvals, sub-agent delegation, and real-time Phoenix LiveView integ...
Build interactive AI agents in Elixir with OTP supervision, middleware composition, human-in-the-loop approvals, sub-agent delegation, and real-time Phoenix LiveView integration. Built on LangChain...
110
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Quality of life: - Pin allow_other / allow_cancel on ask_user instead of trusting the LLM each call - Todo ids are integers now, so "10" stops sorting before "2" - Optional inline todo snapshots rendered right in the chat transcript
000
Mark Ericksen @brainlid.bsky.social · 19/06/2026
The generated Coordinator had grown to ~390 lines of session boilerplate living in YOUR app. v0.8 moves it into the library: Session, Factory, FactoryRouter. Per-request data flows through a typed config. Your Coordinator drops to a thin bridge.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
v0.7 sent agent events over Phoenix.PubSub: a cluster broadcast bus for what's usually ONE local subscriber. Streaming deltas scaled as nodes x agents x tokens/sec of cross-node traffic. v0.8 uses direct, monitored delivery. Same API, far less noise.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
An agent crosses 3 process boundaries per run. OpenTelemetry spans, Sentry context, tenant scope, Logger metadata: all lost across them. Detached traces, nil tenant lookups inside tools. New ProcessContext middleware carries it all the way to your tools.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Extraction or tool output failing validation? New :until_tool_success keeps the run going on a bad result so the LLM can fix its own arguments, bounded by max_runs. Errors feed back, the model retries, you get a clean result. Validate-and-retry, built in.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Need a tool that STOPS a run, not pauses it? A validation gate that says "not ready, stop here"? LLMs ignore polite stop requests and plow ahead trying to help. New :halt interrupt via the Haltable middleware is a hard terminal stop. The model doesn't get to argue.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Need a tool that STOPS a run, not pauses it? A validation gate that says "not ready, stop here"? LLMs ignore polite stop requests and plow ahead trying to help. New :halt interrupt via the Haltable middleware is a hard terminal stop. The model doesn't get to argue.
100
Mark Ericksen @brainlid.bsky.social · 19/06/2026
Your agent asks the user a question, then the server shuts down: deploy, idle timeout, crash. v0.7: the question was silently lost on reload, conversation came back as if nothing was pending. v0.8: the agent boots back into :interrupted with the question intact.
100
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 09/06/2026
Ecto 3.14 ships UUIDv7 support, Oban Pro adds human-approval workflow steps, Hologram v0.9 brings pure-Elixir realtime push, Dashbit shares Tidewave's #Git integration design, and the #NSA drops new Zero Trust guideline, and more! @elixir-lang.org #ElixirLang www.youtube.com/watch?v=anxr...
youtube.com
Thinking Elixir Podcast 307: Trust Nothing, Sort Everything
YouTube video by Mark Ericksen
0133
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 02/06/2026
Security is front and center with atom exhaustion CVEs and an urgent hackney #security upgrade. Elixir 1.20's type system catching real bugs, a new BEAM-native coding agent called "vibe", and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=S5Eb...
youtube.com
Thinking Elixir Podcast 306: Don't Exhaust Your Atoms
YouTube video by Mark Ericksen
182
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 26/05/2026
News includes Elixir 1.20.0-rc.6 (last RC?), EEF 2026 election results, LiveStash v0.3.0 for Phoenix LiveView state recovery, a call to fund EEF #security work, and @github.com got hacked via a VS Code extension, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=UWFn...
youtube.com
Thinking Elixir Podcast 305: Eleven Minutes to Mayhem
YouTube video by Mark Ericksen
072
Reposted by Mark Ericksen
David Bernheisel @david.bernheisel.com · 20/05/2026
Oh hey! Look at that! I'm a board member of the ERLEF now! Thank you for your votes!! Very happy to serve! erlef.org/blog/eef/ele... #ElixirLang
erlef.org
Erlang Ecosystem Foundation - Supporting the BEAM community
7423
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 19/05/2026
News includes Elixir’s set-theoretic type inference completing all language constructs, #OTP 29.0 released, a wave of CVEs hitting the Phoenix stack, big SWAR string performance gains, and a #LiveView hot-reload tip, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=32Qm...
youtube.com
Thinking Elixir Podcast 304: Types, CVEs, and Hot Reloads
YouTube video by Mark Ericksen
0102
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 12/05/2026
EEF 2026 election candidates are out, Elixir-Vibe launches tools to fight #AI code #slop, erlang_python 3.0.0 embeds CPython into the BEAM, ElixirConf EU 2026 videos are dropping, and more! @elixir-lang.org #ElixirLang #python @elixirconf.bsky.social www.youtube.com/watch?v=t-Vu...
youtube.com
Thinking Elixir Podcast 303: The Taming of the Slop
YouTube video by Mark Ericksen
0104
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 05/05/2026
News includes Mob bringing BEAM-on-device native #mobile dev to Elixir, Folio for print-quality PDFs via Rustler NIF, Oban v2.22 & Pro v1.7.0 released, LiveVue v1.1 with Node-less SSR, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=iQCE...
youtube.com
Thinking Elixir Podcast 302: BEAM in Your Pocket
YouTube video by Mark Ericksen
062
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 28/04/2026
News includes Phoenix LiveDebugger hitting v1.0, LiveStash v0.2.0 released, German Velasco’s TestingLiveView(dot)com course is now free, Volt v0.8.0 drops Node.js for frontend builds, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=rO-y...
youtube.com
Thinking Elixir Podcast 301: Testing, Debugging, and Departures
YouTube video by Mark Ericksen
062
Mark Ericksen @brainlid.bsky.social · 21/04/2026
Thanks Lars! We appreciate that. And thank you for organizing events and contributing content to the community! You're awesome!
140
Reposted by Mark Ericksen
Lars Wikman @lawik.bsky.social · 21/04/2026
Big congrats and props to Thinking |> Elixir for 300 issues of continuously and consistently useful podcasting. podcast.thinkingelixir.com/300 Showing up like this is a skill and they've done a great job at it. #elixirlang
podcast.thinkingelixir.com
Celebrating 300 with José Valim
Episode 300! News includes the Localize library v0.15.0, a new program dependence graph tool called Reach, Tidewave voice input and PWA support, ERLEF 2026 elections, plus a special in-depth…
1222
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 21/04/2026
Episode 300! News includes the Localize library v0.15.0, a new program dependence graph tool called Reach, #Tidewave voice input and #PWA support, @TheErlef 2026 elections, plus a special in-depth interview with @josevalim.bsky.social! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=m5DV...
youtube.com
Thinking Elixir Podcast 300: Celebrating 300 with José Valim
YouTube video by Mark Ericksen
0123
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 14/04/2026
The EEF needs your support for a major security grant, Hex-pm completes its first security audit, @josevalim.bsky.social drops a massive Tidewave update, and we discuss the ClickFix supply chain attack that hit #Axios, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=S_gh...
youtube.com
Thinking Elixir Podcast 299: Don't Paste That Into Your Terminal
YouTube video by Mark Ericksen
092
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 07/04/2026
News includes a redesigned Hex-pm website, #Hex 2.4 adding #OAuth and #2FA, the official Elixir Expert LSP hitting v0.1, a new LiveStash library for LiveView state recovery, and more! #ElixirLang @ElixirLang www.youtube.com/watch?v=jn4t...
youtube.com
Thinking Elixir Podcast 298: Hex Gets a Glow Up
YouTube video by Mark Ericksen
061
Mark Ericksen @brainlid.bsky.social · 01/04/2026
Totally agree with both of you! With JavaScript applications in particular, the vulnerability comes through transitive dependencies. And a typical JavaScript project has so many more of those, it exponentially increases your exposure.
110
Mark Ericksen @brainlid.bsky.social · 01/04/2026
At some level, we are also susceptible to it. The difference is the scale. With JavaScript applications in particular, the vulnerability comes through transitive dependencies. And a typical JavaScript project has so many more of those, it exponentially increases your exposure.
000
Mark Ericksen @brainlid.bsky.social · 01/04/2026
Totally agree.
010
Mark Ericksen @brainlid.bsky.social · 31/03/2026
Is it just me? Or does it feel like the safest way to protect yourself from JavaScript and Python supply chain attacks is to just not use them? #ElixirLang
3231
Reposted by Mark Ericksen
ThinkingElixir @thinkingelixir.com · 31/03/2026
News includes Quickbeam bringing a full #JS runtime into the #BEAM, Elixir’s type system inspiring #Python’s Ruff, LiveView Debugger v0.7, Oban v2.21, and more! #ElixirLang @elixir-lang.org www.youtube.com/watch?v=FfB0...
youtube.com
Thinking Elixir Podcast 297: JavaScript Joins the BEAM?
YouTube video by Mark Ericksen
132
Mark Ericksen @brainlid.bsky.social · 28/03/2026
The Sagents demo project can be found here. github.com/sagents-ai/a...
github.com
GitHub - sagents-ai/agents_demo: A demo Phoenix LiveView application showcasing the Sagents's multi-conversation agent architecture.
A demo Phoenix LiveView application showcasing the Sagents's multi-conversation agent architecture. - sagents-ai/agents_demo
000
Mark Ericksen @brainlid.bsky.social · 28/03/2026
The agents_demo app has been updated to work with Sagents v0.4.0. Full-featured chat UI with real-time agent execution, file browsing, and conversation persistence -- all running on the latest release. #ElixirLang #MyElixirStatus
160
Mark Ericksen @brainlid.bsky.social · 28/03/2026
Upgrade: mix deps.update sagents. Breaking changes in FileEntry field names and return types. See the changelog for migration steps. github.com/sagents-ai/s...
github.com
010
Mark Ericksen @brainlid.bsky.social · 28/03/2026
New "default: true" option on FileSystemConfig. A single catch-all config handles all paths, ideal for database backends that don't care about directory structure. Specific configs still take priority. hexdocs.pm/sagents/Sage...
hexdocs.pm
Sagents.FileSystem.FileSystemConfig — Sagents v0.4.2
110
Mark Ericksen @brainlid.bsky.social · 28/03/2026
MessagePreprocessor behaviour lets you split messages before they hit state. User sends @-mentions. The UI gets a styled chip, the LLM gets the full document context. Zero overhead when not configured. hexdocs.pm/sagents/Sage...
hexdocs.pm
Sagents.MessagePreprocessor — Sagents v0.4.2
110
Mark Ericksen @brainlid.bsky.social · 28/03/2026
New tool_context field on Agent. Pass user IDs, tenant info, or Phoenix scopes. It merges into custom_context so tool functions can access caller data cleanly. Making it easy to scope an action to the user's data and permissions. hexdocs.pm/sagents/Sage...
hexdocs.pm
Sagents.Agent — Sagents v0.4.2
110
Mark Ericksen @brainlid.bsky.social · 28/03/2026
Metadata-only changes (tags, title) no longer rewrite the full file to storage. A new dirty_non_content flag routes to update_metadata_in_storage when the backend supports it, falling back to full write transparently.
110
Mark Ericksen @brainlid.bsky.social · 28/03/2026
move_file/3 atomically renames or moves files and directories. It re-keys all entries, transfers debounce timers, and calls the new move_in_storage/3 persistence callback so backends can handle path changes efficiently. hexdocs.pm/sagents/Sage...
hexdocs.pm
Sagents.FileSystemServer — Sagents v0.4.2
110
Mark Ericksen @brainlid.bsky.social · 28/03/2026
Directories are now first-class FileEntry objects. write_file to a nested path auto-creates ancestors (mkdir -p semantics). list_entries returns the full tree with metadata, everything you need for file browser UIs. hexdocs.pm/sagents/Sage...
hexdocs.pm
Sagents.FileSystem.FileEntry — Sagents v0.4.2
110