<?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>Forem: Eugene Kuzmenko</title>
    <description>The latest articles on Forem by Eugene Kuzmenko (@thealjey).</description>
    <link>https://forem.com/thealjey</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%2F468434%2Fa538b0e0-db9b-4024-8419-a5a21a59e99e.jpeg</url>
      <title>Forem: Eugene Kuzmenko</title>
      <link>https://forem.com/thealjey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/thealjey"/>
    <language>en</language>
    <item>
      <title>HTMX vs KEML: The Loading State Example That Shows the Difference</title>
      <dc:creator>Eugene Kuzmenko</dc:creator>
      <pubDate>Tue, 14 Apr 2026 09:11:32 +0000</pubDate>
      <link>https://forem.com/thealjey/htmx-vs-keml-the-loading-state-example-that-shows-the-difference-2h9i</link>
      <guid>https://forem.com/thealjey/htmx-vs-keml-the-loading-state-example-that-shows-the-difference-2h9i</guid>
      <description>&lt;p&gt;A while ago, I wrote about KEML.&lt;/p&gt;

&lt;p&gt;It didn’t land the way I wanted it to.&lt;/p&gt;

&lt;p&gt;Not because the idea was bad — but because the examples were.&lt;br&gt;
I showed things that tools like HTMX already do very well:&lt;br&gt;
send a request on click, render a response, repeat.&lt;/p&gt;

&lt;p&gt;And if that’s all you see, then yeah — KEML just looks like different syntax.&lt;/p&gt;

&lt;p&gt;This time, I want to show something that actually &lt;em&gt;feels&lt;/em&gt; different.&lt;/p&gt;


&lt;h2&gt;
  
  
  The smallest interesting example: loading state
&lt;/h2&gt;

&lt;p&gt;Let’s start with a very real UI problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Show a loading indicator while a request is in progress.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  The HTMX way
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; 
  &lt;span class="na"&gt;hx-get=&lt;/span&gt;&lt;span class="s"&gt;"/data"&lt;/span&gt;
  &lt;span class="na"&gt;hx-target=&lt;/span&gt;&lt;span class="s"&gt;"#result"&lt;/span&gt;
  &lt;span class="na"&gt;hx-indicator=&lt;/span&gt;&lt;span class="s"&gt;"#spinner"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Load Data
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"spinner"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"htmx-indicator"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Loading...
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.htmx-indicator&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.htmx-request&lt;/span&gt; &lt;span class="nc"&gt;.htmx-indicator&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.htmx-request.htmx-indicator&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This works well. It’s concise. It’s idiomatic.&lt;/p&gt;

