
HTTP Requests in Elixir vs. JavaScript with Yordis Prieto & Stephen Chudleigh
10/26/23 • 50 min
In today’s episode, Sundi and Owen are joined by Yordis Prieto and Stephen Chudleigh to compare notes on HTTP requests in Elixir vs. Ruby, JavaScript, Go, and Rust. They cover common pain points when working with APIs, best practices, and lessons that can be learned from other programming languages.
Yordis maintains Elixir's popular Tesla HTTP client library and shares insights from building APIs and maintaining open-source projects. Stephen has experience with Rails and JavaScript, and now works primarily in Elixir. They offer perspectives on testing HTTP requests and working with different libraries.
While Elixir has matured, there is room for improvement - especially around richer struct parsing from HTTP responses. The discussion highlights ongoing efforts to improve the developer experience for HTTP clients in Elixir and other ecosystems.
Topics Discussed in this Episode
- HTTP is a protocol - but each language has different implementation methods
- Tesla represents requests as middleware that can be modified before sending
- Testing HTTP requests can be a challenge due to dependence on outside systems
- GraphQL, OpenAPI, and JSON API provide clear request/response formats
- Elixir could improve richer parsing from HTTP into structs
- Focus on contribution ergonomics lowers barriers for new participants
- Maintainers emphasize making contributions easy via templates and clear documentation
- APIs drive adoption of standards for client/server contracts
- They discuss GraphQL, JSON API, OpenAPI schemas, and other standards that provide clear request/response formats
- TypeScript brings types to APIs and helps to validate responses
- Yordis notes that Go and Rust make requests simple via tags for mapping JSON to structs
- Language collaboration shares strengths from different ecosystems and inspires new libraries and tools for improving the programming experience
Links Mentioned
Elixir-Tesla Library: https://github.com/elixir-tesla/tesla
Yordis on Github: https://github.com/yordis
Yordis on Twitter: https://twitter.com/alchemist_ubi
Yordis on LinkedIn: https://www.linkedin.com/in/yordisprieto/
Yordis on YouTube: https://www.youtube.com/@alchemistubi
Stephen on Twitter: https://twitter.com/stepchud
Stephen's projects on consciousness: https://harmonicdevelopment.us
Owen suggests: Http.cat
HTTParty: https://github.com/jnunemaker/httparty
Guardian Library: https://github.com/ueberauth/guardian
Axios: https://axios-http.com/
Straw Hat Fetcher: https://github.com/straw-hat-team/nodejs-monorepo/tree/master/packages/%40straw-hat/fetcher
Elixir Tesla Wiki: https://github.com/elixir-tesla/tesla/wiki
HTTPoison: https://github.com/edgurgel/httpoison
Tesla Testing: https://hexdocs.pm/tesla/readme.html#testing
Tesla Mock: https://hexdocs.pm/tesla/Tesla.Mock.html
Finch: https://hex.pm/packages/finch
Mojito: https://github.com/appcues/mojito
Erlang Libraries and Frameworks Working Group: https://github.com/erlef/libs-and-frameworks/ and https://erlef.org/wg/libs-and-frameworks
Special Guests: Stephen Chudleigh and Yordis Prieto.
In today’s episode, Sundi and Owen are joined by Yordis Prieto and Stephen Chudleigh to compare notes on HTTP requests in Elixir vs. Ruby, JavaScript, Go, and Rust. They cover common pain points when working with APIs, best practices, and lessons that can be learned from other programming languages.
Yordis maintains Elixir's popular Tesla HTTP client library and shares insights from building APIs and maintaining open-source projects. Stephen has experience with Rails and JavaScript, and now works primarily in Elixir. They offer perspectives on testing HTTP requests and working with different libraries.
While Elixir has matured, there is room for improvement - especially around richer struct parsing from HTTP responses. The discussion highlights ongoing efforts to improve the developer experience for HTTP clients in Elixir and other ecosystems.
Topics Discussed in this Episode
- HTTP is a protocol - but each language has different implementation methods
- Tesla represents requests as middleware that can be modified before sending
- Testing HTTP requests can be a challenge due to dependence on outside systems
- GraphQL, OpenAPI, and JSON API provide clear request/response formats
- Elixir could improve richer parsing from HTTP into structs
- Focus on contribution ergonomics lowers barriers for new participants
- Maintainers emphasize making contributions easy via templates and clear documentation
- APIs drive adoption of standards for client/server contracts
- They discuss GraphQL, JSON API, OpenAPI schemas, and other standards that provide clear request/response formats
- TypeScript brings types to APIs and helps to validate responses
- Yordis notes that Go and Rust make requests simple via tags for mapping JSON to structs
- Language collaboration shares strengths from different ecosystems and inspires new libraries and tools for improving the programming experience
Links Mentioned
Elixir-Tesla Library: https://github.com/elixir-tesla/tesla
Yordis on Github: https://github.com/yordis
Yordis on Twitter: https://twitter.com/alchemist_ubi
Yordis on LinkedIn: https://www.linkedin.com/in/yordisprieto/
Yordis on YouTube: https://www.youtube.com/@alchemistubi
Stephen on Twitter: https://twitter.com/stepchud
Stephen's projects on consciousness: https://harmonicdevelopment.us
Owen suggests: Http.cat
HTTParty: https://github.com/jnunemaker/httparty
Guardian Library: https://github.com/ueberauth/guardian
Axios: https://axios-http.com/
Straw Hat Fetcher: https://github.com/straw-hat-team/nodejs-monorepo/tree/master/packages/%40straw-hat/fetcher
Elixir Tesla Wiki: https://github.com/elixir-tesla/tesla/wiki
HTTPoison: https://github.com/edgurgel/httpoison
Tesla Testing: https://hexdocs.pm/tesla/readme.html#testing
Tesla Mock: https://hexdocs.pm/tesla/Tesla.Mock.html
Finch: https://hex.pm/packages/finch
Mojito: https://github.com/appcues/mojito
Erlang Libraries and Frameworks Working Group: https://github.com/erlef/libs-and-frameworks/ and https://erlef.org/wg/libs-and-frameworks
Special Guests: Stephen Chudleigh and Yordis Prieto.
Previous Episode

