<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adolfo Neto</title>
    <description>The latest articles on DEV Community by Adolfo Neto (@adolfont).</description>
    <link>https://dev.to/adolfont</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F168676%2F85a0b7c8-3022-43c4-8374-bb9971b0ba3f.jpg</url>
      <title>DEV Community: Adolfo Neto</title>
      <link>https://dev.to/adolfont</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adolfont"/>
    <language>en</language>
    <item>
      <title>Type checking is a confession that we’ve created unnecessary complexity</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Fri, 05 Sep 2025 17:02:17 +0000</pubDate>
      <link>https://dev.to/adolfont/type-checking-is-a-confession-that-weve-created-unnecessary-complexity-101f</link>
      <guid>https://dev.to/adolfont/type-checking-is-a-confession-that-weve-created-unnecessary-complexity-101f</guid>
      <description>&lt;p&gt;Read &lt;a href="http://bit.ly/46n2OiZ" rel="noopener noreferrer"&gt;full text by Paul Tarvydas&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Read also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/adolfont/does-jose-valim-prefer-dynamic-typing-or-static-typing-27fg"&gt;Does José Valim prefer dynamic typing or static typing?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/adolfont/static-typing-in-elixir-25p3"&gt;Static Typing in Elixir&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bit.ly/4m5egEx" rel="noopener noreferrer"&gt;Programming types and mindsets, by David Heinemeier-Hanson&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Should we use LLMs?</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Thu, 21 Aug 2025 11:52:20 +0000</pubDate>
      <link>https://dev.to/adolfont/should-we-use-llms-3l4p</link>
      <guid>https://dev.to/adolfont/should-we-use-llms-3l4p</guid>
      <description>&lt;p&gt;I was just reading &lt;a href="http://bit.ly/45FxsTd" rel="noopener noreferrer"&gt;Friends Don't Let Friends Prompt, by Emily M. Bender&lt;/a&gt; and I found these arguments against using LLMs quite interesting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the "theft argument (even though they weren't using it when they would have otherwise paid someone, it's still &lt;strong&gt;based on stolen art&lt;/strong&gt;)"&lt;/li&gt;
&lt;li&gt;"the labor exploitation argument (&lt;strong&gt;data workers enduring terrible conditions&lt;/strong&gt; to prevent end users from seeing horrific output)"&lt;/li&gt;
&lt;li&gt;"the environmental argument (these things have an &lt;strong&gt;environmental cost&lt;/strong&gt;)"&lt;/li&gt;
&lt;li&gt;the expansion argument: "&lt;strong&gt;every use of these systems builds the case for training the next one and building the next data center&lt;/strong&gt;".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you think about these arguments?&lt;/p&gt;

&lt;p&gt;I will interview Emily and Alex Hanna, the authors of &lt;a href="https://amzn.to/41dLWZo" rel="noopener noreferrer"&gt;The AI Con&lt;/a&gt;, on &lt;a href="https://www.youtube.com/watch?v=qP-hG53qFpU" rel="noopener noreferrer"&gt;September 10th, 18:00 (UTC-3)&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Unlock Elixir and Erlang with Personalized GPTs from the Erlang Ecosystem Foundation</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Wed, 02 Jul 2025 19:00:58 +0000</pubDate>
      <link>https://dev.to/adolfont/unlock-elixir-and-erlang-with-personalized-gpts-from-the-erlang-ecosystem-foundation-4fol</link>
      <guid>https://dev.to/adolfont/unlock-elixir-and-erlang-with-personalized-gpts-from-the-erlang-ecosystem-foundation-4fol</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/598UwaGVOk0"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Hello! As a member of the &lt;a href="https://erlef.org/wg/education" rel="noopener noreferrer"&gt;Erlang Ecosystem Foundation's Education, Training, &amp;amp; Adoption Working Group&lt;/a&gt;, I'm want to share a development. For the past few months, &lt;a href="https://www.byui.edu/directories/lee-barney" rel="noopener noreferrer"&gt;Lee Barney&lt;/a&gt;, a fellow working group member, has been creating personalized GPTs specifically designed for learning Elixir and Erlang. I'm here to walk you through how you can leverage these powerful tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://adolfont.github.io/teaching/2025/caes005/resources/" rel="noopener noreferrer"&gt;Links to the GPTs here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessing the Erlang Ecosystem Foundation GPTs
&lt;/h3&gt;

&lt;p&gt;To get started, head over to &lt;strong&gt;chat.openai.com&lt;/strong&gt; and log in. Once you're in, navigate to the left-hand sidebar. You'll see a "GPTs" option represented by four circles forming a square. Click on that, and then use the "Search GPTs" bar. Type in "&lt;strong&gt;Erlang Ecosystem Foundation&lt;/strong&gt;," and you'll find a selection of specialized GPTs.&lt;/p&gt;

