<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Poeticoding</title><link>https://www.poeticoding.com/</link><description>Recent content on Poeticoding</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 05 Sep 2025 12:09:26 +0000</lastBuildDate><atom:link href="https://www.poeticoding.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Nerves powered Vision - Deploy YOLOv8 on RPi5 with Hailo8L</title><link>https://www.poeticoding.com/nerves-powered-vision-deploy-yolov8-on-rpi5-with-hailo8l/</link><pubDate>Fri, 05 Sep 2025 10:53:08 +0000</pubDate><guid>https://www.poeticoding.com/nerves-powered-vision-deploy-yolov8-on-rpi5-with-hailo8l/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/eYamm3CEH9c" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;ul>
&lt;li>YOLO for Elixir: &lt;a href="https://github.com/poeticoding/yolo_elixir" target="_blank" rel="noopener">https://github.com/poeticoding/yolo_elixir&lt;/a>&lt;/li>
&lt;li>&lt;code>NxHailo&lt;/code> repo: &lt;a href="https://github.com/vittoriabitton/nx_hailo" target="_blank" rel="noopener">https://github.com/vittoriabitton/nx_hailo&lt;/a>&lt;/li>
&lt;li>Hailo model zoo: &lt;a href="https://github.com/hailo-ai/hailo_model_zoo/" target="_blank" rel="noopener">https://github.com/hailo-ai/hailo_model_zoo/&lt;/a>&lt;/li>
&lt;li>&lt;code>nerves_system_rpi5&lt;/code>: &lt;a href="https://github.com/nerves-project/nerves_system_rpi5" target="_blank" rel="noopener">https://github.com/nerves-project/nerves_system_rpi5&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Most of the code used in the video: &lt;a href="https://github.com/vittoriabitton/nx_hailo/blob/main/nx_hailo/livebooks/remote_device_inference.livemd" target="_blank" rel="noopener">https://github.com/vittoriabitton/nx_hailo/blob/main/nx_hailo/livebooks/remote_device_inference.livemd&lt;/a>&lt;/p></description></item><item><title>Building a YOLOX Plate Detector - Setup, Fine-Tuning, Metrics, Dashcam inference</title><link>https://www.poeticoding.com/building-a-yolox-plate-detector-setup-fine-tuning-metrics-dashcam-inference/</link><pubDate>Fri, 29 Aug 2025 17:04:59 +0000</pubDate><guid>https://www.poeticoding.com/building-a-yolox-plate-detector-setup-fine-tuning-metrics-dashcam-inference/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/xPJqoX0EYKE" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;h3 id="links">Links&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://github.com/Megvii-BaseDetection/YOLOX" target="_blank" rel="noopener">YOLOX GitHub Repo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://universe.roboflow.com/roboflow-universe-projects/license-plate-recognition-rxg4e" target="_blank" rel="noopener">Roboflow License Plates dataset&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="notes-and-code">Notes and Code&lt;/h2>
&lt;h3 id="install-yolox-and-needed-deps">Install YOLOX and needed deps&lt;/h3>
&lt;p>Download YOLOX GitHub repo: &lt;a href="https://github.com/Megvii-BaseDetection/YOLOX" target="_blank" rel="noopener">https://github.com/Megvii-BaseDetection/YOLOX&lt;/a>&lt;/p>
&lt;p>Then be sure you are using Python &amp;lt;= 3.11 (I had some issues with python 3.12 and switching to 3.11 made all much easier).&lt;/p></description></item><item><title>Build a Parking sensor with ESP32 board, LEDs and Ultrasonic distance sensor</title><link>https://www.poeticoding.com/build-a-parking-sensor-with-esp32-board-leds-and-ultrasonic-distance-sensor/</link><pubDate>Wed, 23 Jul 2025 15:27:53 +0000</pubDate><guid>https://www.poeticoding.com/build-a-parking-sensor-with-esp32-board-leds-and-ultrasonic-distance-sensor/</guid><description>&lt;h2 id="what-problem-am-i-trying-to-solve">What problem am I trying to solve?&lt;/h2>
&lt;p>My garage was built for cars from another era: inside it’s about ~&lt;strong>4.8 m long × 2.5 m wide&lt;/strong>, and the entrance narrows to &lt;strong>just 2.2 m&lt;/strong>. My car, on the other hand, is &lt;strong>4.7 m long and almost 2 m wide&lt;/strong>, so squeezing it through the doorway is just step one. Even if I make it in without scraping the sides, I’m stuck: there’s almost no room between the car and the side walls, so I can’t open the door or shut the garage door behind me. I need to use every last millimeter of length, but no matter how gently I press the pedal, or how much I rely on the factory cameras, getting the exact distance to the back wall is nearly impossible.&lt;/p></description></item><item><title>Fine-Tuning YOLO to Watch Soccer Matches</title><link>https://www.poeticoding.com/fine-tuning-yolo-to-watch-soccer-matches/</link><pubDate>Thu, 17 Jul 2025 15:14:24 +0000</pubDate><guid>https://www.poeticoding.com/fine-tuning-yolo-to-watch-soccer-matches/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/m7nO5jtpc_w" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>Today we&amp;rsquo;re diving into something really cool: fine-tuning YOLO models for soccer detection. We&amp;rsquo;re going to detect &lt;code>ball&lt;/code>s, &lt;code>referee&lt;/code>s, &lt;code>player&lt;/code>s, and &lt;code>goalkeeper&lt;/code>s in soccer matches using &lt;a href="https://docs.ultralytics.com/modes/train/" target="_blank" rel="noopener">Ultralytics&amp;rsquo; fine-tuning tools&lt;/a>.&lt;/p>
&lt;p>The popular YOLO models you&amp;rsquo;ll find out there, like &lt;a href="https://docs.ultralytics.com/models/yolo11/" target="_blank" rel="noopener">Ultralytics YOLOv11&lt;/a>, and &lt;a href="https://github.com/Megvii-BaseDetection/YOLOX" target="_blank" rel="noopener">YOLOX&lt;/a> in different sizes, are mostly pre-trained on something called the &lt;a href="https://cocodataset.org/" target="_blank" rel="noopener">COCO dataset&lt;/a>.&lt;/p></description></item><item><title>Elixir YOLO v0.2.0: YOLOX Support, Custom Models and Performance Boost</title><link>https://www.poeticoding.com/elixir-yolo-v0-2-0-yolox-support-custom-models-and-performance-boost/</link><pubDate>Thu, 26 Jun 2025 15:59:25 +0000</pubDate><guid>https://www.poeticoding.com/elixir-yolo-v0-2-0-yolox-support-custom-models-and-performance-boost/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/Jq4eU2WguK0" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://github.com/poeticoding/yolo_elixir/releases/tag/0.2.0" target="_blank" rel="noopener">https://github.com/poeticoding/yolo_elixir/releases/tag/0.2.0&lt;/a>&lt;/p>
&lt;p>In the four months since my daughter was born, I’ve been balancing baby bottles by night and code commits by day. Finally managed to ship this release, sleep-deprived, but very proud!&lt;/p>
&lt;p>This isn’t just a version bump, it’s a major release, introducing three key enhancements:&lt;/p></description></item><item><title>Effortless Video Sharing with Phoenix LiveView and FLAME</title><link>https://www.poeticoding.com/effortless-video-sharing-with-phoenix-liveview-and-flame/</link><pubDate>Thu, 28 Nov 2024 18:09:06 +0000</pubDate><guid>https://www.poeticoding.com/effortless-video-sharing-with-phoenix-liveview-and-flame/</guid><description>&lt;p>As someone who loves experimenting with new technologies, I recently got the Vision Pro (I’m a big fan of VR and the idea of working in mixed reality). What excites me the most is sharing the cool stuff I discover, with my friends and colleagues, like how amazing it is to have a floating 3D model in mixed reality, built with just a few lines of Swift code.&lt;/p></description></item><item><title>Phoenix LiveView LiveComponents</title><link>https://www.poeticoding.com/phoenix-liveview-livecomponents/</link><pubDate>Tue, 23 Nov 2021 16:09:36 +0000</pubDate><guid>https://www.poeticoding.com/phoenix-liveview-livecomponents/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/U2D2woBthcc" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">&lt;strong>Course Index page&lt;/strong>&lt;/a>&lt;/p>
&lt;h2 id="code">Code&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/live-component" target="_blank" rel="noopener">&lt;code>live-component&lt;/code> branch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/pull/18" target="_blank" rel="noopener">Pull Request&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/blob/live-component/lib/poeticoins_web/live/product_component.ex" target="_blank" rel="noopener">&lt;code>product_component.ex&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="links">Links&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveComponent.html" target="_blank" rel="noopener">Phoenix.LiveComponent&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.Helpers.html#live_component/4" target="_blank" rel="noopener">&lt;code>live_component/4&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveComponent.html#module-stateful-components-life-cycle" target="_blank" rel="noopener">Stateful components&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>We&amp;rsquo;ve just started to build our &lt;a href="https://github.com/poeticoding/poeticoins/blob/dashboard-ui/lib/poeticoins_web/live/crypto_dashboard_live.ex" target="_blank" rel="noopener">&lt;code>CryptoDashboardLive&lt;/code> view&lt;/a>, and we already have the feeling that the we are piling up a lot of code into the single &lt;code>CryptoDashboardLive&lt;/code> module. It&amp;rsquo;s not just about the template in the &lt;a href="https://github.com/poeticoding/poeticoins/blob/dashboard-ui/lib/poeticoins_web/live/crypto_dashboard_live.ex#L11" target="_blank" rel="noopener">&lt;code>render/1&lt;/code>&lt;/a> function, we could easily move it into a &lt;code>.leex&lt;/code> file. The risk is to find us with a single massive live view module which handles every aspect of our page, making che code hard to read and maintain. This page already has different parts with different responsibilities, for example: product cards where each one shows its product price, a toolbar with a dropdown to add products to the dashboard&amp;hellip;&lt;/p></description></item><item><title>A nice Dashboard UI</title><link>https://www.poeticoding.com/a-nice-dashboard-ui/</link><pubDate>Tue, 23 Nov 2021 15:35:40 +0000</pubDate><guid>https://www.poeticoding.com/a-nice-dashboard-ui/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/DVIrfx0CiLc" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;h2 id="code">Code&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/dashboard-ui" target="_blank" rel="noopener">&lt;em>dashboard-ui&lt;/em> repo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/blob/dashboard-ui/assets/css/poeticoins.scss" target="_blank" rel="noopener">&lt;code>assets/css/poeticoins.scss&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/poeticoding/poeticoins/d7978efc38d2b04d4ff67cfffb44dc1f1721313e/assets/static/images/background.svg" target="_blank" rel="noopener">&lt;code>assets/static/images/background.svg&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/poeticoding/poeticoins/d7978efc38d2b04d4ff67cfffb44dc1f1721313e/assets/static/images/cryptos/btc.svg" target="_blank" rel="noopener">&lt;code>assets/static/images/cryptos/btc.svg&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/poeticoding/poeticoins/d7978efc38d2b04d4ff67cfffb44dc1f1721313e/assets/static/images/cryptos/eth.svg" target="_blank" rel="noopener">&lt;code>assets/static/images/cryptos/eth.svg&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://raw.githubusercontent.com/poeticoding/poeticoins/d7978efc38d2b04d4ff67cfffb44dc1f1721313e/assets/static/images/cryptos/ltc.svg" target="_blank" rel="noopener">&lt;code>assets/static/images/cryptos/ltc.svg&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Before going on with LiveComponents and other topics, let&amp;rsquo;s spend a few minutes on our UI. At the moment products and trades are rendered in a table, using the default &lt;code>phoenix.css&lt;/code>.&lt;/p></description></item><item><title>Bindings, Click and Form events, Debounce, Live Flash messages</title><link>https://www.poeticoding.com/bindings-click-and-form-events-debounce-live-flash-messages/</link><pubDate>Wed, 30 Jun 2021 11:24:56 +0000</pubDate><guid>https://www.poeticoding.com/bindings-click-and-form-events-debounce-live-flash-messages/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/z5wUETGuzXc" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;h2 id="code">Code&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/bindings-click-form-events" target="_blank" rel="noopener">&lt;code>bindings-click-form-events&lt;/code> branch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/commit/dc95b27f1a5bdc1d5a44b53d22fbab532efef11e" target="_blank" rel="noopener">fix filtering issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="links">Links&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#c:handle_event/3" target="_blank" rel="noopener">handle_event/3&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/bindings.html" target="_blank" rel="noopener">Bindings&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/bindings.html#click-events" target="_blank" rel="noopener">Click events&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/form-bindings.html" target="_blank" rel="noopener">Form events&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/bindings.html#rate-limiting-events-with-debounce-and-throttle" target="_blank" rel="noopener">Rate limiting&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#put_flash/3" target="_blank" rel="noopener">&lt;code>put_flash/3&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Until this moment we only dealt with a passive view, which receives updates from the server, but that doesn&amp;rsquo;t provide any user interaction.&lt;/p></description></item><item><title>Layouts and LiveEEx templates</title><link>https://www.poeticoding.com/layouts-and-liveeex-templates/</link><pubDate>Tue, 25 May 2021 11:14:16 +0000</pubDate><guid>https://www.poeticoding.com/layouts-and-liveeex-templates/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/2Sc0eOauH2k" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;h1 id="code">Code&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/lv-first-view" target="_blank" rel="noopener">&lt;code>lv-first-view&lt;/code> branch&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="links">Links&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix/views.html#layouts" target="_blank" rel="noopener">Phoenix Layouts&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/live-layouts.html" target="_blank" rel="noopener">Live Layouts&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/live-layouts.html" target="_blank" rel="noopener">Assigns and LiveEEx templates&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/assigns-eex.html#liveeex-pitfalls" target="_blank" rel="noopener">Updating the HTML document title&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>&lt;a href="https://www.poeticoding.com/how-phoenix-liveview-works/">We&amp;rsquo;ve previously seen in detail how Phoenix LiveView works&lt;/a>. In this lesson we are going to see:&lt;/p></description></item><item><title>How Phoenix LiveView works</title><link>https://www.poeticoding.com/how-phoenix-liveview-works/</link><pubDate>Tue, 27 Apr 2021 11:20:08 +0000</pubDate><guid>https://www.poeticoding.com/how-phoenix-liveview-works/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/pq5eOJRCkow" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;hr>
&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;h2 id="code">Code&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/how-lv-works" target="_blank" rel="noopener">GitHub: how-lv-works&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/blob/how-lv-works/lib/poeticoins_web/live/crypto_dashboard_live.ex" target="_blank" rel="noopener">crypto_dashboard_live.ex&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/blob/how-lv-works/assets/js/app.js" target="_blank" rel="noopener">&lt;code>app.js&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="links">Links&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#module-life-cycle" target="_blank" rel="noopener">Life-cycle&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#connected?/1" target="_blank" rel="noopener">&lt;code>socket.connected?&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/patrick-steele-idem/morphdom" target="_blank" rel="noopener">morphdom&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="how-does-liveview-work">How does LiveView work?&lt;/h2>
&lt;p>In the &lt;a href="https://www.poeticoding.com/first-contact-with-phoenix-liveview/">previous lesson&lt;/a> we got a taste of the LiveView&amp;rsquo;s magic! In this lesson we are going to see how LiveView really works and what happens behind the scenes when a user connects.&lt;/p></description></item><item><title>First contact with Phoenix LiveView</title><link>https://www.poeticoding.com/first-contact-with-phoenix-liveview/</link><pubDate>Tue, 13 Apr 2021 18:46:05 +0000</pubDate><guid>https://www.poeticoding.com/first-contact-with-phoenix-liveview/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/9ZTm0R5YU64" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">&lt;strong>Course Index page&lt;/strong>&lt;/a>&lt;/p>
&lt;h2 id="code">Code&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/tree/lv-first-view" target="_blank" rel="noopener">&lt;code>lv-first-view&lt;/code> branch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/pull/15" target="_blank" rel="noopener">Lesson&amp;rsquo;s PR&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/poeticoding/poeticoins/blob/lv-first-view/lib/poeticoins_web/live/crypto_dashboard_live.ex" target="_blank" rel="noopener">&lt;code>PoeticoinsWeb.CryptoDashboardLive&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="links">Links&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#c:mount/3" target="_blank" rel="noopener">mount/3&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#c:render/1" target="_blank" rel="noopener">ren&lt;/a>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#c:render/1" target="_blank" rel="noopener">d&lt;/a>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#c:render/1" target="_blank" rel="noopener">er/1&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#assign/3" target="_blank" rel="noopener">assign/3&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#update/3" target="_blank" rel="noopener">update/3&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.Helpers.html#sigil_L/2" target="_blank" rel="noopener">~L&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="our-first-live-view">Our first Live View&lt;/h2>
&lt;p>In this lesson we&amp;rsquo;ll introduce LiveView and get a sense of how powerful it can be. In the next lesson we&amp;rsquo;ll see better how LiveView works under the hood.&lt;/p></description></item><item><title>Intro to Poeticoins Elixir application</title><link>https://www.poeticoding.com/phoenix-liveview-intro-to-poeticoins-elixir-application/</link><pubDate>Sat, 27 Mar 2021 11:51:14 +0000</pubDate><guid>https://www.poeticoding.com/phoenix-liveview-intro-to-poeticoins-elixir-application/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/QJszKVQLZ7Y" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;p>&lt;strong>Poeticoins GitHub repository&lt;/strong>: &lt;a href="https://github.com/poeticoding/poeticoins/tree/cicd-gh-gigalixir" target="_blank" rel="noopener">poeticoding/poeticoins&lt;/a>&lt;/p></description></item><item><title>Application Design</title><link>https://www.poeticoding.com/phoenix-liveview-application-design/</link><pubDate>Tue, 23 Mar 2021 18:43:56 +0000</pubDate><guid>https://www.poeticoding.com/phoenix-liveview-application-design/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/DOYMep5xXp4" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;p>In this course we&amp;rsquo;ll build a Phoenix LiveView app (called &lt;a href="https://coins.poeticoding.com/">Poeticoins&lt;/a>) that gets real-time trades from multiple cryptocurrency exchanges and, with LiveView, it displays prices, and other data, on an interactive dashboard.&lt;/p>
&lt;!-- BROKEN IMAGE: https://cdn.fs.teachablecdn.com/resize=width:2500/iMyDdFqTtuOtrc7bJJV6 | app_goal.png -->
&lt;p>Since the dashboard just shows the most recent data, we won&amp;rsquo;t need any database. We&amp;rsquo;ll see how to use Elixir processes to temporarily keep all we need in memory.&lt;/p></description></item><item><title>Intro to Cryptocurrency Exchanges</title><link>https://www.poeticoding.com/phoenix-liveview-intro-to-cryptocurrency-exchanges/</link><pubDate>Tue, 23 Mar 2021 16:22:16 +0000</pubDate><guid>https://www.poeticoding.com/phoenix-liveview-intro-to-cryptocurrency-exchanges/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/tu40uo7Jq7g" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://www.poeticoding.com/introductory-phoenix-liveview-course/">Course Index page&lt;/a>&lt;/p>
&lt;p>I&amp;rsquo;ve decided to build this Phoenix LiveView course around a Cryptocurrency dashboard example because Cryptocurrency Exchanges are a fantastic, often public, source of realtime data. Don&amp;rsquo;t be scared if you don&amp;rsquo;t know anything about cryptocurrencies or exchanges, I&amp;rsquo;m going to explain everything we need to start playing with this data.&lt;/p></description></item><item><title>Compile Elixir applications into single executable binaries, with Bakeware</title><link>https://www.poeticoding.com/compile-elixir-applications-into-single-executable-binaries-with-bakeware/</link><pubDate>Thu, 22 Oct 2020 16:24:50 +0000</pubDate><guid>https://www.poeticoding.com/compile-elixir-applications-into-single-executable-binaries-with-bakeware/</guid><description>&lt;div class="video">&lt;iframe src="https://www.youtube-nocookie.com/embed/ML5hQjPQL7A" title="YouTube video" loading="lazy" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen referrerpolicy="strict-origin-when-cross-origin">&lt;/iframe>&lt;/div>

