<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Hijrah Frontend on Faiq Najib</title>
		<link>https://najib.id/en/series/hijrah-frontend/</link>
		<description>Recent content in Hijrah Frontend on Faiq Najib</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
			<copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright>
		
		
			<lastBuildDate>Sun, 25 Oct 2026 20:06:14 +0700</lastBuildDate>
		
			<atom:link href="https://najib.id/en/series/hijrah-frontend/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Hijrah Frontend (5): Two Sides of One Building</title>
				<link>https://najib.id/en/writing/2026/hijrah-frontend-05/</link>
				<pubDate>Wed, 23 Sep 2026 09:00:05 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/hijrah-frontend-05/</guid>
				<description>&lt;p&gt;This is the final &lt;em&gt;frontend&lt;/em&gt; episode. Like the closing episode of &lt;a href=&#34;https://najib.id/en/writing/2026/hijrah-backend-09/&#34;&gt;the neighboring series&lt;/a&gt;, I don’t want to write as if every problem is solved. I just want to note what’s done, what we haven’t touched, and what I learned while looking after both sides of this building.&lt;/p&gt;&#xA;&lt;h2 id=&#34;let-me-check-the-inventory&#34;&gt;Let Me Check the Inventory &lt;a href=&#34;#let-me-check-the-inventory&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Four episodes ago, I started taking apart the inherited &lt;em&gt;frontend&lt;/em&gt; building. The port is done now, so here’s what’s in it:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Frontend (4): Two UI Libraries, Two Naming Eras</title>
				<link>https://najib.id/en/writing/2026/hijrah-frontend-04/</link>
				<pubDate>Wed, 23 Sep 2026 09:00:04 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/hijrah-frontend-04/</guid>
				<description>&lt;p&gt;In &lt;a href=&#34;https://najib.id/en/writing/2026/hijrah-frontend-02/&#34;&gt;episode two&lt;/a&gt; I mentioned the numbers: one UI library appears in 101 files, the other in just 13. This time I poked around a little more. I found two things that made me pause, then laugh at my screen, hehe.&lt;/p&gt;&#xA;&lt;p&gt;Turns out the two &lt;strong&gt;never appear in the same file&lt;/strong&gt;. And the less-used library has the components people look for most. Odd, right? Here is what I found.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-libraries-one-unwritten-boundary&#34;&gt;Two Libraries, One Unwritten Boundary &lt;a href=&#34;#two-libraries-one-unwritten-boundary&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The first library is used on more pages. It provides the &lt;em&gt;paginator&lt;/em&gt;, &lt;em&gt;button&lt;/em&gt;, &lt;em&gt;skeleton&lt;/em&gt;, &lt;em&gt;card&lt;/em&gt;, and even an image &lt;em&gt;galleria&lt;/em&gt;. Nearly every page uses one of its components; 101 files call it.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Frontend (3): Type Chaos, Numbers, Empty Strings, and Pages with Different Opinions</title>
				<link>https://najib.id/en/writing/2026/hijrah-frontend-03/</link>
				<pubDate>Wed, 23 Sep 2026 09:00:03 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/hijrah-frontend-03/</guid>
				<description>&lt;p&gt;Three pages sent the same field in different ways. One sent a number, another sent an empty string when there was no value, and the third wrapped a number in a string. These habits lasted for years, until the receiver changed to a system that would not guess.&lt;/p&gt;&#xA;&lt;p&gt;That is how &lt;em&gt;type chaos&lt;/em&gt; showed up. Nobody planned it, but I can still count the traces in our repo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;php-used-to-let-it-slide&#34;&gt;PHP Used to Let It Slide &lt;a href=&#34;#php-used-to-let-it-slide&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Back then the receiver was PHP, a very forgiving language when it comes to data types. Send &lt;code&gt;&amp;quot;123&amp;quot;&lt;/code&gt;, and it reads 123. Send &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;, and it treats it as empty. Send &lt;code&gt;null&lt;/code&gt;, and it acts as though it didn&amp;rsquo;t see it. For years, the pages didn&amp;rsquo;t need to think much about types because the language didn&amp;rsquo;t make an issue of them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Frontend (2): The Thin Port and the Inheritance That Boarded</title>
				<link>https://najib.id/en/writing/2026/hijrah-frontend-02/</link>
				<pubDate>Wed, 23 Sep 2026 09:00:02 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/hijrah-frontend-02/</guid>
				<description>&lt;p&gt;The move from &lt;a href=&#34;https://najib.id/en/writing/2026/hijrah-frontend-01/&#34;&gt;episode one&lt;/a&gt; is finally done. On handover day, the manifest had just one important number: &lt;strong&gt;seventy-six boxes in, seventy-six boxes out. Not a single page left behind.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nothing got left behind because that&amp;rsquo;s what we decided. Some things were brought on purpose, some boarded without an invitation, and one big plan was dropped in the end. Let me tell you one by one.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-zero-pages-were-left-behind&#34;&gt;Why Zero Pages Were Left Behind &lt;a href=&#34;#why-zero-pages-were-left-behind&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;ve ever moved house, you know the relief of saying, &amp;ldquo;just throw this one away&amp;rdquo;. A frontend migration has the same temptation. Deleting a page feels like tidying up the product while you&amp;rsquo;re at it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Frontend (1): When a Backend Engineer Is Told to Touch the Frontend</title>
				<link>https://najib.id/en/writing/2026/hijrah-frontend-01/</link>
				<pubDate>Wed, 23 Sep 2026 09:00:01 +0700</pubDate>
				<guid>https://najib.id/en/writing/2026/hijrah-frontend-01/</guid>
				<description>&lt;p&gt;The &lt;a href=&#34;https://najib.id/en/writing/2026/hijrah-backend-01/&#34;&gt;Hijrah Backend&lt;/a&gt; series is finally done. The GPS backend now runs on Go, its 14 domain modules are in order, and the endpoint that used to take 15 seconds is much faster. Alhamdulillah.&lt;/p&gt;&#xA;&lt;p&gt;Nah, now it&amp;rsquo;s the neighboring building&amp;rsquo;s turn: the frontend.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m a backend engineer. Most days I&amp;rsquo;m dealing with queries, indexes, binary packet parsers, and database welfare. The frontend is somewhere I usually visit as a tourist. Then I got asked to help take care of it. Not just stop by anymore, hehe~&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