&lt;p&gt;Let's explore some of them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElixirSparq&lt;/strong&gt;: If you're a beginner or looking to start your journey with the Elixir language, ElixirSparq is your go-to. You can kick off a chat and ask questions like, "How can I write 'Hello World' in Elixir?" It will provide you with an answer, likely demonstrating something similar to &lt;code&gt;IO.puts("Hello World")&lt;/code&gt; within a module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ErlangSparq&lt;/strong&gt;: Similarly, for those diving into Erlang, ErlangSparq is designed to guide you through the language fundamentals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OTPSparq&lt;/strong&gt;: OTP (Open Telecom Platform) is a crucial library used in both Elixir and Erlang. OTP Spark is your resource for understanding this powerful framework. A great way to begin is by asking, "What is OTP?"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can easily &lt;strong&gt;pin your favorite GPTs&lt;/strong&gt; to your sidebar for quick access, saving you from searching every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Additions and Learning Strategies
&lt;/h3&gt;

&lt;p&gt;We've recently added two more specialized GPTs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Erlang DiGraphs User Guide&lt;/strong&gt;: This GPT is invaluable if you're looking to learn how to use digraphs in Erlang. And remember, what you learn in Erlang regarding digraphs can often be applied in Elixir as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Erlang SOFS Users Guide&lt;/strong&gt;: The Erlang module covered by this GPT deals with sets of sets, finite sets, relations, and sets as first-class native structures. Asking the GPT "What is &lt;code&gt;sets&lt;/code&gt;?" will give you a detailed explanation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe that using AI for language learning, especially with these tailored GPTs, can be effective. However, it's crucial to remember that these are &lt;strong&gt;learning aids&lt;/strong&gt;, not substitutes for complete understanding. While you can ask questions, it's generally best to &lt;strong&gt;avoid asking the GPT to write entire programs for you&lt;/strong&gt;. Instead, focus on asking questions that help you understand concepts and guide you toward solutions. Sometimes, you might even need to prompt the system to provide hints rather than full answers.&lt;/p&gt;

&lt;p&gt;Of course, these GPTs should complement other learning methods, such as reading books or consulting official language documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Note on "Miscalculations"
&lt;/h3&gt;

&lt;p&gt;Lee Barney, who developed these GPTs, prefers the term "&lt;strong&gt;miscalculation&lt;/strong&gt;" over "hallucination" when an LLM provides incorrect information. These miscalculations can happen. For instance, a function might be described as taking two arguments when it actually requires three.&lt;/p&gt;

&lt;p&gt;This can actually be a beneficial part of the learning process. When such a miscalculation occurs, you'll have to &lt;strong&gt;verify the GPT's output&lt;/strong&gt;. This means you'll have to engage with the language directly – perhaps by testing the code in a &lt;strong&gt;Livebook&lt;/strong&gt; environment for Elixir or in the &lt;strong&gt;Erlang terminal&lt;/strong&gt;. This hands-on verification process helps solidify your understanding and teaches you how to debug and confirm information, which are essential skills for any developer.&lt;/p&gt;




&lt;h3&gt;
  
  
  Support the Erlang Ecosystem Foundation
&lt;/h3&gt;

&lt;p&gt;The development of these GPTs is just one of many initiatives by the Erlang Ecosystem Foundation. If you appreciate our work and want to support the growth and education around Elixir and Erlang, please consider becoming a sponsor or joining the foundation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sponsorship&lt;/strong&gt;: Companies can become sponsors to help us continue our mission. You can find more information on how to become a sponsor on our website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Membership&lt;/strong&gt;: Individuals can also join the foundation. We offer a &lt;strong&gt;basic membership (free)&lt;/strong&gt;, an &lt;strong&gt;annual supporting membership ($99)&lt;/strong&gt;, and a &lt;strong&gt;lifetime supporting membership ($999)&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://bit.ly/4knXHD4" rel="noopener noreferrer"&gt;Click here to join!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for your time, and we look forward to seeing you contribute to the Erlang and Elixir communities!&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>erlang</category>
    </item>
    <item>
      <title>Lean won the SIGPLAN Programming Languages Software Award 2025</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Thu, 19 Jun 2025 18:54:24 +0000</pubDate>
      <link>https://dev.to/adolfont/lean-won-the-sigplan-programming-languages-software-award-2025-3gf</link>
      <guid>https://dev.to/adolfont/lean-won-the-sigplan-programming-languages-software-award-2025-3gf</guid>
      <description>&lt;p&gt;Great news!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lean-lang.org/" rel="noopener noreferrer"&gt;Lean&lt;/a&gt; won the "SIGPLAN Programming Languages Software Award 2025". SIGPLAN is &lt;a href="https://www.sigplan.org/" rel="noopener noreferrer"&gt;The ACM Special Interest Group on Programming Languages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Congrats to &lt;a href="https://leodemoura.github.io/" rel="noopener noreferrer"&gt;Leonardo de Moura 🇧🇷&lt;/a&gt;, the &lt;a href="https://lean-fro.org/team/" rel="noopener noreferrer"&gt;Lean FRO team&lt;/a&gt; and the &lt;a href="https://leanprover-community.github.io/" rel="noopener noreferrer"&gt;Lean community&lt;/a&gt;!!!&lt;/p&gt;

&lt;h2&gt;
  
  
  About the Award
&lt;/h2&gt;

