<?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: Iurii</title>
    <description>The latest articles on Forem by Iurii (@iuriik).</description>
    <link>https://forem.com/iuriik</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%2F3846133%2F63493386-4079-40a8-9a66-f0a9df70d539.png</url>
      <title>Forem: Iurii</title>
      <link>https://forem.com/iuriik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/iuriik"/>
    <language>en</language>
    <item>
      <title>React i18n but ugly</title>
      <dc:creator>Iurii</dc:creator>
      <pubDate>Wed, 08 Apr 2026 10:11:35 +0000</pubDate>
      <link>https://forem.com/iuriik/react-i18n-but-ugly-5a34</link>
      <guid>https://forem.com/iuriik/react-i18n-but-ugly-5a34</guid>
      <description>&lt;p&gt;Behold! A backend developer will teach you how to frontend.&lt;/p&gt;

&lt;p&gt;But the main point is to demonstrate how to engineer an ugly solution of already solved problem that makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scope
&lt;/h2&gt;

&lt;p&gt;Mostly static site, React, Next.js App Router, markdown blog with multiple languages.&lt;/p&gt;

&lt;p&gt;Readily available: react-intl or i18next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem #1
&lt;/h3&gt;

&lt;p&gt;output: "export" means no middleware, no cookies, no runtime detection — we rely on the filesystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problem #2 (the showstopper)
&lt;/h3&gt;

&lt;p&gt;What you’re “supposed” to do is to create and maintain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;messages-en.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;messages-es.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;messages-fr.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;....&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I need to repeat the website structure in each of these files&lt;/li&gt;
&lt;li&gt;Every time I need to add, tweak, or move a button, I need to modify all messages-${lang}.json files simultaneously&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iurii.net/en/blog/posts/software-engineering/react-i18n-but-ugly/" rel="noopener noreferrer"&gt;Full version at iurii.net — no ads, no tracking, no inbox spam.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Makefiles for Python and beyond</title>
      <dc:creator>Iurii</dc:creator>
      <pubDate>Tue, 31 Mar 2026 12:35:15 +0000</pubDate>
      <link>https://forem.com/iuriik/makefiles-for-python-and-beyond-3hb1</link>
      <guid>https://forem.com/iuriik/makefiles-for-python-and-beyond-3hb1</guid>
      <description>&lt;p&gt;Makefiles are quite unpopular in the dynamic languages world. Some Python and JavaScript developers consider GNU make an ancient, deprecated, outdated, and dying tool, used by some dinosaurs.&lt;/p&gt;

&lt;p&gt;The truth is: make is a wonderful and often misunderstood tool. It is fairly simple yet very powerful. Hell, source-based Linux distros and BSD operating systems heavily rely on make.&lt;/p&gt;

&lt;p&gt;There are many application for Makefiles outside of C/C++ world, and I think that make deserves more attention and love.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does Python even need a Makefile?
&lt;/h2&gt;

&lt;p&gt;The short answer is: to avoid the “It worked on my machine” situation. Python does a very good job to abstract OS layer, although Python application still needs some kind of packaging before it can be distributed, or deployed to a server.&lt;/p&gt;

&lt;p&gt;In general, Makefile is a good alternative to a bunch of bash scripts used to automate tedious tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iurii.net/en/blog/posts/software-engineering/makefiles-for-python-and-beyond/" rel="noopener noreferrer"&gt;Full version at iurii.net — no ads, no tracking, no inbox spam.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>makefile</category>
      <category>cicd</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>How to optimize modern C and C++ code</title>
      <dc:creator>Iurii</dc:creator>
      <pubDate>Mon, 30 Mar 2026 11:03:07 +0000</pubDate>
      <link>https://forem.com/iuriik/how-to-optimize-modern-c-and-c-code-1oeb</link>
      <guid>https://forem.com/iuriik/how-to-optimize-modern-c-and-c-code-1oeb</guid>
      <description>&lt;h2&gt;
  
  
  Performance matters
&lt;/h2&gt;

&lt;p&gt;We are still limited by our current hardware. There are numerous areas where it just not good enough: neural networks and virtual reality to name a few. There are plenty of devices where battery life is crucial, and we must count every single CPU tick. Even when we’re talking about clouds and microservices and lambdas, there are enormous data centers that consume vast amounts of electricity.&lt;/p&gt;

&lt;p&gt;Even boring tests routine may quietly start to take 5 hours to run. And this is tricky. Program performance doesn‘t matter, only until it does.&lt;/p&gt;

&lt;p&gt;A modern way to squeeze performance out of silicon is to make hardware more and more sophisticated.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We’re going into the times where computers are tiny, cores are many, memory is a bottleneck (praying behavior to be defined).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://iurii.net/en/blog/posts/software-engineering/how-to-optimize-c-and-c---code-in-2018/" rel="noopener noreferrer"&gt;Full version at iurii.net — no ads, no tracking, no inbox spam.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>c</category>
      <category>gcc</category>
      <category>performance</category>
    </item>
    <item>
      <title>Why We Should Stop Working on Pet Projects</title>
      <dc:creator>Iurii</dc:creator>
      <pubDate>Sun, 29 Mar 2026 13:00:26 +0000</pubDate>
      <link>https://forem.com/iuriik/why-we-should-stop-working-on-pet-projects-4chj</link>
      <guid>https://forem.com/iuriik/why-we-should-stop-working-on-pet-projects-4chj</guid>
      <description>&lt;p&gt;Do you like to get stuff done? Have you started pet projects several times and then never finished them? Have you been working on the same personal project for a couple of years?&lt;br&gt;
Do you plan to start a side project in your free time?&lt;/p&gt;

&lt;p&gt;I have a whole cemetery of unfinished projects. Although, it's all OK at my day job; I get stuff done on time there.&lt;/p&gt;

&lt;p&gt;This situation is not surprising. A pet project means to be all fun while finishing requires monotonous, dull polishing. However, at some point, I figured out that I want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;to see how stuff from my head actually works, and maybe even helps others;&lt;/li&gt;
&lt;li&gt;to really learn something — by starting over and over I barely scratch the surface;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, I finally decided to finish at least one of them. However, I had to figure out what kept me from making progress in the first place...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iurii.net/en/blog/posts/software-engineering/why-we-should-stop-working-on-pet-projects/" rel="noopener noreferrer"&gt;Full version at iurii.net — no ads, no tracking, no inbox spam.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>pet</category>
      <category>watercooler</category>
      <category>development</category>
    </item>
  </channel>
</rss>