Season 11 Kickoff: The Hosts Discuss Branching Out from Elixir to Compare Notes
Hosts Dan Ivovich, Owen Bickford, and Sundi Myint kick off the 11th season of the Elixir Wizards podcast. This season’s theme is “Branching Out from Elixir,” which expands the conversation to compare notes with experts from other communities; they discuss their experiences with other languages like JavaScript, PHP, Python, Ruby, C#, Go, and Dart before and after learning Elixir.
This season's conversations will illuminate how problems are solved in different languages vs. Elixir; upcoming episode topics teased include education, data processing, deployment strategies, and garbage collection; the hosts express excitement for conversations analyzing similarities and differences between communities.
Topics Discussed in this Episode
- Season 11 branches out from Elixir to compare notes with other programming communities
- Sundi, Owen, and Dan introduce the season theme and their interest in exploring these conversations
- The hosts compare their experiences with PHP, JavaScript, Python, Ruby, C#, Go, Dart and Elixir
- The Wizards compare and contrast differences in their personal experience building similar things with different languages
- Dan dreams in Ruby and uses it for quick prototypes
- Comparing problem-solving approaches across languages will reframe perspectives
- Upcoming episodes explore data processing workflows, machine learning, and game development
- Pop Quiz: Who's that Pokémon... or language, or framework?
Links Mentioned
https://smartlogic.io/
https://codepen.io/
https://i.redd.it/0lg7979qtr511.jpg
Next Episode

Learning a Language: Elixir vs. JavaScript with Yohana Tesfazgi & Wes Bos
This week, the Elixir Wizards are joined by Yohana Tesfazgi and Wes Bos to compare notes on the experience of learning Elixir vs. JavaScript as your first programming language. Yohana recently completed an Elixir apprenticeship, and Wes Bos is a renowned JavaScript educator with popular courses for beginner software developers.
They discuss a variety of media and resources and how people with different learning styles benefit from video courses, articles, or more hands-on projects. They also discuss the current atmosphere for those looking to transition into an engineering career and how to stick out among the crowd when new to the scene.
Topics Discussed in this Episode
- Pros and cons of learning Elixir as your first programming language
- Materials and resources for beginners to JavaScript and Elixir
- Projects and methods for learning Elixir with no prior knowledge
- Recommendations for sharpening and showcasing skills
- How to become a standout candidate for potential employers
- Soft skills like communication translate well from other careers to programming work
- Learning subsequent languages becomes more intuitive once you learn your first
- How to decide which library to use for a project
- How to build an online presence and why it’s important
- Open-source contributions are a way to learn from the community
- Ship early and often, just deploying a default Phoenix app teaches deployment skills
- Attend local meetups and conferences for mentoring and potential job opportunities
Links Mentioned
https://syntax.fm/
https://fly.io/
https://elixirschool.com/en
Syntax.fm: Supper Club × How To Get Your First Dev Job With Stuart Bloxham
Quinnwilton.com
https://github.com/pallets/flask
https://wesbos.com/courses
https://beginnerjavascript.com/
Free course: https://javascript30.com/
https://pragmaticstudio.com/
https://elixircasts.io/
https://grox.io/
LiveView Mastery YouTube Channel
Contact Yohana: [email protected]
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/elixir-wizards-489891/http-requests-in-elixir-vs-javascript-with-yordis-prieto-and-stephen-c-65124314"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to http requests in elixir vs. javascript with yordis prieto & stephen chudleigh on goodpods" style="width: 225px" /> </a>
Copy