&lt;p&gt;The SIGPLAN Programming Languages Software Award is given by ACM SIGPLAN "to an institution or individual(s) to recognize the development of a software system that has had a significant impact on programming language research, implementations, and tools. The impact may be reflected in the widespread adoption of the system or its underlying concepts, by the wider programming language community either in research projects, in the open-source community, or commercially. The award includes a prize of $2,500."&lt;/p&gt;

&lt;p&gt;The committee for this year was composed of: Niki Vazou, IMDEA (co-chair); Alexandra Silva (co-chair); Andrew Myers (observer); David Grove, IBM Research (SPLASH); Alastair Donaldson, Imperial (PLDI); Xavier Leroy, Inria (ICFP); and Amal Ahmed, Northeastern U (POPL).&lt;/p&gt;

&lt;p&gt;The award was presented to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gabriel Ebner&lt;/li&gt;
&lt;li&gt;Soonho Kong&lt;/li&gt;
&lt;li&gt;Leo de Moura&lt;/li&gt;
&lt;li&gt;Sebastian Ullrich&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The award slide reads:&lt;/p&gt;

&lt;p&gt;"Citation: The Lean theorem prover is a remarkable software artifact. Grounded on strong theoretical and engineering foundations, Lean has had and continues to have a broad impact on industrial practice and scientific research. In particular, the Lean project has already had a significant impact on mathematics, hardware and software verification, and AI. It has gained substantial traction in the mathematics community with a user-developed library, Mathlib, that has more than 1.8M lines of code. The verification of foundational results at the request of Fields Medalist Peter Scholze and the verification of the Polynomial Freiman–Ruzsa Conjecture led by Fields Medalist Terence Tao have earned the system widespread recognition. It is clear that formal methods based on Lean will play a central role in mathematics in the years to come. Lean is also used in important verification projects in industry, including the verification of the Cedar access control language at AWS, the verification of the SampCert sampler for differential privacy at AWS, and blockchain verification projects at companies like StarkWare and Nethermind. Finally, with the success of projects like DeepMind’s AlphaProof and the adoption of Lean by startup companies like Harmonic, Lean has become the de facto choice for AI-based systems of mathematical reasoning."&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://pldi25.sigplan.org/" rel="noopener noreferrer"&gt;PLDI'25&lt;/a&gt; Award Ceremony
&lt;/h2&gt;

&lt;p&gt;You can watch the award being presented at &lt;a href="https://www.youtube.com/live/WB-PtB5bi98?t=33776s" rel="noopener noreferrer"&gt;9:22:58 in the "PLDI'25 Award Ceremony (June 19th)" livestream&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WB-PtB5bi98?start=33776"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5bs12vi159vynqu2rvu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5bs12vi159vynqu2rvu.png" alt="Lean people receiving the award" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8h2ifi0y2xdkha2bzm25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8h2ifi0y2xdkha2bzm25.png" alt="Slide of the award - text above" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Leonardo de Moura's talk at PLDI
&lt;/h2&gt;

&lt;p&gt;Before the award ceremony, Lean's Chief Architect Leonardo de Moura gave a keynote talk at the 46th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2025) in Seoul. His talk, titled "Lean: Machine-Checked Mathematics and Verified Programming, Past and Future," begins at &lt;a href="https://www.youtube.com/live/WB-PtB5bi98?si=GNrzmaJA7iqKQKu6&amp;amp;t=3331" rel="noopener noreferrer"&gt;55:31 of the livestream&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WB-PtB5bi98?start=3331"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Previous Winners
&lt;/h2&gt;

&lt;p&gt;Who has won &lt;a href="https://www.sigplan.org/Awards/Software/" rel="noopener noreferrer"&gt;this award&lt;/a&gt; before?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;OCaml&lt;/li&gt;
&lt;li&gt;Scala&lt;/li&gt;
&lt;li&gt;Racket&lt;/li&gt;
&lt;li&gt;GCC&lt;/li&gt;
&lt;li&gt;Coq&lt;/li&gt;
&lt;li&gt;Glasgow Haskell Compiler&lt;/li&gt;
&lt;li&gt;LLVM Compiler Infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And Leo had already won it before with the &lt;a href="https://en.wikipedia.org/wiki/Z3_Theorem_Prover" rel="noopener noreferrer"&gt;Z3 theorem prover&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvvpqd58gbobmbzgbwig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvvpqd58gbobmbzgbwig.png" alt="Leonardo de Moura" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Leonardo de Moura interviews
&lt;/h2&gt;

&lt;h3&gt;
  
  
  In English
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Type Theory for All, by Pedro Abreu
&lt;/h4&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AoFSxcPL2TY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Building Better Systems
&lt;/h4&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5wRhAV-2NUU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  In Portuguese
&lt;/h3&gt;

&lt;p&gt;I have interviewed Leonardo twice.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fronteiras da Engenharia de Software
&lt;/h4&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fG-au9y4RW0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Professor Adolfo Neto
&lt;/h4&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bwKFcLaeD1A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Lean introduction talk
&lt;/h2&gt;

