<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Jorge Vásquez]]></title><description><![CDATA[I love Functional Programming. I'm convinced it can help to make better software, and I'm excited about languages and libraries that are making FP more accessib]]></description><link>https://jorgevasquez.blog</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 12:01:46 GMT</lastBuildDate><atom:link href="https://jorgevasquez.blog/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[New article: How to implement a REST API in Scala 3 with ZIO HTTP, Magnum and Iron]]></title><description><![CDATA[A new article I've recently written has been published in the Ziverge blog! You can read it here, I hope you find it useful.]]></description><link>https://jorgevasquez.blog/new-article-how-to-implement-a-rest-api-in-scala-3-with-zio-http-magnum-and-iron</link><guid isPermaLink="true">https://jorgevasquez.blog/new-article-how-to-implement-a-rest-api-in-scala-3-with-zio-http-magnum-and-iron</guid><category><![CDATA[Magnum]]></category><category><![CDATA[scala3, ]]></category><category><![CDATA[zio-http]]></category><category><![CDATA[iron ]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 04 Apr 2025 14:22:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/npxXWgQ33ZQ/upload/b3fcb17b68bd7f1903f9262f51c10dad.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A new article I've recently written has been published in the Ziverge blog! You can read it <a target="_blank" href="https://www.ziverge.com/post/how-to-implement-a-rest-api-in-scala-3-with-zio-http-magnum-and-iron">here</a>, I hope you find it useful.</p>
]]></content:encoded></item><item><title><![CDATA[Scala's Hidden Treasures: Five ZIO-Compatible Libraries you didn't know you needed!]]></title><description><![CDATA[In the fast-evolving world of Scala development, some powerful libraries remain under the radar despite offering great capabilities, especially when combined with ZIO. In this presentation, we explore a selection of five lesser-known but highly usefu...]]></description><link>https://jorgevasquez.blog/scalas-hidden-treasures-five-zio-compatible-libraries-you-didnt-know-you-needed</link><guid isPermaLink="true">https://jorgevasquez.blog/scalas-hidden-treasures-five-zio-compatible-libraries-you-didnt-know-you-needed</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 05 Dec 2024 21:35:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/mkxTOAxqTTo/upload/4d24f5df3cd0d9f7be15dd4c920758f4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the fast-evolving world of Scala development, some powerful libraries remain under the radar despite offering great capabilities, especially when combined with ZIO. In this presentation, we explore a selection of five lesser-known but highly useful libraries (all with Scala 3 support!) which empower developers to handle diverse data-processing tasks with ease:</p>
<ul>
<li><p><a target="_blank" href="https://github.com/fingo/spata">Spata</a> for stream-based CSV processing</p>
</li>
<li><p><a target="_blank" href="https://github.com/grouzen/zio-apache-parquet">zio-apache-parquet</a> for typesafe processing of Parquet files</p>
</li>
<li><p><a target="_blank" href="https://github.com/hnaderi/yaml4s">yaml4s</a> for YAML parsing and printing</p>
</li>
<li><p><a target="_blank" href="https://github.com/dacr/zio-lmdb">zio-lmdb</a> for managing high-performance embedded key-value stores</p>
</li>
<li><p><a target="_blank" href="https://github.com/gaelrenoux/tranzactio">Tranzactio</a> for seamless integration between Doobie and ZIO</p>
</li>
</ul>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides</em> <a target="_self" href="https://jorge-vasquez-2301.github.io/scalas-hidden-treasures"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[ZIO HTTP: Programación Funcional en Acción con Scala!]]></title><description><![CDATA[En esta presentación se introducen conceptos básicos de Programación Funcional, para luego mostrar cómo se puede aplicarla en el mundo real a través de librerías como ZIO HTTP.
Mira la grabación
https://www.youtube.com/watch?v=O70q1ayxz2o
 

💡
Puede...]]></description><link>https://jorgevasquez.blog/zio-http-programacion-funcional-en-accion-con-scala</link><guid isPermaLink="true">https://jorgevasquez.blog/zio-http-programacion-funcional-en-accion-con-scala</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[zio-http]]></category><category><![CDATA[programación funcional]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Wed, 31 Jan 2024 23:45:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706744695310/03adabba-7912-4ccf-a46e-c039bba8f80b.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>En esta presentación se introducen conceptos básicos de Programación Funcional, para luego mostrar cómo se puede aplicarla en el mundo real a través de librerías como ZIO HTTP.</p>
<p><strong>Mira la grabación</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=O70q1ayxz2o">https://www.youtube.com/watch?v=O70q1ayxz2o</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>Puedes encontrar los slides </em><a target="_blank" href="https://jorge-vasquez-2301.github.io/zio-http-jug-colombia-2024/"><em>aquí</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[New article: Writing modular applications using the Kyo library]]></title><description><![CDATA[Just today a new article I've recently written has been published in the Scala Matters blog. It's about exploring how to use the Kyo library and Scala 3 to write modular applications, by implementing a Tic-Tac-Toe game. You can read the article here,...]]></description><link>https://jorgevasquez.blog/new-article-writing-modular-applications-using-the-kyo-library</link><guid isPermaLink="true">https://jorgevasquez.blog/new-article-writing-modular-applications-using-the-kyo-library</guid><category><![CDATA[Kyo]]></category><category><![CDATA[Scala]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 04 Jan 2024 13:58:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/HpMihL323k0/upload/75a586cc79111dcb33714a34ad133420.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Just today a new article I've recently written has been published in the Scala Matters blog. It's about exploring how to use the Kyo library and Scala 3 to write modular applications, by implementing a Tic-Tac-Toe game. You can read the article <a target="_blank" href="https://www.scalamatters.io/post/writing-modular-applications-using-the-kyo-library">here</a>, I hope you like it and find it useful!</p>
]]></content:encoded></item><item><title><![CDATA[Elevate and Conquer, Unleashing the Power of High-Level Endpoints in Scala]]></title><description><![CDATA[Traditionally, developers have relied on constructing routing tables to build their REST APIs. These tables map specific routes to corresponding request handlers. However, this approach involves manual decoding of headers, query parameters, and reque...]]></description><link>https://jorgevasquez.blog/elevate-and-conquer-unleashing-the-power-of-high-level-endpoints-in-scala</link><guid isPermaLink="true">https://jorgevasquez.blog/elevate-and-conquer-unleashing-the-power-of-high-level-endpoints-in-scala</guid><category><![CDATA[tapir]]></category><category><![CDATA[endpoints4s]]></category><category><![CDATA[Scala]]></category><category><![CDATA[Functional Programming]]></category><category><![CDATA[Functional Scala]]></category><category><![CDATA[zio-http]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 01 Dec 2023 13:43:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/kzQ6gbTR-Fg/upload/543139b79236e7c7dfa5f87024a314d5.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Traditionally, developers have relied on constructing <em>routing tables</em> to build their REST APIs. These tables map specific <em>routes</em> to corresponding <em>request handlers.</em> However, this approach involves manual decoding of headers, query parameters, and request bodies, as well as encoding of responses. Despite its flexibility, this classic method has several drawbacks, including the need for extensive low-level code and the manual or semi-automated creation of documentation and client libraries.</p>
<p>Fortunately, the Scala open-source ecosystem offers superior alternatives for API development. Libraries like <em>Tapir</em>, <em>Endpoints4s</em> and <em>ZIO HTTP</em> enable developers to define endpoints at a higher level. With these solutions, developers can declare their endpoints in a high-level manner, eliminating the need to handle decoding and encoding. Additionally, they provide benefits like OpenAPI documentation and type-safe clients for free.</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0r0vy_elKys">https://www.youtube.com/watch?v=0r0vy_elKys</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides</em> <a target="_blank" href="https://jorge-vasquez-2301.github.io/endpoints-functional-scala-2023/"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Links to ZIO-related articles I've published in other blogs]]></title><description><![CDATA[Introduction to Programming with ZIO Functional Effects