&lt;p&gt;But notice what’s happening:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the button &lt;strong&gt;references&lt;/strong&gt; the spinner (&lt;code&gt;#spinner&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;the button &lt;strong&gt;references&lt;/strong&gt; the result (&lt;code&gt;#result&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;loading is a &lt;strong&gt;special concept&lt;/strong&gt; (&lt;code&gt;hx-indicator&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;visibility is controlled &lt;strong&gt;indirectly via CSS&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing here is &lt;em&gt;wrong&lt;/em&gt;. But everything is &lt;em&gt;connected&lt;/em&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  The same thing in KEML
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
  &lt;span class="na"&gt;on:click=&lt;/span&gt;&lt;span class="s"&gt;"send"&lt;/span&gt;
  &lt;span class="na"&gt;on=&lt;/span&gt;&lt;span class="s"&gt;"send"&lt;/span&gt;
  &lt;span class="na"&gt;get=&lt;/span&gt;&lt;span class="s"&gt;"/data"&lt;/span&gt;
  &lt;span class="na"&gt;result=&lt;/span&gt;&lt;span class="s"&gt;"response"&lt;/span&gt;
  &lt;span class="na"&gt;if:loading=&lt;/span&gt;&lt;span class="s"&gt;"spinner"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Load Data
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;if=&lt;/span&gt;&lt;span class="s"&gt;"spinner"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"display:none;"&lt;/span&gt; &lt;span class="na"&gt;x-style=&lt;/span&gt;&lt;span class="s"&gt;"display:block;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Loading...
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;render=&lt;/span&gt;&lt;span class="s"&gt;"response"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If this idea feels interesting, you can explore the details here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thealjey.github.io/keml" rel="noopener noreferrer"&gt;https://thealjey.github.io/keml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  What just changed?
&lt;/h2&gt;

&lt;p&gt;At first glance, not much.&lt;/p&gt;

&lt;p&gt;But the mental model is completely different.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. No element references
&lt;/h3&gt;

&lt;p&gt;The button does &lt;strong&gt;not know&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where the response will render&lt;/li&gt;
&lt;li&gt;where the loading indicator lives&lt;/li&gt;
&lt;li&gt;whether either of them even exists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the other elements don’t know about the button.&lt;/p&gt;

&lt;p&gt;They just react.&lt;/p&gt;



&lt;p&gt;One practical benefit of this approach is that these connections are no longer just strings.&lt;/p&gt;

&lt;p&gt;Because actions are named identifiers, they can be statically analyzed and&lt;br&gt;
tooled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to definition / references&lt;/li&gt;
&lt;li&gt;detection of undefined or unused actions&lt;/li&gt;
&lt;li&gt;safe renaming across the codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes relationships between elements explicit and verifiable, rather than&lt;br&gt;
relying on runtime selector matching.&lt;/p&gt;


&lt;h3&gt;
  
  
  2. Everything is explicit
&lt;/h3&gt;

&lt;p&gt;There’s no hidden behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;on:click="send"&lt;/code&gt; → produces an action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;on="send"&lt;/code&gt; → consumes it and sends a request&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;result="response"&lt;/code&gt; → produces another action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;render="response"&lt;/code&gt; → consumes it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if:loading="spinner"&lt;/code&gt; → produces yet another action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if="spinner"&lt;/code&gt; → consumes it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No special cases. No magic elements. No CSS side channels.&lt;/p&gt;


&lt;h3&gt;
  
  
  3. “Loading” is not a feature
&lt;/h3&gt;

&lt;p&gt;There is no such thing as a “loading indicator” in KEML.&lt;/p&gt;

&lt;p&gt;There is only state.&lt;/p&gt;

&lt;p&gt;State is declared using the pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;if:&lt;span class="nt"&gt;&amp;lt;condition&amp;gt;&lt;/span&gt;="name1 name2 ..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;if:loading="spinner"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This simply declares a state action called &lt;code&gt;spinner&lt;/code&gt; that is activated during a loading request.&lt;/p&gt;

&lt;p&gt;And once state exists, anything can react to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;if=&lt;/span&gt;&lt;span class="s"&gt;"spinner"&lt;/span&gt; &lt;span class="na"&gt;x-style=&lt;/span&gt;&lt;span class="s"&gt;"display:block;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;This same pattern applies everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;if:error="..."&lt;/code&gt; → error state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if:invalid="..."&lt;/code&gt; → validation state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if:value="..."&lt;/code&gt; → input state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if:intersects="..."&lt;/code&gt; → visibility state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But none of these are special cases.&lt;/p&gt;

&lt;p&gt;They are all the same mechanism:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;if:&amp;lt;condition&amp;gt;&lt;/code&gt; defines state, and &lt;code&gt;if&lt;/code&gt; consumes it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The &lt;code&gt;if&lt;/code&gt; attribute has nothing to do with visibility (or loading) specifically.&lt;/p&gt;

&lt;p&gt;It allows elements to &lt;strong&gt;declaratively configure any attribute value in the DOM&lt;br&gt;
based on state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a state is ON, attributes prefixed with &lt;code&gt;x-&lt;/code&gt; temporarily override their&lt;br&gt;
base value.&lt;/p&gt;

&lt;p&gt;When the state is OFF, the original attribute values are restored.&lt;/p&gt;


&lt;h2&gt;
  
  
  The important difference
&lt;/h2&gt;

&lt;p&gt;The easiest way to describe it is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;KEML removes the need to reference other elements entirely.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In HTMX, you wire elements together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“send this request”&lt;/li&gt;
&lt;li&gt;“put the result there”&lt;/li&gt;
&lt;li&gt;“show that spinner”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In KEML, you name things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“this action happened”&lt;/li&gt;
&lt;li&gt;“this result exists”&lt;/li&gt;
&lt;li&gt;“this state is active”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the DOM reacts.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why this matters (even for small things)
&lt;/h2&gt;

&lt;p&gt;For a tiny example like this, both approaches are fine.&lt;/p&gt;

&lt;p&gt;But as things grow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more triggers&lt;/li&gt;
&lt;li&gt;more UI states&lt;/li&gt;
&lt;li&gt;more places that react&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Referencing elements starts to spread knowledge across your markup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IDs&lt;/li&gt;
&lt;li&gt;selectors&lt;/li&gt;
&lt;li&gt;coupling between unrelated parts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KEML doesn’t &lt;em&gt;prevent&lt;/em&gt; that.&lt;/p&gt;

&lt;p&gt;It just… doesn’t require it.&lt;/p&gt;


&lt;h2&gt;
  
  
  One small gotcha
&lt;/h2&gt;

&lt;p&gt;Actions are &lt;strong&gt;global&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So naming matters.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;on:click="loadData"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If multiple elements use &lt;code&gt;loadData&lt;/code&gt;, they will all react.&lt;/p&gt;

&lt;p&gt;This is intentional — but something to be aware of.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;KEML isn’t trying to replace HTMX.&lt;/p&gt;

&lt;p&gt;They’re aiming at the same idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;server-driven, HTML-first applications&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;KEML just takes a different route:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;instead of connecting elements, it lets them react to signals.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;If this made you pause for even a second — that’s enough.&lt;/p&gt;

&lt;p&gt;Give it 5 minutes.&lt;/p&gt;

&lt;p&gt;That’s all it really needs.&lt;/p&gt;

&lt;p&gt;If you want to try it in a real project, it takes very little setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docs → &lt;a href="https://thealjey.github.io/keml" rel="noopener noreferrer"&gt;https://thealjey.github.io/keml&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm → &lt;a href="https://www.npmjs.com/package/keml" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/keml&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub → &lt;a href="https://github.com/thealjey/keml" rel="noopener noreferrer"&gt;https://github.com/thealjey/keml&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>htmx</category>
      <category>html</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Keml: Empowering UI Development, One Developer at a Time</title>
      <dc:creator>Eugene Kuzmenko</dc:creator>
      <pubDate>Mon, 27 May 2024 20:41:31 +0000</pubDate>
      <link>https://forem.com/thealjey/keml-empowering-ui-development-one-developer-at-a-time-4e1n</link>
      <guid>https://forem.com/thealjey/keml-empowering-ui-development-one-developer-at-a-time-4e1n</guid>
      <description>&lt;p&gt;Hey Fellow Developers,&lt;/p&gt;

&lt;p&gt;I'm thrilled to introduce you to Keml – a small yet mighty alternative to HTMX that's poised to change the game in UI development. And the best part? It's crafted and maintained by just one person (that's me!).&lt;/p&gt;

