<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Luiz Kowalski :: dev blog</title><description>Notes and findings from a Ruby developer</description><link>https://v2.luizkowalski.net/</link><item><title>Deploying Spring Cloud Netflix apps on Kubernetes</title><link>https://v2.luizkowalski.net/blog/deploying-spring-cloud-netflix-apps-on-kubernetes/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/deploying-spring-cloud-netflix-apps-on-kubernetes/</guid><description>If you are deploying containers on production, Kubernetes is a no-brainer solution. It takes some time to get familiar with all concepts but once you understand it, piece of cake 🍰.


So today I wann</description><pubDate>Mon, 30 Oct 2017 09:19:03 GMT</pubDate></item><item><title>Double-click to submit form pattern with Stimulus (revisited)</title><link>https://v2.luizkowalski.net/blog/double-click-to-submit-form-pattern-with-stimulus-revisited/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/double-click-to-submit-form-pattern-with-stimulus-revisited/</guid><description>Some months ago, I wrote about something I built, a component to submit forms with a double-click, where the user has to confirm the action, potentially avoiding miss-clicks and doing something irreve</description><pubDate>Tue, 01 Apr 2025 15:07:22 GMT</pubDate></item><item><title>&quot;Double-click to submit&quot; pattern with Stimulus</title><link>https://v2.luizkowalski.net/blog/double-click-to-submit-pattern-with-stimulus/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/double-click-to-submit-pattern-with-stimulus/</guid><description>While tinkering around with a home lab and CasaOS, I encountered this pattern where certain actions require a &quot;double click&quot;, like this:

I wanted to see how hard it was to copy this with Stimulus, an</description><pubDate>Wed, 25 Sep 2024 13:50:07 GMT</pubDate></item><item><title>Encapsulation in Ruby on Rails</title><link>https://v2.luizkowalski.net/blog/encapsulation-in-ruby-on-rails/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/encapsulation-in-ruby-on-rails/</guid><description>In Object-Oriented Programming, encapsulation is one of the fundamentals concept. Understand encapsulation will help you write concise and easy to maintain code. But what exactly is encapsulation? If </description><pubDate>Fri, 26 Oct 2018 14:18:20 GMT</pubDate></item><item><title>A simple solution to scalability problems: Event Sourcing</title><link>https://v2.luizkowalski.net/blog/event-sourcing-with-spring-boot-and-kotlin/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/event-sourcing-with-spring-boot-and-kotlin/</guid><description>In the past months I&apos;ve been playing around with Kotlin and Spring&apos;s event sourcing engine. To get to know it better, I build a really simple clone of Untappd. If you don&apos;t know Untappd, a tl;dr is: F</description><pubDate>Mon, 30 Jul 2018 12:04:54 GMT</pubDate></item><item><title>Netflix OSS: A beginner&apos;s guide [pt1]</title><link>https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt1/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt1/</guid><description>In this series of posts, I&apos;ll try to get you inside the Netflix stack: understand how it works and get your feet wet in the microservices world.


So, to begin, we need to know the first component of </description><pubDate>Tue, 07 Jun 2016 19:51:33 GMT</pubDate></item><item><title>Netflix OSS: A beginner&apos;s guide [pt2]</title><link>https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt2/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt2/</guid><description>In the last post, I showed how to create a Eureka server. Now we&apos;ll go through the process of creating microservice and register it on Eureka.


To begin, you can create a simple project with one enti</description><pubDate>Tue, 21 Jun 2016 20:20:26 GMT</pubDate></item><item><title>Netflix OSS: A beginner&apos;s guide [pt3]</title><link>https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt3/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt3/</guid><description>So far, we created an Eureka server, a microservice and registered it in Eureka.

You can access this microservice directly through his IP, but later, when you service grow and you need to scale it, p</description><pubDate>Mon, 10 Oct 2016 20:09:31 GMT</pubDate></item><item><title>Netflix OSS: A beginner&apos;s guide [pt4]</title><link>https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt4/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/netflix-oss-a-beginners-guide-pt4/</guid><description>When a system grows, you need some kind of monitoring as well. If you have a monolithic app, that is not really a hard task, but when it comes to microservices word, things change.

How to keep track </description><pubDate>Thu, 24 Nov 2016 13:53:11 GMT</pubDate></item><item><title>Production-Grade (ish) Rails deployment on Hetzner with Kamal</title><link>https://v2.luizkowalski.net/blog/production-grade-ish-deployment-on-hetzner-with-kamal/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/production-grade-ish-deployment-on-hetzner-with-kamal/</guid><description>I&apos;ve been toying around with Kamal for some time now, and I believe I have come up with a nice setup for a reasonably robust deployment. It includes two servers, one for the application and another fo</description><pubDate>Sun, 21 Jan 2024 20:47:52 GMT</pubDate></item><item><title>Refactoring legacy Ruby on Rails apps</title><link>https://v2.luizkowalski.net/blog/refactoring-legacy-ruby-on-rails-apps/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/refactoring-legacy-ruby-on-rails-apps/</guid><description>I have this idea: Chathub, an app that turns Github&apos;s organizations and/or repositories into chat rooms, pretty much like Gitter. I use this idea every time I want to build a new PoC. So I did it in R</description><pubDate>Thu, 24 Nov 2016 18:37:13 GMT</pubDate></item><item><title>Taming complex Service Objects with dry-rb</title><link>https://v2.luizkowalski.net/blog/taming-complex-service-objects-with-dry/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/taming-complex-service-objects-with-dry/</guid><description>As your Rails app grows, MVC feels inadequate. Should I put complex business rules in the models or the controllers? Should I just put everything in Concerns? At this point, most developers fall back </description><pubDate>Sun, 07 Aug 2022 21:50:52 GMT</pubDate></item><item><title>Traefik with Kamal: Tips and Tricks</title><link>https://v2.luizkowalski.net/blog/traefik-with-kamal-tips-and-tricks/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/traefik-with-kamal-tips-and-tricks/</guid><description>It took me some time to finally figure out Traefik and some more time to put two and two together, so I&apos;d like to share some things I learned on how to get it to work smoothly with Kamal.

Traefik is </description><pubDate>Sat, 10 Feb 2024 15:48:15 GMT</pubDate></item><item><title>Using concurrent-ruby in a Rails application</title><link>https://v2.luizkowalski.net/blog/using-concurrent-ruby-in-a-rails-application/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/using-concurrent-ruby-in-a-rails-application/</guid><description>Concurrency in Ruby is still a gray zone for many developers. If you know anything about concurrency, you probably know that Ruby is thread-safe by default because the Global VM Lock only uses one thr</description><pubDate>Sun, 18 Apr 2021 17:37:31 GMT</pubDate></item><item><title>Validating Mandrill webhook signature on Ruby on Rails</title><link>https://v2.luizkowalski.net/blog/validating-mandrill-webhook-signatures-on-rails/</link><guid isPermaLink="true">https://v2.luizkowalski.net/blog/validating-mandrill-webhook-signatures-on-rails/</guid><description>I&apos;m writing this post partially because I couldn&apos;t find anything exactly like this and to keep a log for me, in case I have to deal with this once again.

Since Mandrill does not provide a way to auth</description><pubDate>Fri, 24 Apr 2020 16:44:42 GMT</pubDate></item></channel></rss>