&lt;p&gt;As part of the &lt;em&gt;Esquenta &lt;a href="https://se4fp.github.io/2025/" rel="noopener noreferrer"&gt;SE4FP&lt;/a&gt;&lt;/em&gt; series, there will be an online talk in Portuguese by Sofia Rodrigues on the Lean programming language and theorem prover. Sofia is a Research Software Engineer at Lean FRO. The talk takes place on Wednesday, June 25, 2025, at 4:00 PM (UTC-3). The registration form is available at: &lt;a href="https://forms.gle/gXQyGLeMKmDHfhSb8" rel="noopener noreferrer"&gt;https://forms.gle/gXQyGLeMKmDHfhSb8&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Bluesky post
&lt;/h2&gt;


&lt;blockquote&gt;
&lt;p&gt;"LEAN won the award for programming language software :)" at PLDI'25, told me Sofia Rodrigues!!!&lt;br&gt;
@lean-lang.org #LeanLang #LeanProver #Lean4&lt;/p&gt;


&lt;p&gt;🥳🎉🇧🇷🎊🍺&lt;br&gt;&lt;br&gt;&lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g/post/3lrxzafn2oc22?ref_src=embed" rel="noopener noreferrer"&gt;[image or embed]&lt;/a&gt;&lt;/p&gt;— Adolfo Neto (&lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g?ref_src=embed" rel="noopener noreferrer"&gt;@adolfont.github.io&lt;/a&gt;) &lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g/post/3lrxzafn2oc22?ref_src=embed" rel="noopener noreferrer"&gt;June 19, 2025 at 2:08 PM&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt;

</description>
      <category>lean</category>
      <category>leanlang</category>
      <category>leanprover</category>
    </item>
    <item>
      <title>The Elixir Pipe Operator</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Sun, 15 Jun 2025 17:54:09 +0000</pubDate>
      <link>https://dev.to/adolfont/the-elixir-pipe-operator-38fa</link>
      <guid>https://dev.to/adolfont/the-elixir-pipe-operator-38fa</guid>
      <description>&lt;p&gt;The Elixir pipe operator (&lt;code&gt;|&amp;gt;&lt;/code&gt;) is beautiful.&lt;/p&gt;

&lt;p&gt;How do you use it? Imagine you have a data structure and two or more functions that transform it in sequence.&lt;/p&gt;

&lt;p&gt;Suppose you have a &lt;code&gt;Numbers&lt;/code&gt; module in a file called &lt;code&gt;numbers.ex&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="k"&gt;defmodule&lt;/span&gt; &lt;span class="no"&gt;Numbers&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="n"&gt;filter_even_numbers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="no"&gt;Enum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="no"&gt;Enum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, open an Interactive Elixir session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ iex numbers.ex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if you copy and paste this into your &lt;code&gt;iex&lt;/code&gt; session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Numbers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter_even_numbers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Numbers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some say the pipe operator came from F#. I once asked José Valim, and he said he doesn't remember exactly where the idea came from. But it’s true that F# had pipe operators—more than one kind—before Elixir.&lt;/p&gt;

&lt;p&gt;Want to go deeper into the pipe operator? Check out this excellent blog post by João Paulo Abreu: &lt;a href="https://dev.to/abreujp/learning-elixir-pipe-operator-58a8"&gt;Learning Elixir: Pipe Operator&lt;/a&gt;. Don’t miss the “Further Reading” section.&lt;/p&gt;

&lt;p&gt;And if you're looking for a course on functional programming, check the post below:&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;My "Introduction to Functional Programming" course will be fully remote. &lt;br&gt;
Classes are expected to begin in early August. &lt;br&gt;
Mondays, 15h50-18h40 (UTC-3).&lt;/p&gt;

&lt;p&gt;Interested in joining? Please fill out the form to express your interest. You will be notified when enrollment opens.&lt;/p&gt;


&lt;p&gt;bit.ly/IFP_2025&lt;br&gt;&lt;br&gt;&lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g/post/3lriemeo6zc22?ref_src=embed" rel="noopener noreferrer"&gt;[image or embed]&lt;/a&gt;&lt;/p&gt;— Adolfo Neto (&lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g?ref_src=embed" rel="noopener noreferrer"&gt;@adolfont.github.io&lt;/a&gt;) &lt;a href="https://bsky.app/profile/did:plc:fodyg35g25joa5rpplt4y43g/post/3lriemeo6zc22?ref_src=embed" rel="noopener noreferrer"&gt;June 13, 2025 at 8:49 AM&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt;

</description>
      <category>elixir</category>
      <category>functional</category>
    </item>
    <item>
      <title>Who's Still Podcasting About Elixir? (May 2025 Edition)</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Fri, 23 May 2025 13:54:11 +0000</pubDate>
      <link>https://dev.to/adolfont/active-elixir-podcasts-on-may-2025-1kcl</link>
      <guid>https://dev.to/adolfont/active-elixir-podcasts-on-may-2025-1kcl</guid>
      <description>&lt;p&gt;I am writing this post on May 23, 2025.&lt;/p&gt;