How to write a (completely lock-free) concurrent LRU Cache with ZIO STM

Mastering Modularity in ZIO with ZLayer

Improve your Focus with ZIO Optics

How to implement streaming microservices wi...]]></description><link>https://jorgevasquez.blog/links-to-zio-related-articles-ive-published-in-other-blogs</link><guid isPermaLink="true">https://jorgevasquez.blog/links-to-zio-related-articles-ive-published-in-other-blogs</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Sat, 18 Nov 2023 02:12:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700338826800/30689384-9d04-4b07-840d-84b244825e27.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<ul>
<li><p><a target="_blank" href="https://scalac.io/blog/introduction-to-programming-with-zio-functional-effects/">Introduction to Programming with ZIO Functional Effects</a></p>
</li>
<li><p><a target="_blank" href="https://scalac.io/blog/how-to-write-a-completely-lock-free-concurrent-lru-cache-with-zio-stm/">How to write a (completely lock-free) concurrent LRU Cache with ZIO STM</a></p>
</li>
<li><p><a target="_blank" href="https://scalac.io/ebook/mastering-modularity-in-zio-with-zlayer/intro/">Mastering Modularity in ZIO with ZLayer</a></p>
</li>
<li><p><a target="_blank" href="https://scalac.io/ebook/improve-your-focus-with-zio-optics/introduction-5/">Improve your Focus with ZIO Optics</a></p>
</li>
<li><p><a target="_blank" href="https://scalac.io/blog/streaming-microservices-with-zio-and-kafka/">How to implement streaming microservices with ZIO 2 and Kafka</a> (updated version of the original article written by <a target="_blank" href="https://github.com/aleksandarskrbic">Aleksandar Skrbic</a>)</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Teach Your Web API To Speak Loud And Clear CLI!]]></title><description><![CDATA[Most Scala-based backend applications are web APIs, which typically use the HTTP protocol and the JSON format. As a developer, it's crucial to test your APIs during development. One option is to call them from the command line using tools like curl, ...]]></description><link>https://jorgevasquez.blog/teach-your-web-api-to-speak-loud-and-clear-cli</link><guid isPermaLink="true">https://jorgevasquez.blog/teach-your-web-api-to-speak-loud-and-clear-cli</guid><category><![CDATA[zio-http-cli]]></category><category><![CDATA[ZIO World]]></category><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 21 Apr 2023 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ASKeuOZqhYU/upload/0a9cf4e21ff548b3ef33829507042a39.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most Scala-based backend applications are web APIs, which typically use the HTTP protocol and the JSON format. As a developer, it's crucial to test your APIs during development. One option is to call them from the command line using tools like <code>curl</code>, but this process can be time-consuming and prone to errors, requiring writing headers and constructing JSON manually. This affects you while testing, and also DevOps and SREs who need to call your APIs from the command line or include these calls in scripts.</p>
<p>In this presentation at <a target="_blank" href="https://www.zioworld.com/">ZIO World 2023</a>, I've introduced a new and exciting feature of <a target="_blank" href="https://github.com/zio/zio-http">ZIO HTTP</a>. With it, you will be able to easily access your API through an automatically-generated command-line interface. Testing and accessing your API will become a breeze, with rich features such as:</p>
<ul>
<li><p>Comprehensive help pages</p>
</li>
<li><p>Data validation</p>
</li>
<li><p>Auto-completion</p>
</li>
<li><p>Spelling correction.</p>
</li>
</ul>
<p>Say goodbye to the struggles of the past and embrace a new, easy, and joyful way of testing and calling your API from the command-line!</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=BEwxsPUQ9SY">https://www.youtube.com/watch?v=BEwxsPUQ9SY</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides</em> <a target="_blank" href="https://jorge-vasquez-2301.github.io/zio-http-cli-zio-world-2023/"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Behold! The Happy Path To Captivate Your Users With Stunning CLI Apps!]]></title><description><![CDATA[As developers, we often have to create command-line applications, which expose APIs, workflows or data processing functionality in a way that is accessible to scripts and non-developers. Although a simple command-line application can be created by on...]]></description><link>https://jorgevasquez.blog/behold-the-happy-path-to-captivate-your-users-with-stunning-cli-apps</link><guid isPermaLink="true">https://jorgevasquez.blog/behold-the-happy-path-to-captivate-your-users-with-stunning-cli-apps</guid><category><![CDATA[Functional Scala]]></category><category><![CDATA[zio-cli]]></category><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 02 Dec 2022 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/p-I9wV811qk/upload/92e4690f58ab0b35f3fce78f49fb839f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As developers, we often have to create command-line applications, which expose APIs, workflows or data processing functionality in a way that is accessible to scripts and non-developers. Although a simple command-line application can be created by only using <code>Array[String]</code>, such applications lack features that users take for granted, including:</p>
<ul>
<li><p>Flexible subcommands</p>
</li>
<li><p>Options</p>
</li>
<li><p>Arguments</p>
</li>
<li><p>Validations</p>
</li>
<li><p>Documentation pages</p>
</li>
</ul>
<p>In this presentation at <a target="_blank" href="https://www.functionalscala.com/">Functional Scala 2022</a>, I've shown how to easily build beautiful command-line applications that your users will love. Using <a target="_blank" href="https://github.com/zio/zio-cli">ZIO CLI</a>, your command-line applications will support:</p>
<ul>
<li><p>All types of command-line parameters</p>
</li>
<li><p>Perform both <em>Pure</em> and <em>Impure</em> validation</p>
</li>
<li><p>Generate <em>beautiful</em> short and long documentation pages</p>
</li>
<li><p>Support <em>auto-correction</em> plus <em>auto-completion</em></p>
</li>
</ul>
<p>Discover how you can have fun creating beautiful command-line apps that delight your users!</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0c3zbUq4lQo">https://www.youtube.com/watch?v=0c3zbUq4lQo</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/behold-the-happy-path-to-captivate-your-users-with-stunning-cli-apps-254686190"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Programación Funcional 101 con Scala y ZIO 2.0]]></title><description><![CDATA[Se incluyeron los siguientes temas:

Conceptos básicos de Programación Funcional

Diferencias entre Programación Funcional y Programación Orientada a Objetos

Beneficios de la Programación Funcional

Qué es un Efecto Funcional

Conceptos básicos de Z...]]></description><link>https://jorgevasquez.blog/programacion-funcional-101-con-scala-y-zio-20</link><guid isPermaLink="true">https://jorgevasquez.blog/programacion-funcional-101-con-scala-y-zio-20</guid><category><![CDATA[programación funcional]]></category><category><![CDATA[ScaLatin]]></category><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 30 Jun 2022 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700338876425/10ea6cb2-b62a-4ff5-895f-d1e1e8a48fe7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Se incluyeron los siguientes temas:</p>
<ul>
<li><p>Conceptos básicos de Programación Funcional</p>
</li>
<li><p>Diferencias entre Programación Funcional y Programación Orientada a Objetos</p>
</li>
<li><p>Beneficios de la Programación Funcional</p>
</li>
<li><p>Qué es un Efecto Funcional</p>
</li>
<li><p>Conceptos básicos de ZIO</p>
</li>
<li><p>Cómo implementar un juego de Tres en Línea usando ZIO 2.0</p>
</li>
</ul>
<p><strong>Mira la grabación</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=qTbyNkf2nGY">https://www.youtube.com/watch?v=qTbyNkf2nGY</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>Puedes encontrar los slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/programacin-funcional-101-con-scala-y-zio-20"><em>aquí</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Interview on the Tech Tak Podcast by Wiem Zine]]></title><description><![CDATA[You can listen to the interview here:
https://open.spotify.com/episode/1uxLEZoLjtaA1z8eUIpauG?si=3tTK3kjWS7qAI-aNjc32EQ]]></description><link>https://jorgevasquez.blog/interview-on-the-tech-tak-podcast-by-wiem-zine</link><guid isPermaLink="true">https://jorgevasquez.blog/interview-on-the-tech-tak-podcast-by-wiem-zine</guid><category><![CDATA[Scala]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Sun, 01 May 2022 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ZDNyhmgkZlQ/upload/cb3b96cb0b1c3b6e02e5a5ffe3a560ba.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You can listen to the interview here:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://open.spotify.com/episode/1uxLEZoLjtaA1z8eUIpauG?si=3tTK3kjWS7qAI-aNjc32EQ">https://open.spotify.com/episode/1uxLEZoLjtaA1z8eUIpauG?si=3tTK3kjWS7qAI-aNjc32EQ</a></div>
]]></content:encoded></item><item><title><![CDATA[A Prelude of Purity, scaling back ZIO]]></title><description><![CDATA[Some parts of our applications don't need to be asynchronous or interact with the outside world: it's enough that they are stateful, possibly with the ability to handle failures, context, and logging. Although you can use ZIO 2 or monad transformers ...]]></description><link>https://jorgevasquez.blog/a-prelude-of-purity-scaling-back-zio</link><guid isPermaLink="true">https://jorgevasquez.blog/a-prelude-of-purity-scaling-back-zio</guid><category><![CDATA[zio-prelude]]></category><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><category><![CDATA[ZIO World]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 11 Mar 2022 04:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/vaC0w7XBSXw/upload/178b16d47f3775c201ac9bf510662ac8.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Some parts of our applications don't need to be asynchronous or interact with the outside world: it's enough that they are <em>stateful</em>, possibly with the ability to handle <em>failures</em>, <em>context</em>, and <em>logging</em>. Although you can use ZIO 2 or monad transformers for this task, both come with drawbacks. In this presentation, I've introduced <code>ZPure</code>, a data type from <a target="_blank" href="https://github.com/zio/zio-prelude">ZIO Prelude</a> which lets you scale back on the power of ZIO 2, but with the same high performance, type inference, and ergonomics you expect from ZIO 2 libraries.</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=Vq449igxuLk">https://www.youtube.com/watch?v=Vq449igxuLk</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides</em> <a target="_blank" href="https://www.slideshare.net/jv2301/a-prelude-of-purity-scaling-back-zio"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Smart Types (Like Regular Types, Only Smarter)]]></title><description><![CDATA[You can listen to this interview about the Smart Types feature of ZIO Prelude here:
https://podcasters.spotify.com/pod/show/happypathprogramming/episodes/49-Smart-Types-Like-Regular-Types--Only-Smarter-with-Jorge-Vasquez-e1bhoth]]></description><link>https://jorgevasquez.blog/smart-types-like-regular-types-only-smarter</link><guid isPermaLink="true">https://jorgevasquez.blog/smart-types-like-regular-types-only-smarter</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio-prelude]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 10 Dec 2021 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ZDNyhmgkZlQ/upload/cb3b96cb0b1c3b6e02e5a5ffe3a560ba.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You can listen to this interview about the <em>Smart Types</em> feature of <a target="_blank" href="https://github.com/zio/zio-prelude">ZIO Prelude</a> here:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://podcasters.spotify.com/pod/show/happypathprogramming/episodes/49-Smart-Types-Like-Regular-Types--Only-Smarter-with-Jorge-Vasquez-e1bhoth">https://podcasters.spotify.com/pod/show/happypathprogramming/episodes/49-Smart-Types-Like-Regular-Types--Only-Smarter-with-Jorge-Vasquez-e1bhoth</a></div>
]]></content:encoded></item><item><title><![CDATA[Be Smart, Constrain Your Types to Free Your Brain!]]></title><description><![CDATA[Admit it: You have used a String to model email values, even though most strings aren’t valid emails (don’t worry, we all have!). Imprecise data models are easy, but they crash applications and corrupt external systems. On the other hand, precise dat...]]></description><link>https://jorgevasquez.blog/be-smart-constrain-your-types-to-free-your-brain</link><guid isPermaLink="true">https://jorgevasquez.blog/be-smart-constrain-your-types-to-free-your-brain</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio-prelude]]></category><category><![CDATA[Functional Scala]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 02 Dec 2021 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/aK4iPNYipnU/upload/00d9a707a9da451cb0a465cf3b2ffa1c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Admit it: You have used a <code>String</code> to model email values, even though most strings aren’t valid emails (don’t worry, we all have!). Imprecise data models are easy, but they crash applications and corrupt external systems. On the other hand, precise data models take time and generate boilerplate.</p>
<p>So-called newtype libraries have stepped up to the challenge, making it easier to model data precisely using runtime validation. However, newtype libraries aren’t able to validate constants at compile-time.</p>
<p>Enter <em>ZIO Prelude Smart Types</em>, which make it simple to model data types precisely, without any boilerplate, runtime overhead, or compile-time overhead. <em>ZIO Prelude Smart Types</em> work at compile-time and runtime, and they have a uniform API across Scala 2 &amp; 3.</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=FDVcNyLfX_I">https://www.youtube.com/watch?v=FDVcNyLfX_I</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/be-smart-constrain-your-types-to-free-your-brain"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Consiguiendo superpoderes para construir aplicaciones modernas en la JVM con ZIO]]></title><description><![CDATA[Desarrollar aplicaciones modernas, que sean capaces de atender la creciente demanda de los usuarios en un mundo cada vez más interconectado, no es una tarea fácil para nosotros los desarrolladores; pues dichas aplicaciones tienen que ser altamente co...]]></description><link>https://jorgevasquez.blog/consiguiendo-superpoderes-para-construir-aplicaciones-modernas-en-la-jvm-con-zio</link><guid isPermaLink="true">https://jorgevasquez.blog/consiguiendo-superpoderes-para-construir-aplicaciones-modernas-en-la-jvm-con-zio</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[programación funcional]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Sat, 06 Nov 2021 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700342625433/52cb0dbf-c81a-4ceb-89c4-7b5f4295a5b5.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Desarrollar aplicaciones modernas, que sean capaces de atender la creciente demanda de los usuarios en un mundo cada vez más interconectado, no es una tarea fácil para nosotros los desarrolladores; pues dichas aplicaciones tienen que ser altamente concurrentes y performantes para poder responder adecuadamente.</p>
<p>Java nos ofrece varias herramientas bajo el paquete <code>java.util.concurrent</code> que nos permiten desarrollar aplicaciones concurrentes, pero dichas herramientas son de muy bajo nivel; lo cual significa que trabajar con ellas es, en general, una tarea muy complicada; pues uno necesita pensar muy detenidamente en lo que se está haciendo para evitar típicos problemas como <em>condiciones de carrera</em> o los muy temidos <em>deadlocks</em>. Y seamos honestos, pensar en todos los posibles escenarios que podrían presentarse en un ambiente de producción no es solamente difícil, sino incluso inviable en muchas ocasiones.</p>
<p>Por otro lado, en el mundo de Scala, tenemos a nuestra disposición una librería llamada <a target="_blank" href="https://zio.dev/">ZIO</a>, la cual nos da superpoderes para construir aplicaciones que sean <em>asíncronas</em>, <em>concurrentes</em>, <em>resilientes</em>, <em>eficientes</em> y <em>fáciles de testear</em>, permitiéndonos ser al mismo tiempo más productivos, lo cual se traduce en poder resolver problemas con menos esfuerzo, con menor costo de mantenimiento y con más fuertes garantías en tiempo de compilación.</p>
<p><strong>Mira la grabación</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/live/8RzHVaatzEg?si=Lz48bV1AUslsikJn&amp;t=8592">https://www.youtube.com/live/8RzHVaatzEg?si=Lz48bV1AUslsikJn&amp;t=8592</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>Puedes encontrar los slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/consiguiendo-superpoderes-para-construir-aplicaciones-modernas-en-la-jvm-con-zio"><em>aquí</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Functional Programming 101 with Scala and ZIO]]></title><description><![CDATA[Watch the recording:
https://www.youtube.com/watch?v=gZMwjYTkK9k
 

💡
You can find the slides here]]></description><link>https://jorgevasquez.blog/functional-programming-101-with-scala-and-zio</link><guid isPermaLink="true">https://jorgevasquez.blog/functional-programming-101-with-scala-and-zio</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 15 Apr 2021 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700343684991/0e591f4f-d35d-47ca-a0e0-57dfbfa69460.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=gZMwjYTkK9k">https://www.youtube.com/watch?v=gZMwjYTkK9k</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/functional-programming-101-with-scala-and-zio-functionalworld"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[ZIO Prelude Presentation]]></title><description><![CDATA[Watch the recording:
https://www.youtube.com/watch?v=69ngoqVXKPI
 

