#ElixirLang developer working at Jump. Former software dev at @felt and X-Plane. He/him.
Public Key
npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Profile Code
nprofile1qqsxhvwhkgwm4l7fjza26p0c7rvysrmg5vcta244npjzwh6rqrfustspz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dskh67r5
Show more details
Published at
2026-08-20T13:11:14Z Event JSON
{
"id": "5bde8776a5f3f04b426872e57274e961a647a66d9ae001bf3302ddfcdbb65dfb" ,
"pubkey": "6bb1d7b21dbaffc990baad05f8f0d8480f68a330beaab59864275f4300d3c82e" ,
"created_at": 1787231474 ,
"kind": 0 ,
"tags": [
[
"proxy",
"https://fosstodon.org/users/tylerayoung",
"activitypub"
],
[
"client",
"Mostr",
"31990:6be38f8c63df7dbf84db7ec4a6e6fbbd8d19dca3b980efad18585c46f04b26f9:mostr",
"wss://relay.ditto.pub"
]
],
"content": "{\"name\":\"Tyler A. Young 🧑🏻💻⚗️\",\"about\":\"#ElixirLang developer working at Jump. Former software dev at @felt and X-Plane. He/him.\",\"picture\":\"https://cdn.fosstodon.org/accounts/avatars/109/263/097/285/793/649/original/9788dc52d657654c.jpg\",\"banner\":\"https://cdn.fosstodon.org/accounts/headers/109/263/097/285/793/649/original/193e58b7e69f3331.jpg\",\"nip05\":\"[email protected] \",\"fields\":[[\"GitHub\",\"https://github.com/s3cur3\"],[\"Blog\",\"https://tylerayoung.com/\"],[\"BlueSky\",\"https://bsky.app/profile/tylerayoung.com\"],[\"Gravatar\",\"https://gravatar.com/tylerayoung\"]]}" ,
"sig": "52b3369b1f34661a40cdef7983d4248696f596e076b2880533afbfcd5c739ae1d39b8f0baf9791780590dead523f719ace84c82c6433a2caaa739a0690efdc8d"
}
Last Notes npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ TIL `Phoenix.PubSub.subscribe` is not idempotent; if your process calls it twice for a given topic, you'll get two notifications for each message posted to it. Or... if you call it 4,000 times, once on each update to your LiveComponent, you'll get 4,000 messages. Ask me how I know. 🫠 To be clear, this is *explicitly* noted in the docs! ...I did not read those docs. https://hexdocs.pm/phoenix_pubsub/2.2.0/Phoenix.PubSub.html#subscribe/3 #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Today in obscure sorrows: it's driven me nuts for a long time that Sobelow doesn't have a way to add inline skip comments in your Phoenix router (forcing you to instead maintain a `.sobelow-skips` file). Anyway, there's a PR for that now. https://github.com/sobelow/sobelow/pull/33 #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ At work, we got our app compiling without warnings on #ElixirLang 1.20-rc.6. The new type system discovered ~500 issues that 1.19 did not. - Most were just dead code (handling patterns that could never actually match in practice) - A handful were outright bugs, my favorite of which was: {:error, reason} -> {:error, "Failed: #{reason}"} ...where the compiler could prove that `reason` didn't implement the String.Chars protocol, and therefore the error handler would crash 100% of the time. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ A former coworker with 8 years of #ElixirLang experience is looking for work. I can vouch for him being a careful, thorough engineer, and a real "manager of one." If he builds something, you can be confident it'll be solid and well thought out. You'd be lucky to have him on your team. Reach out here: https://www.linkedin.com/in/kylevsteger/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…am90 @nprofile…8wst Neovim works great today. We have maybe a dozen of people at Jump using it that way. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ The v0.1 release of Expert (the new, official #ElixirLang LSP) is now final! 🎉 The best Elixir LSP experience keeps getting better. 😎 Tremendous thanks to all the contributors, and to Jump for sponsoring @nprofile…8wst to work on this full-time. 🙏 https://github.com/elixir-lang/expert/releases/tag/v0.1.0 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I'll be interested in whatever you find, whether it's "oh good, no matches" or "OMG, how did this happen?!". 😄 If you find useless tests that it *fails* to catch, that's also valuable! You can find the code here: https://github.com/s3cur3/credo/commit/7e502a56ad6a014b2af9c0faaa3f93ebdb661279 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If you'd like to try it out and give me feedback, here's what to do (3 quick steps): 1. Temporarily update your mix.exs like this: defp deps do [ {:credo, github: "s3cur3/credo", branch: "ty/vacuous-tests"}, ... ] end 2. Add this to your `enabled` checks in `.credo.exs`: {Credo.Check.Warning.VacuousTest, [ ignore_setup_only_tests?: false, library_modules: [Ecto, Jason, Phoenix, Plug, Oban] ]} 3. Run `mix credo` and report back with how it went. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Wanna find garbage tests in your #ElixirLang codebase? I'm working on a Credo check that will flag any test that fails to exercise production code. Stuff like: test "to_string works" do assert to_string(:user) == "user" end (That's a real example I found in our ~20k test codebase!) 🧵 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If you're using the #ElixirLang NodeJS package, be advised there's an information disclosure security vulnerability (CVE-2026-33872). It'd be quite difficult for an attacker to intentionally exploit, but fairly easy to accidentally trigger yourself. Update to 3.1.4 ASAP. https://github.com/revelrylabs/elixir-nodejs/security/advisories/GHSA-rwcr-rpcc-3g9m npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Informal poll: which topic would you most like to see an #ElixirConf talk about? 1. How I self-hosted my indie SaaS app 2. Tools and practices for hyperscaling #ElixirLang teams, based on my work at Jump (we grew from 4 to 50 devs my first year there) 3. You already know what a monad is 4. CPU Perf npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ At work, we were seeing frequent full recompiles of our #ElixirLang app (both the deps and our code!). Turns out it was because Claude Code was using the globally-installed Elixir rather than the one installed by Mise. I wrote about the fix here: https://tylerayoung.com/2026/03/11/elixir-full-recompiles/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ The call for talks for #ElixirConf Chicago (September 10-11) is out! Now to put together some proposals... https://elixirconf.com/ #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…lgpc Hahaha, I’m so sorry. 🫡 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ This is a huge milestone for the new #ElixirLang LSP. At Jump, we’ve had Paweł Świątkowski (katafrakt on the internet) working full time getting Expert dialed in for our large codebase. The stability and reliability are now hands down the best Elixir LSP experience I’ve had, and we’re not done yet. Congrats to all the contributors! 🥂 https://expert-lsp.org/the-first-release-candidate/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Anybody have contacts at PagerDuty? I’d love to ask them about their usage of #ElixirLang. They had a blog post in 2020 about it, but I can’t find anything they’ve written since then. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…lgpc They just mean to go into detail. It’s synonymous with like “Let’s drill in to that.” 🤪 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…lgpc I have two: 1. “Let’s double-click on that.” 2. “Learnings” as a noun (we already have a noun for that… it’s a lesson!) npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…f30g “biblical demolition equipment” nearly killed me 😂 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…xdat Oh! I did not know this... uh... huh. Yeah, I definitely opened the PR against the wrong one. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…xdat @nprofile…8jts Yeah, I exaggerate when I say “every.” Mostly I’m just finding that a lot of tools have like a top-level collection of independent tasks that they run on the codebase, and they can be pretty trivially parallelized. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I'm on a mission to find every Enum.each/2 in the tooling I use and replace it with Task.async_stream/2 😁 https://github.com/nccgroup/sobelow/pull/184/changes#diff-6a33dd30a8a2814c6f96844ab94d04cccda6059424ab7ca5d813ad57db7db3b6 #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If you use Credo on a large #ElixirLang project, you should grab the new 1.7.15 update. The perf improvements took the total runtime on our codebase at work from about 33 down to 9 seconds. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Is the control off or on? Yes! npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…n4gx Corollary: tell me the timezone that time is displayed in! I hate wondering whether it’s UTC, or the timezone the account was created in, or my current timezone. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…c6t2 One look at this week’s episode title and I knew exactly who it was referring to. 😂 👋 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I may be the only one parsing WHOIS records in #ElixirLang, but the latest release of the library I maintain for this has big improvements for compatibility with a wider variety of domains. https://github.com/utkarshkukreti/whois.ex npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…wy29 @nprofile…2ej6 I’m gutted to hear Under the Radar is going away. As someone who’s enjoyed and looked forward to all 10 years, I can’t thank you enough for the thoughtfulness, openness, and insights you’ve both provided over the years. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Who do you know who wants to come work full time on #ElixirLang OSS tooling? (Boosts appreciated!) https://jump.ai/careers?ashby_jid=3908f4eb-aed5-4d8f-bcab-99c11d4d72ad #ElixirJobs npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…usu0 God, Reddit is the worst place on the internet. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Lots and lots and lots of people near you are about to be going hungry. Send me a screenshot of your donation and I’ll match it. (Let’s cap it at $2,000 so my wife doesn’t murder me. 😆) https://www.politico.com/news/2025/10/23/states-snap-food-aid-benefits-government-shutdown-00619117 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…2v86 Tears is right. I never thought it would happen. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Anybody wanna come manage a bunch of awesome people on my team? https://careers.jumpapp.com/35617 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…2jsd I was for sure astonished to find we had dozens of errors 😆 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ TIL by default, SoBelow does not return an error status on exit when it finds issues. If you're like me, you expect this to fail CI if SoBelow finds issues: mix sobelow It will not! You have to run it with: mix sobelow --exit Low #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ A hair over two weeks until #ElixirConf2025… I’m psyched. If you still need a ticket, use the coupon FriendOFmine25 for a discount. 👀 https://cdn.fosstodon.org/media_attachments/files/115/000/294/164/051/357/original/d840783ac201cf60.png npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…3sz9 Boy, yeah, string versus atom keys in maps bites everybody. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…h53q Ooooh, that’s a good one! npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Elixir has relatively few footguns compared to any other language I’ve used, but it does still have some. The big ones for me: - and/or being almost-but-not-quite-identical to &&/|| - comparison of DateTime structs What else? npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ The BBC is using #ElixirLang https://careers.bbc.co.uk/job/Senior-Software-Engineer/24846-en_GB/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…t230 Re: regional pizza toppings, here in the KC area, barbecue pizza is pretty common (chicken is great, but—I kid you not—burnt ends are amazing). But the true abomination is the “cheeseburger” pizza. Ketchup or mustard sauce, ground beef, cheddar cheese, and dill pickles. It is unreasonably popular here, and one of the few pizzas I’d generally rather go hungry than eat. https://cdn.fosstodon.org/media_attachments/files/114/875/027/838/659/703/original/f1c8f17a0837b425.jpeg npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…rz46 Kobo’s stuff the last few years has been fantastic. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Being an American Elixir dev means typoing "behavior" in 98% of contexts. behaviour^D^D behavior npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Ooh, shiny https://cdn.fosstodon.org/media_attachments/files/114/790/734/669/287/359/original/2126ea886a7c6c21.png npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If you had 3 wishes to spend on fixing devex gripes in your Elixir codebase, how would you spend them? npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I am extremely excited to see Elixir friends in person again. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Woohoo! I'll be speaking in person at ElixirConf 2025, with a talk called "Cat and Mouse: Challenge in Adversarial Web Scraping." I'm gonna talk about all the stuff I learned about finally doing scraping well after 3 attempts at it in my career. 😄 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ A bunch of ElixirConf 2024 videos were released a few days ago, including mine. 🎉 “More Testing, Fewer Tests” goes into the many ways to make your tests more concise and communicative. https://youtu.be/24q8WNgYrJE npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…amld I did not know this! I don’t care a lick about either new feature, so I’ll be happy to save money reusing my existing ones. 🙏 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ This is the one I'm thinking of: https://fly.io/blog/youre-all-nuts/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If I say “holy shit, people are mad about that blog post,” does everybody know which one I’m talking about? npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ One of y’all should go write #ElixirLang at Apple. https://jobs.apple.com/en-us/details/200604960/sr-software-engineer-elixir-environmental-systems?team=SFTWR #ElixirJobs npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ TIL that SmartRent forked the #ElixirLang Styler project to actually make it configurable. Quokka is the Credo-but-just-fix-it-for-me that I've wanted for 6 years of doing Elixir. 😍 😍 😍 https://github.com/smartrent/quokka npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Why won't my coworkers approve my PR?? https://cdn.fosstodon.org/media_attachments/files/114/553/454/725/599/768/original/a7bca6d832a473f6.png npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…ewc6 Coming soon: Go Now HB Go HB Go Max HB Go Max Now npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Proposal for a new convention for referring to #ElixirLang functions when you absolutely can't be bothered to count its arity: MyModule.my_fun/??? npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Being a professional programmer means becoming just incredibly well acquainted with your own fallibility. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…n5tq Hey, sorry to bug you… if you can approve this fix to CI, I can take care of the remaining open PRs on Geo. 😄 https://github.com/felt/geo/pull/235 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Yay! The FLAME talk @nprofile…aq6x gave at ElixirConf US last year is finally up. This was one of my favorites of the conference. https://youtu.be/KrAqMyjbkJQ #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…knxn I think it's Safari. It's not machine-specific, because every Mac I've used has been like this, with GitHub only. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ There's a remote code execution vulnerability in OTP. Update your #ElixirLang deployments to OTP 27.3.3, 26.2.5.11, or 25.3.2.20 ASAP. https://github.com/erlang/otp/security/advisories/GHSA-37cp-fgq5-7wc2 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ This is unintuitive to ~100% of people when they first learn about it, but it sort of makes sense, in that you’d like to know your changes will be okay after you merge, not just on your branch. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ PSA: GitHub Actions always runs CI against a temporary merge of your branch + your main branch. The surprising side effect of this is that tests that don't even exist on your branch can fail in CI (because you’re behind `main`). npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ #ElixirLang people, has anyone actually measured the cost of larger stacktraces in production? It seems to cost approximately nothing, but it makes a huge difference in debugging. I'd love to see the Phoenix default of 20 apply to all environments, not just dev. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ 64 GB of RAM. 16 CPU cores. Can't type in a comment box on a GitHub PR review in real time. Maybe someday we'll have the computing resources for this... npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ My 8 year old has been really into making games in Scratch, and is thinking about moving to a text-based programming language to get past some of Scratch's limitations. Any recommendations for simple Elixir-based games, or should I bite the bullet and do Python? #ElixirLang npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I have an unhealthy love of utterly unwieldy conference talk titles. They just amuse the hell out of me. Current title I'm playing around with: You Already Know What a Monad Is (Even If You Didn’t Know That You Know), and Why That Matters npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I missed it initially, but the call for proposals is out for ElixirConf US 2025. I think I'm gonna submit a couple talks, one a followup to my lightning talk last year about the Result monad, and another about adversarial web scraping. https://sessionize.com/elixirconf-2025/ npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I've documented what I ended up doing here: https://github.com/elixir-lang/elixir/pull/14385#issuecomment-2772915205 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Likewise I tried adding a blocklist derivation of Inspect to `MyApp.Schema`: defmodule MyApp.Schema do defmacro __using__(opts) do quote do use Ecto.Schema @derive {Inspect, except: [:password, :name]} end end end ...but Inspect gets mad about unknown fields. Any ideas? npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Okay #ElixirLang folks, I need your ideas... I'd like to override the fallback Inspect protocol for all structs to redact certain sensitive keys. For instance, I'd like the backtrace of: Enum.reduce(%User{password: "secret"}, fn _, _ -> :ok end) ...to redact "secret". I'd really like to avoid relying on devs to remember to derive the Inspect protocol on every struct they create. I tried to do: defimpl Inspect, for: Map do ... end ...but Elixir is displeased with me (inscrutable errors). npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Hey, uh... apologies to everybody I've been less than responsive to, especially around open source stuff. My dad died unexpectedly at the beginning of March, and literally 8 hours later, my grandma went to the ICU for three brain bleeds. Family stuff has been A Lot™. 😬 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Man, I feel this so much. I've invested a ton of time into GitHub Actions over the years, and the tight integration with GitHub makes it really hard to beat (imagine that). There are so many sharp corners, though, on seemingly simple things. https://www.feldera.com/blog/the-pain-that-is-github-actions npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ If you're writing tests for an Ecto schema module, consider using Ecto.Changeset.apply_action/2 (or its ! variant) rather than actually hitting the database. It’ll return the struct as though it had hit the DB if and only if the changeset was valid. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Example: test "changeset accepts default action" do assert %MyModule{action: :default} = MyModule.changeset(%{action: :default}) |> Ecto.Changeset.apply_action!(:insert) end npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Obviously this isn’t a huge optimization, but it’s nice to know about, and it can make a speed difference on a big enough test suite. The biggest limitation is that it won’t run checks that only happen within the actual database, like foreign key checks. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ When Saša Jurić speaks, I listen. https://www.youtube.com/watch?v=AYUNI2Pm6_w npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…5n4p I'd recognize @nprofile…8kqq anywhere! 😁 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ @nprofile…dppm I do tell Siri she's utterly useless. 😆 npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ I am impeccably polite when addressing an LLM. Some day, when our AI overlords take over, they're going to remember that and spare me. npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ Me writing TypeScript: https://cdn.fosstodon.org/media_attachments/files/113/992/019/102/629/511/original/f7cc3ee361210150.jpg npub1dwca0vsahtluny9645zl3uxcfq8k3gesh64ttxryya05xqxneqhqfdgd29 Tyler A. Young 🧑🏻💻⚗️ We got headshots at work... should I switch my profile pic? https://cdn.fosstodon.org/media_attachments/files/113/986/087/789/357/571/original/7a6df10cfb1436e8.jpg