&lt;p&gt;First, let me define what I mean by an &lt;em&gt;active podcast&lt;/em&gt;: one that has released at least one episode in the past 90 days.&lt;/p&gt;

&lt;p&gt;Second, by an &lt;em&gt;Elixir podcast&lt;/em&gt;, I mean a podcast that is related to the Elixir programming language or the BEAM ecosystem, and that features many episodes focused on Elixir.&lt;/p&gt;

&lt;p&gt;As of today, to the best of my knowledge, there are four active Elixir podcasts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/4jh0YU2" rel="noopener noreferrer"&gt;Thinking Elixir&lt;/a&gt;. The latest episode was "254 - Lua Scripting and Tidewave on Zed", published on May 20, 2025.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/4jawDGJ" rel="noopener noreferrer"&gt;Elixir Mentor&lt;/a&gt;. Latest episode: "49 - Elliot Clark in Simplifying Cloud Infrastructure", published on May 17, 2025.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/4mBAIXF" rel="noopener noreferrer"&gt;Elixir em Foco&lt;/a&gt; &lt;em&gt;(in Portuguese)&lt;/em&gt; — Latest episode: &lt;em&gt;"50 - Refactorex: Refatoração em Elixir, com Gabriel Pereira"&lt;/em&gt;, published on May 7, 2025.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/3YZijd1" rel="noopener noreferrer"&gt;BEAM Radio&lt;/a&gt;.  Latest episode: &lt;em&gt;"90 - Josh Price: Ash and the Greater Elixir Community"&lt;/em&gt;, published on April 22, 2025.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/dp8zQUadDgQ"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Do you know of any other Elixir podcasts that have released episodes in the past three months?&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>beam</category>
      <category>podcast</category>
    </item>
    <item>
      <title>The original motivation for creating Lean was software verification</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Sun, 18 May 2025 13:53:19 +0000</pubDate>
      <link>https://dev.to/adolfont/the-original-motivation-for-creating-lean-was-software-verification-2266</link>
      <guid>https://dev.to/adolfont/the-original-motivation-for-creating-lean-was-software-verification-2266</guid>
      <description>&lt;p&gt;"The main motivation, the original motivation for (creating) Lean was in software verification, right? I mean, Z3 was very popular at bug finding, for bug finding at Microsoft, was very influential there. But (for) Lean the goal was, can we make the same, have the same success of software verification? &lt;/p&gt;

&lt;p&gt;We went to a very strange path. I mean, having impact in mathematics that we never dreamt of. &lt;/p&gt;

&lt;p&gt;But the goal in both cases is like we, both in software mathematics and in AI, today rely on manual review, partial testing. A mistake in a theorem can be catastrophic, invalidating the whole result. The same thing (happens) for a critical piece of software, right? And one thing I see all the time, people fearing to make a change a piece of software because they fear by making the change they may be introducing a bug, especially if it's a critical piece of software."&lt;/p&gt;

&lt;p&gt;Watch more in the video below and in the full talk at the following link:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/yk5T-sZDPkc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;From &lt;a href="https://podcasts.ox.ac.uk/formalizing-future-leans-impact-mathematics-programming-and-ai?video=1" rel="noopener noreferrer"&gt;"Leo De Moura: Formalizing the Future: Lean’s Impact on Mathematics, Programming, and AI"&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
      <category>lean</category>
      <category>programming</category>
      <category>verification</category>
    </item>
    <item>
      <title>Next Fronteiras Interview: Daniel Feitosa on Technical Debt Management</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Mon, 05 May 2025 12:36:28 +0000</pubDate>
      <link>https://dev.to/adolfont/next-fronteiras-interview-daniel-feitosa-on-technical-debt-management-1el1</link>
      <guid>https://dev.to/adolfont/next-fronteiras-interview-daniel-feitosa-on-technical-debt-management-1el1</guid>
      <description>&lt;p&gt;Next week, on May 12th, 2025, we are going to interview &lt;a href="https://feitosa-daniel.github.io/" rel="noopener noreferrer"&gt;Daniel Feitosa&lt;/a&gt;, a Brazilian Software Engineering professor at the Faculty of Science and Engineering, University of Groningen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzmaw9cviivu2hgi4zqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzmaw9cviivu2hgi4zqb.png" alt="Daniel Feitosa's face" width="720" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I write "we," I mean the &lt;a href="https://fronteirases.github.io/en/" rel="noopener noreferrer"&gt;Frontiers of Software Engineering podcast&lt;/a&gt;, which is in Portuguese. I would love to have something like it in English, but as far as I know, there is no podcast that regularly interviews Software Engineering professors and researchers to discuss their work and publications.&lt;/p&gt;

&lt;p&gt;We always ask our interviewees what they would like to talk about, and Daniel chose &lt;em&gt;Technical Debt Management&lt;/em&gt;. It's a very important topic in practice for software engineering professionals, isn't it?&lt;/p&gt;