&lt;p>&lt;a href="https://github.com/spawnfest/bakeware/" target="_blank" rel="noopener">Bakeware&lt;/a> is a new fantastic tool, built (by &lt;a href="https://github.com/fhunleth" target="_blank" rel="noopener">Frank Hunleth&lt;/a>, &lt;a href="https://github.com/jjcarstens" target="_blank" rel="noopener">Jon Carstens&lt;/a> and &lt;a href="https://github.com/ConnorRigby" target="_blank" rel="noopener">Connor Rigby&lt;/a>) over a weekend for the &lt;a href="https://spawnfest.github.io/" target="_blank" rel="noopener">SpawnFest 2020&lt;/a>, which compiles an Elixir, a Scenic or a Phoenix application into single executable binary (yes, like go-lang!). It can be extremely useful to distribute our apps, especially when they are command-line tools or Scenic applications.&lt;/p></description></item><item><title>Yet Another Guide To Build a JSON API with Phoenix 1.5</title><link>https://www.poeticoding.com/another-guide-to-build-a-json-api-with-phoenix-1-5/</link><pubDate>Tue, 06 Oct 2020 20:36:16 +0000</pubDate><guid>https://www.poeticoding.com/another-guide-to-build-a-json-api-with-phoenix-1-5/</guid><description>&lt;p>We are going to build a polling app step-by-step. It will be similar to &lt;a href="http://strawpoll.me/" target="_blank" rel="noopener">strawpoll.me&lt;/a> where users can create and vote on polls and see the results in real-time.&lt;/p>
&lt;figure>&lt;img src="https://www.poeticoding.com/another-guide-to-build-a-json-api-with-phoenix-1-5/aa_strawpoll.png" alt="" loading="lazy" width="1398" height="606">&lt;/figure>&lt;p>In this blogpost we will only create the basic version of this app and in later blog posts we will add more features like authentication, ip blocking, different voting types and more.&lt;/p></description></item><item><title>LiveView click event and offsetX, offsetY coordinates</title><link>https://www.poeticoding.com/liveview-click-event-and-offsetx-offsety-coordinates/</link><pubDate>Thu, 19 Mar 2020 17:05:47 +0000</pubDate><guid>https://www.poeticoding.com/liveview-click-event-and-offsetx-offsety-coordinates/</guid><description>&lt;p>&lt;a href="https://www.poeticoding.com/how-to-setup-phoenix-liveview/">Phoenix LiveView&lt;/a> plays fantastically well with SVG elements, making really easy to render dynamic images, without writing any JavaScript code.&lt;/p>
&lt;p>There are different &lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#module-bindings" target="_blank" rel="noopener">bindings&lt;/a> we can use to register and react to user interaction, one of these is &lt;code>phx-click&lt;/code>. By adding &lt;code>phx-click=&amp;quot;clicked&amp;quot;&lt;/code> attribute to an element in our LiveView, when user clicks the element, a &lt;code>&amp;quot;clicked&amp;quot;&lt;/code> event is sent to the LiveView process.&lt;/p></description></item><item><title>Phoenix LiveView JavaScript Hooks and Select2</title><link>https://www.poeticoding.com/phoenix-liveview-javascript-hooks-and-select2/</link><pubDate>Wed, 05 Feb 2020 11:48:10 +0000</pubDate><guid>https://www.poeticoding.com/phoenix-liveview-javascript-hooks-and-select2/</guid><description>&lt;p>&lt;a href="https://www.poeticoding.com/using-select2-with-phoenix-liveview/">We&amp;rsquo;ve already played with Select2 and LiveView&lt;/a>, it was before the release of &lt;a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#module-js-interop-and-client-controlled-dom" target="_blank" rel="noopener">LiveView JS Hooks&lt;/a>. To make select2 work with LiveView we had to listen to &lt;code>phx:update&lt;/code> generic javascript events, re-initialize select2 and use a workaround to push events from the browser to LiveView.&lt;/p></description></item><item><title>Real-time Object Detection with Phoenix and Python</title><link>https://www.poeticoding.com/real-time-object-detection-with-phoenix-and-python/</link><pubDate>Thu, 16 Jan 2020 18:43:14 +0000</pubDate><guid>https://www.poeticoding.com/real-time-object-detection-with-phoenix-and-python/</guid><description>&lt;p>This article is not just about Machine Learning and Object Detection, it&amp;rsquo;s about Elixir interoperability and how we can take advantage of the Python&amp;rsquo;s fantastic set of ML libraries, bringing their features into the Elixir world.&lt;/p>
&lt;p>We see how to bring &lt;a href="https://pjreddie.com/darknet/yolo/" target="_blank" rel="noopener">YOLO&lt;/a>, a state-of-the-art real-time object detection system, in a Phoenix web app.&lt;/p></description></item></channel></rss>