Presented my solution for integration testing of Telegram bots as a lightning talk at ElixirConf EU. #elixirlang
Elixir ▷ Max
@mxgrn.com
https://x.com/elixirtap Have *you* fallen for #ElixirLang yet? TILs and reflections from my 10 years with Elixir. Cranking out Elixir for jumpapp.com on weekdays. Cooking on my days off.
A small TIL for Git lovers: `git merge-base HEAD main` gives you the nearest common commit between the current branch and main. That's the commit where those two parted ways.
People have always been wary of computer viruses, and for good reason. Now, we have much smarter non-deterministic (!) systems running our VPSs and laptops, online, with increasing access to other services. What can go wrong?
So sad that Telegram has a bad reputation in the West. It's *by far* the best UI/UX messenger out there. WhatsApp doesn't even come close (although I love the fact that it runs on the BEAM).
For as long as I can remember, I thought these were equivalent: 1) if foo, do: bar, else: baz 2) foo && bar || baz Until the day bar was nil. #ElixirLang
Whoever designed the Apple Watch Workout app, please leave for Meta.
My lexicorn.ai just sold its 10th paid subscription. On to the first 100! :)
Lexicorn · Telegram Vocabulary Builder
lexicorn.ai
I don't know who needs to hear this, but this works in #ElixirLang (new line after :foo is key): if true, do: (:foo :bar) Can you guess what it returns?
Want a supervised task to finish (not get killed) during rolling #ElixirLang deployments? Simply trap the exit: Task.Supervisor.start_child( MyApp.TaskSupervisor, fn -> Process.flag(:trap_exit, true) do_work() end ) The task will have 5 seconds to finish.
Just downloaded ChatGPT Atlas, and I must say this direct browser-ChatGPT integration can be very useful. It just walked me through creating a free-form Google Analytics report, which I had no knowledge of. Previously, I'd need to send ChatGPT screenshots of where I was, and it was tedious.
Are you learning a foreign language by any chance? And what are the odds you use Telegram too? 🤔 I’ve been building a Telegram bot that finally makes vocabulary learning with spaced repetition fun for me, thanks to LLMs. Maybe it will for you, too. Give it a try: t.me/lexicornbot?...
TIL: If you append /rss to the link of any bsky profile, you'll get, well, an RSS feed. Handy if you really don't want to miss posts from a specific someone.
Neovim geeks 🫶 — this helps me debug in #ElixirLang: With the cursor inside a function, :ElixirCopyFuncFqn copies its fully qualified name (FQN) to the clipboard — ready to paste into IEx, local or remote. github.com/mxgrn/dotfil...
My favorite application of AI? Sharpening my tools. Just vibe-coded this toggle for #ElixirLang maps in Neovim.
Want to disable all unmocked HTTP calls from Req at once during #ElixirLang tests? Simply add this to test/test_helper.exs: Req.default_options( adapter: fn req -> raise "Unmocked call to #{req.url}" end ) (replace `raise` with a log warning if that's more useful)
It's easy to keep nudging the AI until it 'fixes' the tests, and it feels like achieving something, while the value of such tests may be plainly negative. Seeing too many false positives like that lately.
Isn’t it neat that Elixir’s AST is valid Elixir? What other languages besides Lisp can claim that?
It's beyond me why Quokka, the awesome Elixir formatter plugin, has so few stars on GitHub, I use it on every project: github.com/emkguts/quokka
GitHub - emkguts/quokka: A configurable Elixir styler
A configurable Elixir styler. Contribute to emkguts/quokka development by creating an account on GitHub.
github.com
A very nice, concise, top-level introduction to Elixir and BEAM. Share it with anyone who's willing to understand why you're so lucky to work with the tech. youtu.be/_5B_B_IgtAg
Practical Arguments for Erlang / Elixir - Shawn McCool
YouTube video by Shawn McCool
youtu.be
I never miss a talk by Evan Czaplicki, and a fresh one just dropped: www.youtube.com/watch?v=YPAa...
Keynote: Rethinking our Adoption Strategy - Evan Czaplicki | Lambda Days 2025
YouTube video by Code Sync
youtube.com
Just something to casually mention to your next non-Elixir developer friend.
Let’s recap: BBC uses custom Elixir DSLs to serve 📈 600m+ monthly unique views 💻 12 servers (down from 100 🧑💻 7 #elixirlang engineers! Mind blowing! 🤯
Me: What's your current favorite escape hatch when LiveView doesn't quite cut it? Chris McCord: Web components with Lit. #ElixirConfEU
Vibe Mitigation Engineer. Full-time, on-site.
Vibe Risk Senior Manager
When to name your #ElixirLang function with a bang? Only if the function is *expected* to throw errors during normal execution. Do not simply 'inherit' bangs from what’s inside that function (`Repo.update!`) if those exceptions would signal a bug (that is, should never happen).
AI won’t create anything fancy on its own. But it’s great at producing building blocks, with which you, human, can build the fancy.
Just published my first Hex package—one that no one else should even consider using. It was simply the easiest way to get its documentation into Dash. Am I doing it wrong? #ElixirLang
Hey @sasajuric.bsky.social, I would be very curious to hear about your experience teaching programming to non-developers. Would you consider bringing this up in your next interview or doing a conference talk about it?
Hey @peterullrich.com, in the context of programming, would you say that the effort-to-result ratio of writing blog posts is better than that of creating videos?