&lt;p&gt;We also ask our interviewees to share 2 to 4 publications, and these are the ones Daniel sent us:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;C. Zhong, D. Feitosa, P. Avgeriou, H. Huang, Y. Li, H. Zhang. &lt;em&gt;PairSmell: A Novel Perspective Inspecting Software Modular Structure&lt;/em&gt;. In &lt;em&gt;Proceedings of the IEEE/ACM 47th International Conference on Software Engineering (ICSE '25)&lt;/em&gt;, 2025. &lt;strong&gt;Distinguished Paper Award&lt;/strong&gt;. &lt;a href="https://arxiv.org/abs/2411.01012" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2411.01012&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;J.P. Biazotto, D. Feitosa, P. Avgeriou, E.Y. Nakagawa. &lt;em&gt;Automating Technical Debt Management: Insights from Practitioner Discussions in Stack Exchange&lt;/em&gt;. In &lt;em&gt;Proceedings of the 8th ACM/IEEE International Conference on Technical Debt (TechDebt '25)&lt;/em&gt;. &lt;/li&gt;
&lt;li&gt;J.P. Biazotto, D. Feitosa, P. Avgeriou, E.Y. Nakagawa. &lt;em&gt;Technical Debt Management Automation: State of the Art and Future Perspectives&lt;/em&gt;. &lt;em&gt;Information and Software Technology&lt;/em&gt;, 167:107375, 2024. &lt;a href="https://doi.org/10.1016/j.infsof.2023.107375" rel="noopener noreferrer"&gt;https://doi.org/10.1016/j.infsof.2023.107375&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;J. Tan, D. Feitosa, P. Avgeriou. &lt;em&gt;The Lifecycle of Technical Debt that Manifests in Both Source Code and Issue Trackers&lt;/em&gt;. &lt;em&gt;Information and Software Technology&lt;/em&gt;, 159:107216, 2023. &lt;a href="https://doi.org/10.1016/j.infsof.2023.107216" rel="noopener noreferrer"&gt;https://doi.org/10.1016/j.infsof.2023.107216&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to watch or listen to our episodes, check out &lt;a href="https://www.youtube.com/@fronteirases" rel="noopener noreferrer"&gt;https://www.youtube.com/@fronteirases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On YouTube, you can enable automatic translations to view subtitles in English.&lt;/p&gt;

&lt;p&gt;Let me know if you'd like a version adapted for social media or a blog format.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>computerscience</category>
      <category>research</category>
    </item>
    <item>
      <title>Tidewave: Connecting Web Apps to AI-Powered Development</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Wed, 30 Apr 2025 11:01:57 +0000</pubDate>
      <link>https://dev.to/adolfont/tidewave-connecting-web-apps-to-ai-powered-development-248h</link>
      <guid>https://dev.to/adolfont/tidewave-connecting-web-apps-to-ai-powered-development-248h</guid>
      <description>&lt;p&gt;José Valim recently introduced &lt;a href="https://bit.ly/4lTdhbR" rel="noopener noreferrer"&gt;&lt;strong&gt;Tidewave&lt;/strong&gt;&lt;/a&gt;, a new tool designed to connect web applications with editors and AI agents such as Claude, Zed, Cursor, Windsurf, and others.&lt;/p&gt;

&lt;p&gt;Tidewave works by embedding a &lt;strong&gt;Model Context Protocol server&lt;/strong&gt; into a running web application. This allows development tools—not just to analyze code statically—but to &lt;strong&gt;observe and introspect applications at runtime&lt;/strong&gt;, enabling much smarter and more helpful interactions during development.&lt;/p&gt;

&lt;p&gt;The project is &lt;strong&gt;open source&lt;/strong&gt; and currently supports &lt;strong&gt;Phoenix&lt;/strong&gt; and &lt;strong&gt;Rails&lt;/strong&gt;, with additional frameworks planned for the future.&lt;/p&gt;




&lt;h3&gt;
  
  
  A Live Demo: Adding Pricing Plans with AI
&lt;/h3&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1917296901268910405-183" src="https://platform.twitter.com/embed/Tweet.html?id=1917296901268910405"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1917296901268910405-183');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1917296901268910405&amp;amp;theme=dark"
  }



&lt;br&gt;
In a demonstration, Valim showcased Tidewave in action using a freshly generated Phoenix application. After setting up basic authentication and a settings page, he outlined a common task for SaaS applications: adding &lt;strong&gt;pricing plans&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To accomplish this, he used &lt;strong&gt;Claude Desktop&lt;/strong&gt;—a standard AI interface. While Claude itself isn’t a dedicated coding agent, when paired with Tidewave, it effectively becomes one.&lt;/p&gt;

&lt;p&gt;The prompt given to the AI was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I'm building a SaaS. Please add a price selector with common options to the live view page I'm currently looking at. Once you're done with the changes, run &lt;code&gt;mix compile&lt;/code&gt; in the shell to make sure everything is working, and fix it if it's not.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks to Tidewave, the AI was able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;List project files,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detect which page the user was viewing (&lt;code&gt;DemoWeb.UserLive.Settings&lt;/code&gt;),&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Retrieve contextual code information,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit the correct files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when errors were introduced (like invalid syntax), Tidewave enabled the AI to compile the project, detect issues, and attempt automatic fixes. Eventually, the application reloaded with a &lt;strong&gt;functioning pricing selector&lt;/strong&gt;—a solid foundation for subscription plan logic.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Takeaway
&lt;/h3&gt;