💡
You can find the slides here]]></description><link>https://jorgevasquez.blog/zio-prelude-presentation</link><guid isPermaLink="true">https://jorgevasquez.blog/zio-prelude-presentation</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio-prelude]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 11 Mar 2021 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700344379573/a35c184f-90bf-44f0-b9b4-68fbb9a94f69.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=69ngoqVXKPI">https://www.youtube.com/watch?v=69ngoqVXKPI</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/zio-prelude-zio-world-2021"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[The Terror-Free Guide to Introducing Functional Scala at Work]]></title><description><![CDATA[Too often, our applications are dominated by boilerplate that's not fun to write or test, and that makes our business logic complicated. In object-oriented programming, classes and interfaces help us with abstraction to reduce boilerplate. But, in fu...]]></description><link>https://jorgevasquez.blog/the-terror-free-guide-to-introducing-functional-scala-at-work</link><guid isPermaLink="true">https://jorgevasquez.blog/the-terror-free-guide-to-introducing-functional-scala-at-work</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio-prelude]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Fri, 04 Dec 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/4Ennrbj1svk/upload/419f281280ede1a56d139280f40397ec.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Too often, our applications are dominated by boilerplate that's not fun to write or test, and that makes our business logic complicated. In object-oriented programming, classes and interfaces help us with abstraction to reduce boilerplate. But, in functional programming, we use <em>type classes.</em></p>
<p>Historically, type classes in functional programming have been very complex and confusing, partially because they import ideas from Haskell that don't make sense in Scala, and partially because of their esoteric origins in category theory.</p>
<p>In this presentation, I've introduced ZIO Prelude, which offers a distinctly Scala take on Functional Abstractions, and you will learn how you can eliminate common types of boilerplate by using it.</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=Sinde_P7nmY">https://www.youtube.com/watch?v=Sinde_P7nmY</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides</em> <a target="_blank" href="https://www.slideshare.net/jv2301/the-terrorfree-guide-to-introducing-functional-scala-at-work"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Exploring Type-Level Programming in Scala]]></title><description><![CDATA[In this introduction to type-level programming in Scala, I've discussed how we can leverage the full power of the type system to verify domain properties of an application at compile-time, instead of doing runtime verifications at the value level.
Wa...]]></description><link>https://jorgevasquez.blog/exploring-type-level-programming-in-scala</link><guid isPermaLink="true">https://jorgevasquez.blog/exploring-type-level-programming-in-scala</guid><category><![CDATA[type-level programming]]></category><category><![CDATA[Scala]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Tue, 15 Sep 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/npxXWgQ33ZQ/upload/62032922717149fd49a03445a7af490a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this introduction to type-level programming in Scala, I've discussed how we can leverage the full power of the type system to verify domain properties of an application at compile-time, instead of doing runtime verifications at the value level.</p>
<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0PEOK_G43MU">https://www.youtube.com/watch?v=0PEOK_G43MU</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/exploring-type-level-programming-in-scala"><em>here</em></a></div>
</div>]]></content:encoded></item><item><title><![CDATA[Exploring ZIO Prelude: The game changer for typeclasses in Scala]]></title><description><![CDATA[Watch the recording:
https://www.youtube.com/watch?v=OzoMofqsPg8
 

💡
You can find the slides here]]></description><link>https://jorgevasquez.blog/exploring-zio-prelude-the-game-changer-for-typeclasses-in-scala</link><guid isPermaLink="true">https://jorgevasquez.blog/exploring-zio-prelude-the-game-changer-for-typeclasses-in-scala</guid><category><![CDATA[Scala]]></category><category><![CDATA[zio-prelude]]></category><category><![CDATA[Functional Programming]]></category><dc:creator><![CDATA[Jorge Vásquez]]></dc:creator><pubDate>Thu, 20 Aug 2020 16:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700344990091/d9f960ec-1bc1-409c-99f0-d4958f0322f7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Watch the recording:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=OzoMofqsPg8">https://www.youtube.com/watch?v=OzoMofqsPg8</a></div>
<p> </p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text"><em>You can find the slides </em><a target="_blank" href="https://www.slideshare.net/jv2301/exploring-zio-prelude-the-game-changer-for-typeclasses-in-scala"><em>here</em></a></div>
</div>]]></content:encoded></item></channel></rss>