&lt;p&gt;Here's why Keml deserves a spot in your toolkit:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Versatile Integration, Zero Hassle 🛠️
&lt;/h3&gt;

&lt;p&gt;With Keml, you're not tied down to a specific server-side stack. Whether you're rocking Node.js, PHP, Java, Python, or C#, Keml plays nice with them all. And guess what? Your server doesn't even need to know it's rendering Keml syntax – it's just standard HTML with a dash of extra custom attributes. Seamless integration, zero headaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Simplify UI Building with HTML-Extended Syntax 🏗️
&lt;/h3&gt;

&lt;p&gt;Say goodbye to cumbersome JavaScript coding! Keml's magic lies in its extended HTML syntax, designed to make UI development a breeze. Build highly interactive user interfaces directly within your HTML markup, no complicated scripts required.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Performance, Flexibility, Simplicity – All in One 🚀
&lt;/h3&gt;

&lt;p&gt;Keml isn't just about features; it's about delivering lightning-fast user experiences without the complexity. Think of it as your trusty sidekick, prioritizing performance, flexibility, and above all, simplicity. And since it's a one-person endeavor, your feedback and contributions carry extra weight in shaping Keml's future.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Early Stage Development, Honest Disclaimer 🚧
&lt;/h3&gt;

&lt;p&gt;Let's keep it real – Keml is still in its early stages of development. Bugs might pop up here and there, but with your help, we'll squash them in no time. Your input matters more than ever as we refine Keml and pave the way for smoother UI development.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Dive into Keml Today 🎨
&lt;/h3&gt;

&lt;p&gt;Ready to experience Keml firsthand? It's as easy as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- "install" the library --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/keml"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- initiate an action --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;on:click=&lt;/span&gt;&lt;span class="s"&gt;"updateCounter"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Click me!
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- send a post request on action --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;
  &lt;span class="na"&gt;on=&lt;/span&gt;&lt;span class="s"&gt;"updateCounter"&lt;/span&gt;
  &lt;span class="na"&gt;post=&lt;/span&gt;&lt;span class="s"&gt;"/increment"&lt;/span&gt;
  &lt;span class="na"&gt;result=&lt;/span&gt;&lt;span class="s"&gt;"counterValue"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- render responses --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
  Here we have the value of counter:
  &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;render=&lt;/span&gt;&lt;span class="s"&gt;"counterValue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;.
  And here it is again, but smaller:
  &lt;span class="nt"&gt;&amp;lt;small&lt;/span&gt; &lt;span class="na"&gt;render=&lt;/span&gt;&lt;span class="s"&gt;"counterValue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/small&amp;gt;&lt;/span&gt; ;)
&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Join me on this journey to simplify UI development, one line of code at a time. Have questions, feedback, or just want to say hi? Connect with me on GitHub. I'm all ears!&lt;/p&gt;

&lt;p&gt;Embrace simplicity with Keml – your partner in effortless UI magic! ✨&lt;/p&gt;

&lt;p&gt;This article was written with the help of ChatGPT. But, after reading and re-reading it a few dozen times, I realize that it perfectly and concisely formulates my own thoughts better than I, probably, ever could by myself without a great number of revisions and tweaks.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
&lt;a href="https://github.com/thealjey/keml"&gt;https://github.com/thealjey/keml&lt;/a&gt;&lt;/p&gt;

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