&lt;p&gt;This demonstration wasn’t just about automating code edits—it showed that with Tidewave, even general-purpose AI tools like Claude can behave like &lt;strong&gt;intelligent coding assistants&lt;/strong&gt; when given runtime context.&lt;/p&gt;

&lt;p&gt;The key message: whether using Claude, Cursor, or other tools, &lt;strong&gt;Tidewave enhances their capabilities by exposing real-time insight into your application&lt;/strong&gt;, enabling faster, smarter development.&lt;/p&gt;

&lt;p&gt;The demo closed with a reminder: what was shown was just the beginning. Developers can continue using the AI to expand features—like integrating Stripe or connecting to a database—or take over from where the AI left off.&lt;/p&gt;

&lt;p&gt;Tidewave is available today, open source, and growing. It's a glimpse into the future of software development—where AI and runtime context work hand-in-hand.&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>phoenix</category>
      <category>ai</category>
    </item>
    <item>
      <title>Do you use LLMs? And some podcast recommendations</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Fri, 04 Apr 2025 16:30:06 +0000</pubDate>
      <link>https://dev.to/adolfont/do-you-use-llms-and-some-podcast-recommendations-7l8</link>
      <guid>https://dev.to/adolfont/do-you-use-llms-and-some-podcast-recommendations-7l8</guid>
      <description>&lt;p&gt;Right now, I am using LLMs to (a few examples):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Translation&lt;/li&gt;
&lt;li&gt;Given the transcript and/or script of an episode of my podcasts, generate a summary (show notes) for the episode&lt;/li&gt;
&lt;li&gt;Generate fluffy or bureaucratic text, filler text, based on a few main points&lt;/li&gt;
&lt;li&gt;Give me the main points of a text—but from a text I don’t need to read. This is not a replacement for a full reading. If the LLM didn’t exist, I simply wouldn’t read it.&lt;/li&gt;
&lt;li&gt;Ask questions in the classroom (I am a professor) just to see a summary of a topic and, perhaps, find some information I had forgotten—or, even better, a hallucination.&lt;/li&gt;
&lt;li&gt;Manipulations with copied texts from web pages. For example, suppose I copy something from the internet, and it comes with a lot of clutter. I ask the LLM to remove the clutter.&lt;/li&gt;
&lt;li&gt;Transcribe text from images to use as ALT on &lt;a href="https://bsky.app/profile/adolfont.github.io" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;. I mostly use &lt;a href="https://chat.mistral.ai/chat" rel="noopener noreferrer"&gt;Mistral Le Chat&lt;/a&gt; for this.&lt;/li&gt;
&lt;li&gt;Generate programming exercises.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more...&lt;/p&gt;

&lt;p&gt;I am NOT using them to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate images (unless as a capability test)&lt;/li&gt;
&lt;li&gt;write blog posts for me (I did it a few times and the results were not great)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Podcast Suggestions
&lt;/h2&gt;

&lt;p&gt;If you're using LLMs, I recommend listening to the following podcasts:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.betteroffline.com/" rel="noopener noreferrer"&gt;Better Offline, by Ed Zitron&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://systemcrash.info/" rel="noopener noreferrer"&gt;System Crash, by Paris Marx and Brian Merchant&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've listened to a few episodes of both, and they're excellent.  &lt;/p&gt;

&lt;p&gt;I know there's another related podcast, but I haven't listened to any of its episodes yet:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.dair-institute.org/maiht3k/" rel="noopener noreferrer"&gt;Mystery AI Hype Theater 3000&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of its hosts is Emily M. Bender, the first author of the well-known paper:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://doi.org/10.1145/3442188.3445922" rel="noopener noreferrer"&gt;On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? 🦜&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;And you? What are you using LLMs for? What are you not using them for?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Unsafe Impedance: Safe Languages and Safe by Design Software, by Lee Barney and Adolfo Neto</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Sat, 02 Nov 2024 15:25:45 +0000</pubDate>
      <link>https://dev.to/adolfont/unsafe-impedance-safe-languages-and-safe-by-design-software-by-lee-barney-and-adolfo-neto-okh</link>
      <guid>https://dev.to/adolfont/unsafe-impedance-safe-languages-and-safe-by-design-software-by-lee-barney-and-adolfo-neto-okh</guid>
      <description>&lt;h1&gt;
  
  
  Arxiv++ AI-Generated Summary
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://arxiv.org/abs/2407.13046" rel="noopener noreferrer"&gt;Arxiv link for Unsafe Impedance: Safe Languages and Safe by Design Software, by Lee Barney and Adolfo Neto&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem Statement
&lt;/h2&gt;

&lt;p&gt;This paper addresses the insufficiency of merely declaring programming languages as "memory safe" for achieving secure software. The paper argues that while such declarations are necessary, they fail to address the ease with which unsafe code can be written and integrated, leading to vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main Claims
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The concept of "unsafe impedance" is introduced as a novel perspective for evaluating language safety in the context of software security. Unsafe impedance refers to the difficulty programmers experience when complying with language restrictions on writing unsafe code.&lt;/li&gt;
&lt;li&gt;A "Secure by Default" language is defined as one that protects against the production of all Common Vulnerability and Exposures (CVEs), particularly memory-related CVEs.&lt;/li&gt;
&lt;li&gt;While languages like C#, Go, Java, Python, Rust, and Swift are declared memory safe, they all allow unsafe code to be written or loaded from libraries, making them "unsecure by default."&lt;/li&gt;
&lt;li&gt;Erlang and Elixir, two BEAM languages, are considered "secure by default" due to their functional nature, immutability, and lack of pointer manipulation capabilities. However, they also allow the integration of "Native Implemented Functions" (NIFs) that can introduce unsafe code.&lt;/li&gt;
&lt;li&gt;The paper proposes an "Unsafe Acceptance Process" (UAP) as a business process to enhance software security. UAPs impose a significant barrier to the loading and use of potentially unsafe code, aiming to increase unsafe impedance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Methodology
&lt;/h2&gt;

&lt;p&gt;The paper analyzes nine commonly used programming languages (C#, Go, Java, Python, Rust, Swift, Erlang, Elixir, and C/C++) by providing examples of how unsafe code can be written or loaded in each language. The authors evaluate the level of unsafe impedance present in each language based on the syntactical and procedural hurdles required to write or use unsafe code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The study finds that none of the languages declared memory safe in cybersecurity documents are truly "secure by default," as they allow unsafe code to be incorporated.&lt;/li&gt;
&lt;li&gt;Erlang and Elixir are categorized as "secure by default" languages due to their functional nature and lack of native unsafe code capabilities. However, the authors highlight the potential for introducing unsafe code through NIFs, emphasizing the need for strong security measures.&lt;/li&gt;
&lt;li&gt;The paper proposes an "Unsafe Acceptance Process" (UAP) as a strategy for organizations to mitigate risks associated with unsafe code, especially in languages like Erlang and Elixir, which are susceptible to vulnerabilities introduced by NIFs.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Behind the Code: Highlights from Elixir Curitiba 2024 and Future Visions</title>
      <dc:creator>Adolfo Neto</dc:creator>
      <pubDate>Thu, 31 Oct 2024 12:09:23 +0000</pubDate>
      <link>https://dev.to/adolfont/behind-the-code-highlights-from-elixir-curitiba-2024-and-future-visions-oag</link>
      <guid>https://dev.to/adolfont/behind-the-code-highlights-from-elixir-curitiba-2024-and-future-visions-oag</guid>
      <description>&lt;p&gt;Organizing and participating in &lt;a href="https://elixircuritiba.github.io/" rel="noopener noreferrer"&gt;Elixir Curitiba 2024&lt;/a&gt; was an enriching experience, and I’d like to share some behind-the-scenes details about the event. From the start, I explored various venue options but ultimately chose &lt;a href="https://www.triohq.com/en" rel="noopener noreferrer"&gt;Trio Pagamentos&lt;/a&gt; for its logistical convenience. Unlike larger events like Code BEAM or Elixir Conf, I opted to keep things simple and free, which I see as a unique feature for our community. For future editions, I’m considering gathering more participant information to streamline the registration process.&lt;/p&gt;

&lt;p&gt;As for organization and outreach, we had the Elixir CWB community on Telegram, Elixir Curitiba on WhatsApp, and a basic website on GitHub. Trio Pagamentos, the event’s venue, and the organizing team were essential in making everything happen. The program covered a variety of topics, from women in STEM to using Elixir. Highlights included Larissa Behrens Soares’s talk on competitive programming focused on women, David Alencar’s session on Elixir development, Julia Mathias’s presentation on , and Kelvin Stinghen’s engaging performance with live coding and juggling.&lt;/p&gt;

&lt;p&gt;We had a few last-minute schedule adjustments, such as moving David’s talk up to accommodate an unplanned break. Though we didn’t officially announce a coffee break, attendees appreciated it, and we had semi-professional photographer Gustavo Arcoverde capturing moments throughout. Julia Mathias’s participation, representing Turn.io, was another highlight, and her presence significantly contributed to the event’s success.&lt;/p&gt;

&lt;p&gt;One of the most memorable moments was Kelvin’s juggling performance, drawing an analogy between the balls’ positions and running processes—perfectly capturing the event’s essence. Julia’s presentation also stood out; she works remotely from Rio de Janeiro for a South African company, setting up WhatsApp chat systems.&lt;/p&gt;

&lt;p&gt;We wrapped up with a final coffee break and a raffle for a programming book on Lua, reinforcing the spirit of learning and camaraderie that defined the event. Looking ahead, I invite everyone to consider joining Elixir Curitiba 2025 and collaborating in the organization, keeping the event free and accessible. I’m also planning an Elixir event in Maceió and am open to new ideas to strengthen our community.&lt;/p&gt;

&lt;p&gt;Video in Portuguese: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9biYPCmN1pU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
