<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://bandithijo.pages.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bandithijo.pages.dev/" rel="alternate" type="text/html" hreflang="id" /><updated>2026-09-02T06:48:22+08:00</updated><id>https://bandithijo.pages.dev/feed.xml</id><title type="html">BanditHijo.dev | Blogs</title><subtitle>Here&apos;s where I started writing some notes that someday I will call it, a book</subtitle><author><name>Rizqi Nur Assyaufi</name></author><entry><title type="html">Block Akses Social Media di macOS via /etc/hosts</title><link href="https://bandithijo.pages.dev/blog/block-akses-social-media-di-macos-via-etc-hosts" rel="alternate" type="text/html" title="Block Akses Social Media di macOS via /etc/hosts" /><published>2026-08-22T10:00:00+08:00</published><updated>2026-08-22T10:00:00+08:00</updated><id>https://bandithijo.pages.dev/blog/block-akses-social-media-di-macos-via-etc-hosts</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/block-akses-social-media-di-macos-via-etc-hosts"><![CDATA[<p>Jika sosial media mulai terasa sebagai distraksi produktivitas kamu sehari-hari, mungkin sudah waktunya untuk break up dengan social media.</p>

<p>Tidak perlu sampai tutup akun. Sekedar membatasi akses atau bahkan menutup aksesnya, saya rasa sudah cukup.</p>

<p>Saya cenderung memilih untuk menutup aksesnya. Sehingga ketika saya buka browser dan mengakses alamat dari social media tertentu, browser akan menampilkan <code class="language-plaintext highlighter-rouge">ERR_CONNECTION_REFUSED</code> <em>This site can’t be reached</em>.</p>

<p>Dengan begitu, keinginan saya yang tadinya explosive untuk melihat social media, tiba-tiba dipatahkan karena aksesnya diblokir oleh system.</p>

<p>Saya memanfaatkan <code class="language-plaintext highlighter-rouge">/etc/hosts</code> untuk mendaftarkan alamat-alamat social media yang ingin saya batasi aksesnya.</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span>filename: /etc/hosts
<span class="c">##</span>
<span class="c"># Host Database</span>
<span class="c">#</span>
<span class="c"># localhost is used to configure the loopback interface</span>
<span class="c"># when the system is booting.  Do not change this entry.</span>
<span class="c">##</span>
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost

<span class="c"># Social Media</span>
127.0.0.1 facebook.com
127.0.0.1 www.facebook.com

127.0.0.1 threads.com
127.0.0.1 www.threads.com
127.0.0.1 threads.net
127.0.0.1 www.threads.net
127.0.0.1 57.144.14.192

127.0.0.1 instagram.com
127.0.0.1 www.instagram.com

127.0.0.1 twitter.com
127.0.0.1 www.twitter.com
127.0.0.1 x.com
127.0.0.1 www.x.com
</code></pre></div></div>

<p>Baris ke-11 ke bawah adalah daftar social media yang saya tambahkan untuk diblok.</p>

<p>Simpan perubahan terdapat file tersebut.</p>

<p>Dan jalankan command di bawah ini untuk mengaktifkannya.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dscacheutil -flushcache &amp;&amp; sudo killall -HUP mDNSResponder
</code></pre></div></div>

<p>Setelah command di atas dijalankan, coba kunjungi social media tadi lewat browser. Harusnya sudah tidak dapat diakses.</p>

<p>Jika ingin membuka aksesnya, tinggal comment saja alamat-alamat dari social media tersebut, simpan, dan jalankan lagi command di atas.</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="etchosts" /><summary type="html"><![CDATA[Salah satu distraksi ketika bekerja menggunakan laptop adalah Social Media. Disable saja aksesnya!]]></summary></entry><entry><title type="html">Hobi Baru, Journaling dengan Kertas</title><link href="https://bandithijo.pages.dev/blog/hobi-baru-journaling-dengan-kertas" rel="alternate" type="text/html" title="Hobi Baru, Journaling dengan Kertas" /><published>2026-08-17T02:05:00+08:00</published><updated>2026-08-17T02:05:00+08:00</updated><id>https://bandithijo.pages.dev/blog/hobi-baru-journaling-dengan-kertas</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/hobi-baru-journaling-dengan-kertas"><![CDATA[<h2 id="background-story">Background story</h2>

<p>Sejak beralih profesi dari belajar sel-sel tubuh manusia menjadi belajar byte-byte digital, saya sudah jarang sekali menulis dan mencatat di kertas. Semua catatan cenderung dalam bentuk digital.</p>

<p>Tapi di jaman serba AI ini saya malah menyenangi menulis journal dengan tulisan tangan di atas kertas.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_01.jpg" alt="gambar_1" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_02.jpg" alt="gambar_2" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_03.jpg" alt="gambar_3" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_04.jpg" alt="gambar_4" /></p>

<h2 id="apa-sebabnya-beralih-ke-paper">Apa sebabnya beralih ke paper?</h2>

<p>Sebab terbesarnya bisa jadi karena saya mulai menyenangi kembali membaca buku fisik. Sepanjang 2026 ini, saya banyak membaca buku fisik. Mungkin karena terlalu sering memegang kertas, saya jadi ingin menulis di atas kertas.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_05.jpg" alt="gambar_5" /></p>

<p>Karena berinteraksi dengan kertas, selain menulis, saya juga jadi tertarik untuk menggambar. Dari dulu saya ingin sekali bisa menggambar sketsa. Saya mulai dari yang paling sederhana dulu (setidaknya menurut saya sederhana) yaitu “doodle”. Karena saya tidak menyenangi menggunakan element stiker di jurnal saya, saya menggunakan element gambar untuk mengisi bagian-bagian yang kosong di jurnal.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_06.jpg" alt="gambar_6" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_07.jpg" alt="gambar_7" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-17-hobi-baru-journaling-dengan-kertas/gambar_08.jpg" alt="gambar_8" /></p>

<p>Sebab lain yang mendorong keinginan menulis di kertas lagi adalah karena masa-masa sekarang ini lagi cukup sering mati lampu. Dan jika sudah mati lampu, saya hanya bisa membaca, tapi begitu ingin mencatat hal-hal yang menurut saya menarik, belum tentu laptop saya masih hidup. Kertas menjadi solusi yang paling dekat.</p>

<h2 id="apa-yang-saya-rasakan-setelah-menjalani-journaling">Apa yang saya rasakan setelah menjalani journaling?</h2>

<ol>
  <li>Ternyata saya memiliki perbedaan kecepatan yang signifikan dalam menuangkan ide saat menulis tangan dengan mengetik. Menulis lebih lambat dalam proses mengcapture pikiran, ketimbang mengetik. Tapi hal ini bagus (menurut saya) karena berpikir lebih pelan, otak saya seperti memanfaatkan proses yang lambat itu untuk mengevaluasi statement saya sebelumnya apakah sudah tepat atau belum.</li>
  <li>Saya jadi tidak terlalu ingin menulis di sosial media (terkhusus Threads) tentang isi pikiran saya. Yang terkadang dapat menimbulkan gesekan dengan orang lain yang tidak sependapat. Menuangkan pendapat di journal ternyata lebih tenang. Tidak perlu ada gesekan dengan orang lain yang berbeda pendapat. Karena pendapat yang masih mentah, belum dipikirkan secara dalam, jika dibaca oleh publik tentu akan membuat banyak gesekan. Saya memilih menulis dan mengumpulkan pendapat-pendapat yang masih dangkal tersebut di dalam journal pribadi.</li>
  <li>Saya juga jadi bisa mencatat segala hal, selain ide, saya mencatat perilaku-perilaku orang yang saya lihat pada hari itu. Kenapa saya catat? Karena mungkin suatu hari saya akan tahu alasannya mengapa mereka melakukan itu. Catatan saya bukan catatan judgement terhadap perbuatan tersebut. Hal itu memberikan saya sudut pandang yang lebih luas tentang perilaku orang-orang. Memperkaya wawasan saya dalam berhubungan dengan orang lain. Agar saya dapat menghormati perliaku dan pendapat yang berbeda dari orang lain.</li>
  <li>Saya jadi mempunyai banyak hal untuk saya tulis. Ternyata banyak hal menarik dikehidupan saya sehari-hari yang baru saya sadari setelah saya coba untuk merekamnya dengan tulisan.</li>
  <li>Tulisan saya juga jadi lebih panjang. Tidak kehabisan kata-kata. Mungkin setelah ini, tulisan-tulisan di blog saya akan jadi lebih panjang dan bernarasi. Ahahaha.</li>
</ol>

<h2 id="apakah-saya-meninggalkan-catatan-digital">Apakah saya meninggalkan catatan digital?</h2>

<p>Tentu tidak. Sebenarnya saya tidak benar-benar “beralih” dan meninggalkan catatan digital. Journaling dengan kertas adalah temporary note yang saya jadikan alat untuk capture the something secara cepat. Lapisan pertama dari buah pikiran, gagasan, ide, opini, lain-lain. Saya juga mencatat log aktivitas saya di journal, misalnya log aktivitas membaca sebuah buku. Yang kesemuanya akan saya salin lagi ke catatan yang ada di komputer di akhir hari. Untuk log activity saya pakai <strong>toggl</strong>. Untuk hal-hal lain saya pakai <strong>org-roam</strong>. Jadi, saya mengkolaborasikan 2 jenis teknologi (teknologi konvensional dan teknologi modern) secara bersama-sama. Saya tidak memilih mana yang lebih baik dari keduanya. Saya pakai dan memanfaatkan keduanya.</p>

<h2 id="apakah-ada-tipe-buku-khusus-untuk-journal">Apakah ada tipe buku khusus untuk journal?</h2>

<p>Tidak ada. Karena saya pemula, saya memilih untuk menggunakan tipe kertas yang loose leave agar susunan dan urutannya dapat saya re-order. Karena kalau bentuknya buku, saya belum tahu akan seperti apa menyusun urutannya. Atau berapa buku yang akan saya pergunakan untuk jenis-jenis journalnya. Jadi sebagai permulaan saya memilih menggunakan tipe kertas loose leave. Ukuran kertas yang saya pergunakan adalah A6 untuk binder 6 ring.</p>

<h2 id="apakah-tulisan-tangan-harus-bagus">Apakah tulisan tangan harus bagus?</h2>

<p>Tidak perlu. Journal tidak untuk dibaca semua orang. Tulisan tangan saya juga tidak bagus. Saya ingat komentar dari om saya, ketika ia main ke kamar saya dan melihat tulisan saya saat sedang belajar, saat itu saya masih SD, ia bilang gini, “Bagaimanapun bentuk tulisannya kalau disusun dengan rapi sebaris-sebaris, pada akhirnya akan terlihat rapi satu halaman.” Waktu itu dicontohkannya tulisan di buku bergaris. Saya menulis dengan menempelkan huruf di garis. Yang om saya contohkan adalah menulis di tengah-tengah antara garis atas dan garis bawah. Magic! Seketika nuansa tulisannya jadi berubah. Jadi terlihat rapi. Lihatlah tulisan saya tidak bagus sama sekali. Mungkin hanya saya yang bisa baca. Karena beberapa huruf hilang di beberapa kata. Beberapa huruf juga bentuknya tidak sesuai.</p>

<h2 id="menulis-journal-untuk-anak-perempuan">Menulis journal untuk anak perempuan?</h2>

<p>Tidak setuju. Banyak catatan sejarah ditulis oleh laki-laki. Kalau kamu nonton film “The Last Samurai” (2003), Nathan Algren seorang US Army Captain yang ditawan oleh kelompok samurai, ia menulis journal, dan journalnya dipelajari oleh pemimpin kelompok samurai bernama Katsumoto. Katsumoto mempelajari bagaimana pola pikir dari tawanannnya melalui Journal milik Algren. Jadi, dari film ini kita belajar, nasibmu bisa saja berbeda jika kamu punya journal, dan journal tersebut jatuh ke tangan musuhmu. Wkwkwk.</p>

<h2 id="apa-yang-saya-tulis-di-journal-saya">Apa yang saya tulis di journal saya?</h2>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/Y37PrFJHmbA" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<p>(^_^)</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="journaling" /><summary type="html"><![CDATA[Di jaman serba AI seperti sekarang, saya malah menyenangi menulis journal dengan tulisan tangan di atas kertas.]]></summary></entry><entry><title type="html">Pasang Snippet di Emacs dengan Yasnippet</title><link href="https://bandithijo.pages.dev/blog/pasang-snippet-di-emacs-dengan-yasnippet" rel="alternate" type="text/html" title="Pasang Snippet di Emacs dengan Yasnippet" /><published>2026-08-08T21:22:00+08:00</published><updated>2026-08-08T21:22:00+08:00</updated><id>https://bandithijo.pages.dev/blog/pasang-snippet-di-emacs-dengan-yasnippet</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/pasang-snippet-di-emacs-dengan-yasnippet"><![CDATA[<h2 id="latar-belakang">Latar Belakang</h2>

<p>Snippet mempermudah membuat cetakan potongan kode yang sering digunakan agar dengan mudah dapat dipanggil saat membutuhkannya tanpa harus menulis ulang.</p>

<p>Saya sering memanfaatkan snippet terkhusus untk menulis blog ini. Beberapa aturan penulisan seperti yang ada di halaman <a href="/writing-rules/"><strong>‘Writing Rules’</strong></a>, saya buat agar penulisan sintaks markdown di blog ini dapat tetap konsisten. Untuk itu saya memerlukan snippet agar setiap format penulisan yang sudah saya susun dapat konsisten di setiap artikel yang ditulis.</p>

<p>Berikut ini pengalaman saya memasang snippets system di Emacs dengan Yasnippet.</p>

<h2 id="instalasi-package">Instalasi Package</h2>

<h3 id="package-yasnippet">Package yasnippet</h3>

<p>Package yasnippet adalah package utamanya untuk memasang <em>snippet engine</em> di Emacs.</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">use-package</span> <span class="nv">yasnippet</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:diminish</span> <span class="nv">yas-minor-mode</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="nv">yas-global-mode</span> <span class="mi">1</span><span class="p">))</span>
</code></pre></div></div>

<h3 id="package-yasnippet-snippets">Package yasnippet-snippets</h3>

<p>Package yasnippet-snippets ini merupakan package tambahan yang berisi <em>collection of snippets</em> yang sudah siap untuk digunakan untuk berbagai macam bahasa pemrograman.</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">use-package</span> <span class="nv">yasnippet-snippets</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:after</span> <span class="nv">yasnippet</span><span class="p">)</span>
</code></pre></div></div>

<h3 id="package-yasnippet-capf">Package yasnippet-capf</h3>

<p>Package yasnippet-capf untuk auto completion yang digunakan oleh capf (Completion-At-Point Function).</p>

<p>Requirement-nya mengharuskan sudah memasang package <code class="language-plaintext highlighter-rouge">yasnippet</code> dan <code class="language-plaintext highlighter-rouge">cape</code> terlebih dahulu.</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">unless</span> <span class="p">(</span><span class="nv">package-installed-p</span> <span class="ss">'yasnippet-capf</span><span class="p">)</span>
  <span class="p">(</span><span class="nv">package-vc-install</span> <span class="s">"https://github.com/elken/yasnippet-capf"</span><span class="p">))</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nv">yasnippet-capf</span>
  <span class="ss">:after</span> <span class="p">(</span><span class="nv">yasnippet</span> <span class="nv">cape</span><span class="p">)</span>
  <span class="ss">:init</span>
  <span class="p">(</span><span class="nv">add-hook</span> <span class="ss">'yas-minor-mode-hook</span>
		<span class="p">(</span><span class="k">lambda</span> <span class="p">()</span>
	  <span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'completion-at-point-functions</span> <span class="nf">#'</span><span class="nv">yasnippet-capf</span><span class="p">))))</span>
</code></pre></div></div>

<h2 id="definisikan-snippets">Definisikan Snippets</h2>

<p>Cara mendefinisikan snippet di yasnippet sangat mudah.</p>

<p>Buat direktori untuk menampung snippet files di dalam direktori Emacs config bernama <code class="language-plaintext highlighter-rouge">snippets/</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.emacs.d/
│ snippets/
│ └ markdown-mode/
│   │ bandithijo-front-matter
│   │ bandithijo-link-referensi
│   └ bandithijo-blockcode
└ init.el
</code></pre></div></div>

<p>Kemudian buat subdirektori sesuai mode nya. Dan snippet files diorganisir di dalam direktori tersebut sesuai dengan modenya. Dalam hal ini <code class="language-plaintext highlighter-rouge">mardown-mode</code>.</p>

<p>Berikut ini beberapa contoh snippet yang saya gunakan untuk markdown-mode di blog saya.</p>

<pre><code class="language-snippet">!filename: ~/.emacs.d/snippets/markdown-mode/bandithijo-blockcode
# -*- mode: snippet -*-
# expand-env: ((yas-indent-line 'fixed))
# name: bandithijo:blockcode
# key: bandithijo:blockcode
# --
\`\`\`${1:ruby}
${2:put your code here...}
\`\`\`
$0
</code></pre>

<pre><code class="language-snippet">!filename: ~/.emacs.d/snippets/markdown-mode/bandithijo-link-referensi
# -*- mode: snippet -*-
# expand-env: ((yas-indent-line 'fixed))
# name: bandithijo:link-referensi
# key: bandithijo:link-referensi
# --
${1:1}. [${2:label}](${3:url}) \
   Diakses tanggal: ${4:2026-01-01}
$0
</code></pre>

<pre><code class="language-snippet">!filename: ~/.emacs.d/snippets/markdown-mode/bandithijo-front-matter
# -*- mode: snippet -*-
# expand-env: ((yas-indent-line 'fixed))
# name: bandithijo:front-matter
# key: bandithijo:front-matter
# --
---
layout: "post"
title: "${1:Put Your Title Here}"
date: "${2:YYYY-MM-DD HH:MM}"
permalink: "/blog/:title"
author: "BanditHijo"
category: "blog"
tags: [$3]
description: "${4:Put your description here.}"
---
$0
</code></pre>

<h2 id="melihat-daftar-snippets">Melihat Daftar Snippets</h2>

<p>Untuk melihat daftar snippets, sebelumnya harus aktif pada suatu mode tertentu. Atau pada buffer yang sedang menggunakan mode snippet yang ingin dilihat tersebut.</p>

<p>Misal dalam hal ini adalah <strong>markdown-mode</strong>. Maka dari buffer dengan <strong>markdown-mode</strong> tersebut saya menjalankan command, <kbd>M-x</kbd>. Kemudian cari <code class="language-plaintext highlighter-rouge">yas-describe-tables</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>M-x yas-describe-tables
</code></pre></div></div>

<p>Nanti akan keluar buffer baru dalam mode <strong>Help</strong> yang menampilkan daftar snippets pada mode yang kita gunakan (dalam hal ini <strong>markdown-mode</strong>).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>YASnippet tables:

Snippet table `markdown-mode'
----------------------------------------------------------------------------------------------------
group                   state name                                    key             binding
----------------------------------------------------------------------------------------------------
(top level)               (a) bandithijo:blockcode                    bandithijo:b...
                          (a) bandithijo:blockcode-filename           bandithijo:b...
                          (a) bandithijo:front-matter                 bandithijo:f...
                          (a) bandithijo:image                        bandithijo:i...
                          (a) bandithijo:link-referensi               bandithijo:l...
</code></pre></div></div>

<h2 id="pesan-penulis">Pesan Penulis</h2>

<p>Dengan menggunakan snippet dalam menulis kode atau menulis apapun, kita tidak lagi direpotkan dengan menulis format yang berulang yang merupakan hal yang trivial. Kita tinggal fokus ke apa yang kita tulis, bukan ke format yang mau kita gunakan.</p>

<p>Yeah, that’s it! I think that’s all that I want to write.</p>

<p>Thank you!</p>

<h2 id="referensi">Referensi</h2>

<ol>
  <li><a href="https://github.com/joaotavora/yasnippet">GitHub: joaotavora/yasnippet</a> <br />
Diakses tanggal: 2026-08-09</li>
</ol>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="emacs" /><category term="snippets" /><summary type="html"><![CDATA[Snippet mempermudah membuat cetakan potongan kode yang sering digunakan agar dengan mudah dapat dipanggil saat membutuhkannya tanpa harus menulis ulang. Berikut ini pengalaman saya memasang snippets system di Emacs dengan Yasnippet.]]></summary></entry><entry><title type="html">Konfigurasi Emacs dengan Org-mode</title><link href="https://bandithijo.pages.dev/blog/konfigurasi-emacs-dengan-org-mode" rel="alternate" type="text/html" title="Konfigurasi Emacs dengan Org-mode" /><published>2026-08-07T20:01:00+08:00</published><updated>2026-08-07T20:01:00+08:00</updated><id>https://bandithijo.pages.dev/blog/konfigurasi-emacs-dengan-org-mode</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/konfigurasi-emacs-dengan-org-mode"><![CDATA[<h2 id="background-story">Background Story</h2>

<p>Org-mode adalah salah satu alasan yang sering saya dengar yang membuat vim user pindah menggunakan Emacs. Salah satu kelebihan Org-mode adalah konsep Literate Programming, dimana menulis dokumentasi dan code program dalam satu file yang sama.. Seperti yang sudah pernah saya tulis pada artikel sebelumnya, <a href="/blog/10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs#lagi-lagi-tentang-org-mode"><strong>10 Tahun Pakai Vim, Akhirnya Migrasi ke Emacs</strong></a>.</p>

<p>Saya akan memigrasikan file konfigurasi Emacs yang defaultnya menggunakan format Emacs-lisp <code class="language-plaintext highlighter-rouge">init.el</code> menjadi format Org-mode.</p>

<h2 id="implementation">Implementation</h2>

<p>Org-mode sudah default ada di Emacs sejak versi 22+.</p>

<p>Berikut ini adalah struktur direktori <code class="language-plaintext highlighter-rouge">~/.emacs.d/</code> saya sebelum dirubah format ke Org-mode.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.emacs.d/
└── init.el
</code></pre></div></div>

<p>Copy/Cut isi yang ada di dalam file <code class="language-plaintext highlighter-rouge">~/.emacs.d/init.el</code> dan pindahkan ke <code class="language-plaintext highlighter-rouge">~/.emacs.d/config.org</code>.</p>

<p>Atau jalankan command di bawah ini.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cp ~/.emacs.d/init.el ~/.emacs.d/config.org
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.emacs.d/
├── init.el
└── config.org
</code></pre></div></div>

<p>Kemudian, buka file <code class="language-plaintext highlighter-rouge">~/.emacs.d/init.el</code> dan hapus semua konfigurasi sebelumnya, dan isi dengan snippet di bawah ini.</p>

<div class="language-emacs-lisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">!filename:</span> <span class="nv">~/.emacs.d/init.el</span>
<span class="c1">;; -*- lexical-binding: t -*-</span>

<span class="p">(</span><span class="nv">org-babel-load-file</span>
 <span class="p">(</span><span class="nv">expand-file-name</span>
  <span class="s">"config.org"</span>
  <span class="nv">user-emacs-directory</span><span class="p">))</span>
</code></pre></div></div>

<p>Dengan begini, kita sudah mengarahkan file <code class="language-plaintext highlighter-rouge">init.el</code> ke <code class="language-plaintext highlighter-rouge">config.org</code>.</p>

<p>Selanjutnya tinggal mengedit file <code class="language-plaintext highlighter-rouge">config.org</code>. Kita bisa menulisnya seperti menulis dokumentasi kode konfigurasi dengan snippet kode yang berisi konfigurasinya.</p>

<pre><code class="language-org">!filename: ~/.emacs.d/config.org
#+TITLE: BanditHijo's Emacs Config
#+AUTHOR: Rizqi Nur Assyaufi (@BanditHijo)

* Setup Custom.el File

#+begin_src emacs-lisp :tangle yes
  (setq custom-file (locate-user-emacs-file "custom.el"))
  (load custom-file t)
#+end_src

* Add MELPA Package Channel

#+begin_src emacs-lisp :tangle yes
  (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
#+end_src

* Theme, Font, Cursor, Custom Color, etc.

** Setup Font Face

#+begin_src emacs-lisp :tangle yes
  (set-face-attribute 'default nil :font "SFMono Nerd Font" :height 140 :weight 'medium :width 'normal :slant 'normal)
#+end_src
</code></pre>

<p>Dapat dilihat file <code class="language-plaintext highlighter-rouge">config.org</code> ini saya menulis file config dengan style seperti dokumentasi. Ada header ada blockcode.</p>

<p>Ketika file <code class="language-plaintext highlighter-rouge">config.org</code> disimpan, Emacs akan melakukan compile dan membuat file <code class="language-plaintext highlighter-rouge">config.el</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.emacs.d/
├── init.el
├── config.org
└── config.el
</code></pre></div></div>

<p>Isinya akan seperti ini,</p>

<div class="language-emacs-lisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">!filename:</span> <span class="nv">~/.emacs.d/config.el</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">custom-file</span> <span class="p">(</span><span class="nv">locate-user-emacs-file</span> <span class="s">"custom.el"</span><span class="p">))</span>
<span class="p">(</span><span class="nb">load</span> <span class="nv">custom-file</span> <span class="no">t</span><span class="p">)</span>

<span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'package-archives</span> <span class="o">'</span><span class="p">(</span><span class="s">"melpa"</span> <span class="o">.</span> <span class="s">"https://melpa.org/packages/"</span><span class="p">)</span> <span class="no">t</span><span class="p">)</span>

<span class="p">(</span><span class="nv">set-face-attribute</span> <span class="ss">'default</span> <span class="no">nil</span> <span class="ss">:font</span> <span class="s">"SFMono Nerd Font"</span> <span class="ss">:height</span> <span class="mi">140</span> <span class="ss">:weight</span> <span class="ss">'medium</span> <span class="ss">:width</span> <span class="ss">'normal</span> <span class="ss">:slant</span> <span class="ss">'normal</span><span class="p">)</span>
</code></pre></div></div>

<p>File config di atas hanya sample. Untuk melihat full file config ada di sini, <a href="https://github.com/bandithijo/emacs.d/blob/main/config.org">GitHub: bandithijo/emacs.d#config.org</a>.</p>

<h2 id="pesan-penulis">Pesan Penulis</h2>

<p>Catatan ini hanyalah implementasi sederhana. Tentunya implementasinya tidak terbatas pada contoh yang ada di catatan ini. Tujuan dari catatan ini hanya memberikan <em>overview</em> terkait bagaimana menggunakan dan menulis konfigurasi Emacs dengan Org-mode.</p>

<p>I think that’s all that I want to write. Thank you!</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="emacs" /><category term="orgmode" /><summary type="html"><![CDATA[Org-mode adalah salah satu alasan yang sering saya dengar yang membuat vim user pindah menggunakan Emacs. Salah satu kelebihan Org-mode adalah konsep Literate Programming, dimana menulis dokumentasi dan code program dalam satu file yang sama.]]></summary></entry><entry><title type="html">Preferensi Saya dalam Menyimpan Assets di Jekyll Bagian 2</title><link href="https://bandithijo.pages.dev/blog/preferensi-saya-dalam-menyimpan-assets-di-jekyll-bag-2" rel="alternate" type="text/html" title="Preferensi Saya dalam Menyimpan Assets di Jekyll Bagian 2" /><published>2026-08-04T00:00:00+08:00</published><updated>2026-08-04T00:00:00+08:00</updated><id>https://bandithijo.pages.dev/blog/preferensi-saya-dalam-menyimpan-assets-di-jekyll-bag-2</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/preferensi-saya-dalam-menyimpan-assets-di-jekyll-bag-2"><![CDATA[<h2 id="background-story">Background Story</h2>

<p>Pada artikel saya sebelumnya, <a href="/blog/preferensi-saya-dalam-menyimpan-assets-di-jekyll"><strong>Preferensi Saya dalam Menyimpan Assets di Jekyll</strong></a>, saya menambahkan attribute <code class="language-plaintext highlighter-rouge">assets:</code> pada front-matter di setiap post. Kekurangan dari pendekatan ini adalah:</p>

<ol>
  <li>
    <p>Ribet. Karena saya harus mengeset assets path secara manual di setiap post.</p>

    <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">layout</span><span class="pi">:</span> <span class="s2">"</span><span class="s">post"</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Ruby</span><span class="nv"> </span><span class="s">Promgrammers</span><span class="nv"> </span><span class="s">Best</span><span class="nv"> </span><span class="s">Friend"</span>
<span class="na">date</span><span class="pi">:</span> <span class="s2">"</span><span class="s">2025-12-29"</span>
<span class="na">assets</span><span class="pi">:</span> <span class="s2">"</span><span class="s">/assets/posts/2025-12-29-ruby-programmers-best-friend"</span>
<span class="nn">---</span>
</code></pre></div>    </div>
    <p>Sangat tidak praktis!</p>
  </li>
  <li>
    <p>Sintaks image jadi panjang dan terlihat tidak praktis.</p>
    <div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code>![gambar_01](<span class="cp">{{</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">assets</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">absolute_url</span><span class="w"> </span><span class="cp">}}</span>/gambar_01.png)
</code></pre></div>    </div>
  </li>
</ol>

<h2 id="pemecahan-masalah">Pemecahan Masalah</h2>

<p>Untuk saat ini yang terpikirkan oleh saya adalah dengan memanfaatkan Jekyll Custom Tag. Saya sudah pernah menulis tentang membuat Jekyll Custom Tag pada artikel ini, <a href="/blog/membuat-jekyll-custom-tags-dengan-liquid-tags"><strong>Membuat Jekyll Custom Tags dengan Liquid Tags</strong></a>.</p>

<p>Tapi sebelum membuat Jekyll Custom Tag, kenali dulu struktur direktori antara file post dengan assetsnya. Punya saya seperti di bawah ini.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>📁 _includes/
📁 _plugins/
📁 _layouts/
📂 _posts/
  📄 2025-12-29-ruby-programmers-best-friend.md 👈 artikel
📂 assets/
│ 📁 css/
│ 📂 images/
│ │ 📁 banner/
│ └ 📁 favicon/
│ 📁 pages/
│ 📂 posts/
│   📂 2025-12-29-ruby-programmers-best-friend/ 👈 direktori assets
│   │ 📄 file-01.pdf
│   │ 📄 gambar-01.png
│   └ 📄 gambar-02.png
│ 📁 javascript/
└ 📁 json/
📁 pages/
⚙️ _config.yml
📄 index.markdown
📄 README.md
</code></pre></div></div>

<h3 id="1-buat-jekyll-custom-tag-assets_path">1. Buat Jekyll Custom Tag assets_path</h3>

<p>Buat file baru dengan nama <code class="language-plaintext highlighter-rouge">assets_path_tag.rb</code> di dalam direktori <code class="language-plaintext highlighter-rouge">_plugins/assets_path_tag.rb</code>.</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span><span class="ss">filename: </span><span class="n">_plugins</span><span class="o">/</span><span class="n">assets_path_tag</span><span class="p">.</span><span class="nf">rb</span>
<span class="k">module</span> <span class="nn">Jekyll</span>
  <span class="k">class</span> <span class="nc">AssetsPathTag</span> <span class="o">&lt;</span> <span class="no">Liquid</span><span class="o">::</span><span class="no">Tag</span>
	<span class="kp">include</span> <span class="no">Jekyll</span><span class="o">::</span><span class="no">Filters</span><span class="o">::</span><span class="no">URLFilters</span>

	<span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
	  <span class="vi">@context</span> <span class="o">=</span> <span class="n">context</span>
	  <span class="n">page</span> <span class="o">=</span> <span class="n">context</span><span class="p">.</span><span class="nf">registers</span><span class="p">[</span><span class="ss">:page</span><span class="p">]</span>

	  <span class="n">relative_path</span> <span class="o">=</span>
		<span class="k">if</span> <span class="n">page</span><span class="p">[</span><span class="s2">"collection"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"posts"</span>
		  <span class="n">date</span> <span class="o">=</span> <span class="no">Date</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="n">page</span><span class="p">[</span><span class="s2">"date"</span><span class="p">].</span><span class="nf">to_s</span><span class="p">)</span>
		  <span class="s2">"/assets/posts/</span><span class="si">#{</span><span class="n">date</span><span class="p">.</span><span class="nf">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-%d'</span><span class="p">)</span><span class="si">}</span><span class="s2">-</span><span class="si">#{</span><span class="n">page</span><span class="p">[</span><span class="s2">"slug"</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span>
		<span class="k">else</span>
		  <span class="n">slug</span> <span class="o">=</span> <span class="no">File</span><span class="p">.</span><span class="nf">basename</span><span class="p">(</span><span class="n">page</span><span class="p">[</span><span class="s2">"name"</span><span class="p">].</span><span class="nf">to_s</span><span class="p">,</span> <span class="s2">".*"</span><span class="p">)</span>
		  <span class="s2">"/assets/pages/</span><span class="si">#{</span><span class="n">slug</span><span class="si">}</span><span class="s2">"</span>
		<span class="k">end</span>

	  <span class="n">absolute_url</span><span class="p">(</span><span class="n">relative_path</span><span class="p">)</span>
	<span class="k">end</span>
  <span class="k">end</span>
<span class="k">end</span>

<span class="no">Liquid</span><span class="o">::</span><span class="no">Template</span><span class="p">.</span><span class="nf">register_tag</span><span class="p">(</span><span class="s1">'assets_path'</span><span class="p">,</span> <span class="no">Jekyll</span><span class="o">::</span><span class="no">AssetsPathTag</span><span class="p">)</span>
</code></pre></div></div>
<p>Baris ke-10 memberikan kondisi untuk collection yang termasuk dalam <code class="language-plaintext highlighter-rouge">posts</code>.</p>

<p>Baris ke-13 memberikan kondisi untuk collection selain <code class="language-plaintext highlighter-rouge">posts</code>, bisa berupa <code class="language-plaintext highlighter-rouge">page</code>.</p>

<p>Baris ke-12 dan ke-15 merupakan path dimana saya menyimpan assets untuk blog.</p>

<p>Untuk assets dari posts saya tempatkan di,</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/assets/posts/yyyy-mm-dd-slug-of-title/
</code></pre></div></div>

<p>Untuk assets dari page saya tempatkan di,</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/assets/page/(slug-page)/
</code></pre></div></div>

<h3 id="2-cara-pakainya">2. Cara pakainya</h3>

<p>Untuk menggunakannya tinggal panggil dengan cara seperti ini,</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code>![gambar-01](<span class="cp">{%</span><span class="w"> </span><span class="nt">assets_path</span><span class="w"> </span><span class="cp">%}</span>/gambar-01.png)

![gambar-02](<span class="cp">{%</span><span class="w"> </span><span class="nt">assets_path</span><span class="w"> </span><span class="cp">%}</span>/gambar-02.png)

Berikut ini [Document 01](<span class="cp">{%</span><span class="w"> </span><span class="nt">assets_path</span><span class="w"> </span><span class="cp">%}</span>/file-01.pdf) yang harus dikerjakan.
</code></pre></div></div>

<p>Dengan begini, tidak perlu lagi menggunakan attribute <code class="language-plaintext highlighter-rouge">assets:</code> pada front-matter.</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">layout</span><span class="pi">:</span> <span class="s2">"</span><span class="s">post"</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Ruby</span><span class="nv"> </span><span class="s">Promgrammers</span><span class="nv"> </span><span class="s">Best</span><span class="nv"> </span><span class="s">Friend"</span>
<span class="na">date</span><span class="pi">:</span> <span class="s2">"</span><span class="s">2025-12-29"</span>
<span class="nn">---</span>
</code></pre></div></div>

<p>Selesai!</p>

<h2 id="keuntungan">Keuntungan</h2>

<p>Dengan menggunakan pendekatan ini saya mendapatkan keuntungan,</p>

<ol>
  <li>Path yang ditulis pada pemanggilan assets menjadi tidak terlalu panjang. Hanya perlu memanggil <code class="language-plaintext highlighter-rouge">{% assets_path %}</code> kemudian diikuti nama file assetnya.</li>
  <li>Jika ingin mengganti struktur direktori dari assets, tidak perlu melakukan edit ke semua link assets yang ada di masing-masing artikel. Tapi cukup melakukan edit pada file <code class="language-plaintext highlighter-rouge">_plugins/assets_path_tag</code>. Maka semua assets path akan ikut berubah.</li>
</ol>

<p>Sangat praktis!</p>

<h2 id="pesan-penulis">Pesan Penulis</h2>

<p>Pendekatan ini mungkin bukan pendekatan terbaik. Tapi pendekatan ini adalah pendekatan yang cocok untuk saya saat ini.</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="jekyll" /><summary type="html"><![CDATA[Pengelolaan assets yang baik pada sebuah blog merupakan kunci untuk mempertahankan mood menulis blog.]]></summary></entry><entry><title type="html">10 Tahun Pakai Vim, Akhirnya Migrasi ke Emacs</title><link href="https://bandithijo.pages.dev/blog/10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs" rel="alternate" type="text/html" title="10 Tahun Pakai Vim, Akhirnya Migrasi ke Emacs" /><published>2026-08-02T00:00:00+08:00</published><updated>2026-08-02T00:00:00+08:00</updated><id>https://bandithijo.pages.dev/blog/10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs"><![CDATA[<h2 id="background-story">Background Story</h2>

<p>Pertama kali saya menggunakan Vim tahun 2016. Tentu saja saat itu saya tidak semahir sekarang (walaupun sekarang juga tetep masih cupu, wkwkwk).</p>

<p>2016 juga adalah tahun dimana saya sudah mulai bermigrasi secara penuh menggunakan Linux dari sebelumnya menggunakan macOS (saat itu namanya masih OSX) sejak tahun 2009.</p>

<p>Sudah beberapa kali melihat orang menggunakan Vim di YouTube. Tetapi baru tertarik saat melihat demonstrasi editing/manipulation text dengan menggunakan Vim yang terlihat seperti magic. Karena cursornya hanya bergerak sedikit tetapi modifikasi atau perubahan textnya bisa signifikan. Ajaib! Pikir saya saat itu. Petualangan saya menggunakan Vim pun dimulai.</p>

<p>Sudah 10 tahun ternyata!</p>

<p>Menggunakan Vim mengantarkan saya bertualang dan bertemu hal-hal baru dan juga teman-teman baru. Sungguh perjalanan yang luar biasa. Kalau saya tidak pakai Vim, mungkin tidak akan bisa berjalan sejauh ini.</p>

<p>Vim juga membersamai saya membuat hal-hal hebat bersama. Membuat konten-konten di YouTube tentang programming atau apapun, ngoding untuk hobi, ngoding untuk kerja, menulis dokumentasi teknis untuk kantor, menulis catatan belajar, bahkan blog ini pun dibangun dengan Vim dan artikelnya ditulis dengan Vim.</p>

<h2 id="berkenalan-dengan-emacs">Berkenalan dengan Emacs</h2>

<p>Di antara tahun-tahun tersebut, sebenarnya saya juga sempat mencoba Emacs. Tapi selalu gagal.</p>

<blockquote>
  <p><em>Saat pakai Sublime Text, pengen pakai Atom.</em> <br />
<em>Saat sudah pakai Atom, pengen pakai Vim.</em> <br />
<em>Saat sudah pakai Vim, pengen pakai Emacs.</em> <br />
<em>Saat sudah pakai Neovim, pengen pakai Emacs.</em></p>
</blockquote>

<p>Rumput tetangga memang selalu terlihat lebih hijau. Sudah pakai Vim/Neovim malah kepengen pakai Emacs.</p>

<p>Sebagai orang di luar ekosistem Emacs, saya tertarik dengan <strong>Org mode</strong> karena saya banyak melihat Emacs user menggunakan Org mode untuk:</p>

<ol>
  <li>Menulis catatan</li>
  <li>Menulis buku atau dokumen atau artikel atau blog</li>
  <li>Mengelola schedule dan to-do list</li>
  <li>Mengelola project planning</li>
  <li>Menulis configurasi namun ditulis dengan lebih naratif. (Belakangan saya tahu ternyata konsep ini disebut “Literate Programming” atau yang sekarang populer dengan “Literate Configuration” atau “Literate Dotfiles”)</li>
</ol>

<p>Yang membuat saya tertarik adalah cara mereka menulis hal itu semua (yang tersebut di atas) cukup berbeda dengan yang saya lakukan di Vim. Saya menggunakan Markdown sedangkan mereka menggunakan Org. Pikir saya mengapa mereka tidak menggunakan Markdown? Mengapa mereka menggunakan markup language sendiri yang tidak umum?</p>

<p>Yang lebih aneh lagi, mengapa mereka menulis file config seperti menulis artikel di blog? Dengan narasi deskriptif yang menjelaskan block code yang ada di bawahnya. Tapi anehnya ketika file yang terlihat seperti artikel blog itu disimpan, file configurasinya juga sudah jadi. Ilmu hitam macam apa lagi ini? Wkwkwk.</p>

<p>Ternyata Org itu adalah markup language khusus yang sudah sangat populer di environment Emacs. Format ini sudah banyak diadaptasi dan digunakan di berbagai macam framework atau package di Emacs.</p>

<h2 id="percobaan-kesekian">Percobaan Kesekian</h2>

<p>Tahun ini pun, saya punya kesempatan mencoba Emacs lagi. Kalau saya ingat-ingat, ini sudah kali ketiga saya mencoba Emacs dengan menyelesaikan “<strong>Emacs Tutorial</strong>”. Kali pertama dan kali kedua menyelesaikan Emacs Tutorial tidak menumbuhkan rasa nyaman. Mungkin karena saya masih sangat attach dengan Vim/Neovim karena saya masih pakai untuk ngoding.</p>

<p>2026 ini adalah tahunnya AI Agent. Saya sudah tidak lagi mengetik code program, tetapi lebih banyak menyusun dokumen spesification atau plan bersama AI dan AI Agent yang akan mengeksesuinya setelah specification atau plan selesai disusun. Mungkin ini sebabnya, ikatan antara saya dengan Vim/Neovim sudah jauh berkurang dari tahun-tahun sebelumnya. Hal ini pula yang menyebabkan saya mendapatkan rasa nyaman ketika menyelesaikan Emacs Tutorial di kali ketiga.</p>

<p><strong>30 Juni 2026 menjadi awal commitment saya untuk menggunakan Emacs!</strong></p>

<p><em>Kenapa malah terdengar seperti komitmen karyawan korporat yaa …</em></p>

<p>Komitmen ini artinya saya bersungguh-sungguh untuk menelan semua keluhan dan menyelesaikan problem yang saya temukan selama menggunakan Emacs. Saya tidak akan mengeluh dan merengek saja tanpa berusaha menyelesaikan problem dalam saya menggunakan Emacs. Kalaupun ternyata masih belum ketemu atau tidak ada, saya tinggal buat sendiri. Kalaupun saya belum mampu membuat sendiri, saya akan simpan dulu idenya.</p>

<h2 id="orang-orang-yang-bermigrasi">Orang-orang yang Bermigrasi</h2>

<p>Selama menjadi Vim user, tidak sekali saya melihat Vim user yang bermigrasi menggunakan Emacs tidak lagi melihat jalan pulang. Mereka tetap tinggal, tetap maju, dan berkembang dengan Emacs. Jujur rasanya <em>mixed feelings</em> antara <del>kecewa</del>, <del>sedih</del>, heran, dan penasaran.</p>

<p>Beberapa nama diantaranya,</p>

<ol>
  <li><strong>Protesilaos Stavrou (Prot)</strong> <br />
<a href="https://www.youtube.com/@protesilaos">YouTube: @protesilaos</a> <br />
<a href="https://protesilaos.com/">Website: protesilaos.com</a></li>
  <li><strong>Derek Taylor (DistroTube)</strong> <br />
<a href="https://www.youtube.com/distrotube">YouTube: DistroTube</a> <br />
<a href="http://distrotube.com/">Website: distrotube.com</a></li>
  <li>Lupa … *</li>
</ol>

<p>* Selain mereka berdua ada banyak lagi video di YouTube yang dapat ditemukan terkait Vim user yang sudah migrasi ke Emacs.</p>

<p>Saya pikir mereka hanya sekedar membuat content, tapi kok sampai sekarang masih dipakai. Hal tersebut semakin membuktikan kalau bener-bener ada yang tidak beres dengan Emacs.</p>

<p>Kalau diperhatikan, sebabnya selalu sama. “<strong>Org mode</strong>”. Dari konten video mereka terlihat kalau mereka mulai bereksplorasi dengan Org mode.</p>

<h2 id="lagi-lagi-tentang-org-mode">Lagi-lagi tentang Org Mode</h2>

<p>Kalau saya bukan Vim user, mungkin saya tidak akan mengenal apa itu Org mode. Namun, karena saya Vim user dan rival dari Vim adalah Emacs, saya cukup sering melihat Emacs user sedang menulis dengan format Org mode. Menulis artikel blog dengan Org mode. Menulis buku dengan Org mode. Menulis agenda, menyusun schedule, mengatur to-do list dengan Org mode. Bahkan menulis file konfigurasi dengan Org mode. Dan cara mereka menulis file konfigurasi tersebut sangat “aneh” karena mereka terlihat seperti sedang menulis artikel blog. Dengan header di setiap sectionnya dan narasi yang panjang untuk mendeskripsikan block code konfigurasi di bawahnya. Ketika file tersebut disimpan, file config nya pun sudah jadi. Seperti menulis dokumentasi dengan configurasi dalam satu file yang sama. <em>Ilmu hitam macam apa itu!</em></p>

<p>Belakangan baru saya tahu kalau konsep itu disebut dengan “<strong>Literate Programming</strong>” yang diprakarsai oleh Donald Knuth tahun 1984.</p>

<p>Literate Programming ini adalah konsep cara menulis program dengan menjelaskan logika kerjanya menggunakan bahasa sehari-hari yang diselingi dengan <em>snippet code</em>, seperti narasi, penjelasan algoritma dalam satu dokumen.</p>

<p>Core concepts dari Literate Programming,</p>

<ol>
  <li><strong>Tangling</strong> yaitu proses mengekstraksi dan menggabungkan <em>code snippets</em> dari dokumen teks menjadi file yang dapat dijalankan oleh compiler.</li>
  <li><strong>Weaving</strong> yaitu proses merubah sumber file yang sama menjadi dokumen yang terformat dengan rapi atau untuk dibaca oleh manusia.</li>
  <li><strong>Narative First</strong> yaitu proses menyusun kode dalam urutan logis sesuai alur pemikiran kita, bukan berdasarkan batasan-batasan ketat yang disyaratkan oleh compiler.</li>
</ol>

<p>Konsep ini menarik bagi saya yang sudah ngoding lebih dari 10 ribu jam (sumber: <a href="https://wakatime.com/@bandithijo">WakaTime</a>. Karena tidak sekali waktu saya harus membuat 2 file terpisah untuk dokumentasi dan code program. Secara tidak langsung, saya bekerja 2 kali.</p>

<h2 id="berhasil-migrasi">Berhasil Migrasi!</h2>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-02-10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs/gambar_01.png" alt="gambar_1" /></p>

<p>Gambar 01. Diagram ini menunjukkan waktu yang saya perlukan untuk bisa commit bermigrasi ke Emacs.</p>

<p>Ya, saya memerlukan hampir 11 jam! Kelihatan banyak, tapi itu merupakan akumulasi dari beberapa jam dalam 4 hari atau 1 minggu. Sejauh ini saya sudah cukup percaya diri untuk bisa full migrasi menggunakan Emacs.</p>

<h3 id="apa-yang-saya-pelajari-dalam-11-jam">Apa yang saya pelajari dalam 11 jam?</h3>

<p>Saya tidak ingin terburu-buru dalam proses migrasi ke Emacs. Saya juga tidak mau menggunakan prebuilt config atau framework config yang sudah jadi. Saya ingin membangun file config saya sendiri <em>from scratch</em>. Saya ingin mengerti setiap statement yang saya tulis di file config saya. Di jaman AI, hal seperti ini mudah dilakukan. Apa yang saya tidak pahami, bisa saya diskusikan dengan AI. Dengan AI, proses membangun sekaligus memahami setiap statement yang saya tulis di file config menjadi lebih mudah dan lebih cepat.</p>

<p>Berikut ini bahan belajar yang saya kerjakan selama 11 jam tersebut,</p>

<ol>
  <li><strong>Emacs Tutorial</strong> <br />
Hal pertama yang wajib untuk ditamatin. Isinya mencangkup hal-hal dasar yang diperlukan untuk bisa menggunakan Emacs. Sebagian besar isinya tentang cara mengoperasikan Emacs dengan keybinding. Bisa lewat link yang ada di Welcome Page atau dengan keybind <code class="language-plaintext highlighter-rouge">C-h t</code>. Pelajari dengan sabar. Tidak perlu sekali duduk, karena buffer tutorial tersebut akan menawarkan kita untuk mau menyimpan posisi cursor terakhir atau tidak.</li>
  <li><a href="https://www.youtube.com/watch?v=btAOBkcLEkg"><strong>YouTube: [1] Learning Vanilla Emacs from Scratch with Prot as a Neovim User - linkarzu, linkarzu-podcast, Protesilaos</strong></a></li>
  <li><a href="https://www.youtube.com/watch?v=Crp2e5D_Q78"><strong>YouTube: [2] Vanilla Emacs with Prot: I’ll Repent for My Markdown Sins - linkarzu, Protesilaos</strong></a></li>
  <li><a href="https://www.youtube.com/watch?v=WHYCQmIlbxM"><strong>YouTube: Emacs – A Gentle Introduction - hexdump</strong></a></li>
  <li><a href="https://www.youtube.com/watch?v=cxoE2FhOIgI"><strong>YouTube: 
Why I Prefer Emacs Over VSCode and vim - Code to the Moon</strong></a></li>
  <li><a href="https://www.youtube.com/watch?v=_zfvQkJsYwI"><strong>YouTube: 
An Introduction to the Ultimate Git Interface, Magit! - System Crafters</strong></a></li>
  <li><a href="https://www.youtube.com/watch?v=AyhPmypHDEw"><strong>YouTube: Getting Started with Org Roam - Build a Second Brain in Emacs - System Crafters</strong></a></li>
</ol>

<p>Sejauh ini materi-materi di atas yang saya lahap dalam 11 jam.</p>

<p>Saya juga sudah mulai mencoba Org mode. Saya mulai dengan memigrasikan file Emacs config dari <code class="language-plaintext highlighter-rouge">init.el</code> menjadi <code class="language-plaintext highlighter-rouge">config.org</code>. Repositorinya saya letakkan di sini, <a href="https://github.com/bandithijo/emacs.d">GitHub:BanditHijo:Emacs.d</a>.</p>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/oigPWmTRl3s" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<h3 id="kenapa-fundamental-penting">Kenapa fundamental penting?</h3>

<p>Dalam manga/anime “Kimetsu No Yaiba”, pada kisah Zenitsu dan kakaknya, Kaigaku. Zenitsu hanya bisa menguasai jurus pertama (bentuk pertama) dari aliran Pernafasan Petir. Sedangkan, Kakaknya bisa menguasai semua bentuk (jurus) kecuali bentuk pertama. Tapi, pada pertarungan mereka yang terakhir di Infinity Castle, Zenitsu mengeluarkan bentuk (jurus) ciptaannya sendiri yang bernama <em>Honoikazuchi no Kami</em> (Dewa Petir Berapi) yang sukses memenggal kepala Kaigaku.</p>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/zJ6fDGmDe6U" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<p>Nah! Dari kisah tersebut dapat dilihat bahwa orang yang <del>hanya</del> menguasai ilmu dasar atau basic atau fundamental memiliki potensi untuk mengembangkan ilmu tersebut menjadi bentuk (jurus) yang baru atau ilmu yang baru. Sedangkan kakaknya, Kaigaku yang bisa semua jurus kecuali jurus pertama, ilmu berpedangnya tidak berkembang dan hanya menguasai juru-jurus yang sudah dipelajari dari gurunya saja.</p>

<p>Kisah Kaigaku tersebut sebenarnya <em>relate</em> dengan saya sebagai seorang Vim user. Tampak luar, saya terlihat dapat menggunakan Vim dengan mahir, namun sebenarnya saya tidak memiliki pengetahuan dasar yang sebaiknya dimiliki oleh seorang Vim user. Saya tidak tahu bagaimana cara mencari dan mengaitkan “problem” dengan dokumentasi yang ada di Vim. Sederhananya, saya tidak benar-benar tahu cara membaca dokumentasi Vim. Itulah sebabnya saya merasa kesulitan untuk mengikuti hal-hal terbaru yang ada di Vim. <strong>Karena saya tidak menguasai jurus pertama</strong>.</p>

<h2 id="pesan-penulis">Pesan Penulis</h2>

<p>Migrasi adalah sesuatu yang membutuhkan resource yang besar. Waktu, attention, motivation, dan hal-hal lain yang harganya tidak murah. Jika kamu tidak memiliki alasan atau motivasi yang benar untuk migrasi, sebaiknya buang jauh-jauh rencana untuk migrasi. Migrasi adalah perjalanan panjang yang membutuhkan management resource dan motivasi yang baik. Jika kamu tidak memiliki mereka dalam jumlah yang cukup, kamu akan segera kehabisan perbekalan dan perjalanan migrasimu berakhir.</p>

<p>Lamanya proses migrasi tergantung dari sejauh mana kamu menentukan titik tujuan migrasi. Semakin jauh kamu menentukan titik tujuan, semakin jauh perjalanan migrasimu, tentu akan semakin banyak perbekalan yang kamu butuhkan. Jadi, keberhasilan migrasi juga tergantung dari sejauh mana tujuan migrasimu.</p>

<p>Pada proses migrasi dari Vim/Neovim ke Emacs yang saya lakukan ini, saya tidak membuat tujuan yang panjang (dapat diartikan: “ekspektasi yang banyak/besar”) terhadap Emacs. Saya tidak ingin membuat Emacs yang saya gunakan dapat berfungsi selayaknya Vim/Neovim yang saya gunakan. Saya hanya membawa “konsep kerja” yang biasa saya gunakan di Vim/Neovim dan apabila di Emacs ada konsep yang sama atau pun berbeda, saya akan gunakan konsep yang ditawarkan oleh Emacs. Saya tidak berkeberatan untuk <del>menyesuaikan</del> mengganti konsep yang saya bawa dari Vim/Neovim dengan konsep yang ditawarkan oleh Emacs.</p>

<p>Tujuan migrasi saya ke Emacs adalah <strong>untuk menggunakan Org mode</strong>. <em>That’s it!</em> Sesederhana itu saja. Tujuan yang menurut saya pendek. Maka dengan cepat saya akan sampai ke tujuan. Perasaan puas datang karena sebuah “kemenangan kecil” berhasil di dapatkan. Ini adalah strategi migrasi saya dengan menentukan tujuan-tujuan pendek.</p>

<p>Strategi A</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A------------------&gt;B
</code></pre></div></div>

<p>Strategi B</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A--&gt;B--&gt;C--&gt;D--&gt;E--&gt;F
</code></pre></div></div>

<p>Dengan menggunakan Strategi B, kita dapat dengan mudah dan cepat untuk memperoleh “kemenangan-kemenangan kecil” itu.</p>

<p><em>Well, Let’s see!</em> Apakah saya akan masih menggunakan Emacs untuk beberapa waktu kedepan?</p>

<p>Oh ya! Artikel ini adalah artikel pertama yang saya tulis dengan Emacs.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-08-02-10-tahun-pakai-vim-akhirnya-migrasi-ke-emacs/gambar_02.png" alt="gambar_2" /></p>

<p>Gambar 02. Statistik Wakatime terhadap project blog ini dan artikel ini</p>

<h2 id="bahan-belajar-tambahan">Bahan Belajar Tambahan</h2>

<ol>
  <li><a href="https://www.gnu.org/savannah-checkouts/gnu/emacs/tour/index.html"><strong>GNU.org - A Guided Tour of Emacs</strong></a></li>
  <li><a href="https://emacsrocks.com/"><strong>emacsrocks.com (Video Playlist)</strong></a></li>
</ol>

<h2 id="referensi">Referensi</h2>

<ol>
  <li><a href="http://www.literateprogramming.com/">http://www.literateprogramming.com/</a> <br />
Diakses tanggal: 2026-08-02</li>
  <li><a href="https://en.wikipedia.org/wiki/Literate_programming">https://en.wikipedia.org/wiki/Literate_programming</a> <br />
Diakses tanggal: 2026-08-02</li>
  <li><a href="https://orgmode.org/">https://orgmode.org/</a> <br />
Diakses tanggal: 2026-08-02</li>
</ol>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="emacs" /><summary type="html"><![CDATA[Tidak satu atau dua vim user yang bermigrasi ke Emacs tetapi tidak kembali dan tetap menggunakan Emacs. Kok bisa? Apa alasannya? Ada apa di Emacs?]]></summary></entry><entry><title type="html">Memperbaiki GPG: Keydb Search Failed</title><link href="https://bandithijo.pages.dev/blog/memperbaiki-gpg-keydb-search-failed" rel="alternate" type="text/html" title="Memperbaiki GPG: Keydb Search Failed" /><published>2026-08-01T06:11:00+08:00</published><updated>2026-08-01T06:11:00+08:00</updated><id>https://bandithijo.pages.dev/blog/memperbaiki-gpg-keydb-search-failed</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/memperbaiki-gpg-keydb-search-failed"><![CDATA[<h2 id="latar-belakang-masalah">Latar Belakang Masalah</h2>

<p>Saat akan membuka file yang dienkripsi dengan GnuPG (<code class="language-plaintext highlighter-rouge">.gpg</code>), saya mendapati error sebagai berikut.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[bandithijo@MacBookAir ~]$ gpgconf --kill all
[bandithijo@MacBookAir ~]$ gpgconf --launch gpg-agent
[bandithijo@MacBookAir ~]$ pass -c 'BanditHijo/example.com/bandithijo@example.com'
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: keydb_search failed: Operation timed out
gpg: public key decryption failed: No secret key
gpg: decryption failed: No secret key
</code></pre></div></div>

<p>Ini adalah masalah klasik dari <code class="language-plaintext highlighter-rouge">keyboxd</code> (komponen baru di GnuPG 2.4+ yang bertugas mengelola public keyring lewat SQLite, menggantikan <code class="language-plaintext highlighter-rouge">pubring.kbx</code>).</p>

<p>Error ini disebabkan karena terjadi proses <em>locking</em> dari <em>session</em> yang crash. Hal ini membuat key tetap dalam keadaan terkunci, meskipun proses aslinya sudah mati/terminated. Yang biasanya menyebabkan hal ini adalah karena kunci/lock dipegang oleh PID yang ternyata sudah tidak aktif. Biasanya karena mesin sempat hang-&gt;force-shutdown. Solusinya sesederhana menghapus file lock nya secara manual.</p>

<h2 id="pemecahan-masalah">Pemecahan Masalah</h2>

<h3 id="1-matikan-semua-proses-dari-komponen-gpg">1. Matikan semua proses dari komponen gpg</h3>

<p>Matikan semua komponen gpg yang terlibat secara eksplisit, termasuk keyboxd.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpgconf --kill gpg-agent
$ gpgconf --kill keyboxd
$ gpgconf --kill dirmngr
$ pkill -9 -f gpg-agent
$ pkill -9 -f keyboxd
</code></pre></div></div>

<blockquote>
  <p>info</p>

  <p><code class="language-plaintext highlighter-rouge">gpgconf --kill all</code> terkadang tidak dapat menjangkau keyboxd, tergantung versi GnuPG-nya.</p>
</blockquote>

<h3 id="2-hapus-lock-file-yang-stale">2. Hapus lock file yang stale</h3>

<p>Karena yang terkunci adalah file lock, biasanya terdapat ekstensi <code class="language-plaintext highlighter-rouge">.lock</code> pada bagian akhir nama file db nya (misal: <code class="language-plaintext highlighter-rouge">pubring.db.lock</code>).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ls -la ~/.gnupg/public-keys.d/
$ rm -f ~/.gnupg/public-keys.d/pubring.db.lock
</code></pre></div></div>

<h3 id="3-hapus-file-lock-yang-lain">3. Hapus file <code class="language-plaintext highlighter-rouge">.lock</code> yang lain</h3>

<p>Jika ada file dengan ekstensi <code class="language-plaintext highlighter-rouge">.lock</code> yang lain di <code class="language-plaintext highlighter-rouge">~/.gnupg/</code> (bukan di dalam <code class="language-plaintext highlighter-rouge">public-key.d/</code>), sebaiknya dihapus juga.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ find ~/.gnupg/ -name '*.lock' -delete
</code></pre></div></div>

<h3 id="4-restart-agent">4. Restart agent</h3>

<p>Langkah terakhir tinggal restart agent.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpgconf --launch gpg-agent
</code></pre></div></div>

<p>Selesi!</p>

<h2 id="referensi">Referensi</h2>

<ol>
  <li>
    <p><a href="https://iamyaash.github.io/stashed/posts/gpg/dblock-gpg/">iamyaash. GPG: Fix ‘database_open waiting for lock. Des 2025</a> <br />
Diakses tanggal: 2026-08-01</p>
  </li>
  <li>
    <p><a href="https://zrevig.medium.com/gpg-note-database-open-134217901-waiting-for-lock-held-by-30991-7ef593e19662">Tanin Srivaraphong. gpg: Note: database_open…waiting for lock (held by 30991)… Medium, Sep 2025</a> <br />
Diakses tanggal: 2026-08-01</p>
  </li>
  <li>
    <p><a href="https://thelinux.pro/osx/linux/gpg/git/2024/06/23/fixing-gpg-lock-issues.html">thelinux.pro. Fixing GPG Lock Issues. Jun 2024</a> <br />
Diakses tanggal: 2026-08-01</p>
  </li>
  <li>
    <p><a href="https://zriyansh.medium.com/git-commit-signing-and-troubleshooting-gpg-key-issues-441b0c889707">Priyansh Khodiyar. Git commit signing and Troubleshooting GPG Key Issues. Medium, Mar 2025</a> <br />
Diakses tanggal: 2026-08-01</p>
  </li>
</ol>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="gpg" /><category term="gnupg" /><category term="keyboxd" /><category term="keydb" /><summary type="html"><![CDATA[Memperbaiki error gpg: keydb_search_failed: Operation time out.]]></summary></entry><entry><title type="html">Review Split Keyboard Chocofi</title><link href="https://bandithijo.pages.dev/blog/review-split-keyboard-chocofi" rel="alternate" type="text/html" title="Review Split Keyboard Chocofi" /><published>2026-07-08T06:05:00+08:00</published><updated>2026-07-08T06:05:00+08:00</updated><id>https://bandithijo.pages.dev/blog/review-split-keyboard-chocofi</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/review-split-keyboard-chocofi"><![CDATA[<h2 id="prakata">Prakata</h2>

<p>Saya sebelumnya tidak pernah tertarik dengan split keyboard atau ergo keyboard. Menurut saya bentuknya cukup aneh seperti keyboard biasa yang dibelah jadi dua bagian. Saya tidak suka bentuknya. Ini murni preferensi pribadi saja. Tidak suka bukan berarti jelek.</p>

<p>Namun, semua berubah sejak saya menemukan <strong>Corne</strong> keyboard. Split keyboard, low profile, dengan jumlah key yang sedikit (hanya 42 atau 36 keys), case yang tipis, dimensi yang mini (seukurang telapak tangan), configurable, remapable (programmable), dan case yang customizeable.</p>

<h2 id="cerita-dulu">Cerita dulu</h2>

<p>Berhubung ini adalah artikel pertama saya yang membahas tentang <em>typing</em>, saya akan cerita dulu <em>background history</em> saya berkenalan dengan keyboard.</p>

<p>SD kelas 4 atau 5 saya pertama kali bertemu komputer dan keyboard, karena ikut les komputer yang diadakan dari sekolah SD tapi ruang komputernya ada di gedung SMA. Saat itu kami dikenalkan dengan game di komputer. Saya paling suka bermain Mario Teaches Typing (1993).</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_01.webp" alt="gambar 1" /></p>

<p>Gambar 1. Mario Teaches Typing (1993). Source <a href="https://www.uvlist.net/game-211662-Mario+Teaches+Typing">https://www.uvlist.net/game-211662-Mario+Teaches+Typing</a></p>

<p>Saat SMP, orang tua saya membeli komputer untuk di rumah. Alhamdulillah menang dorprize sehingga dapat komputer hadiah, Pentium MMX yang diletakkan di kamar saya.</p>

<p>Saat kelas 2 SMA, untuk pertama kali ada guru (pak Taufik) yang <em>notice</em> kalau saya cukup cepat dalam mengetik. Sempat 1-2 kali diminta untuk mengetik di laptop beliau.</p>

<p>Kelas 2 SMA, saya mengikuti lomba web beregu tingkat nasional. Di tim ini saya kebagian mengetik konten yang akan dipajang di website yang akan dilombakan.</p>

<p>Singkat cerita, sampai kuliah yang kedua, salah satu teman yang juga seorang Finance, menilai ketikan saya cukup cepat tapi jarinya tidak sesuai. Tidak <em>touch typing</em>. Karena ia sempat belajar <em>touch typing</em> di kampus dan menjadi persyaratan lulus. Dari sini saya pertama kali mengetahui tentang <em>touch typing</em> (mengetik tanpa melihat tuts keyboard).</p>

<p>Sampai saat COVID-19 saya sudah bekerja sebagai software engineer, saya menyadari dalam proses mengetik, proses problem solving di pikiran saya juga bercampur dengan proses mengetik. Saya masih memikirkan beberapa lokasi key yang belum saya hafal, terutama key yang berkaitan dengan simbol-simbol code. Terkadang juga harus melihat posisi dari key yang ingin saya tekan jika saya kehilangan referensi posisinya. Pada tahap ini, saya mulai menyadari <em>touch typing</em> mungkin bisa membuat proses mengetik code tidak bercampur dengan proses berfikir.</p>

<p>Saya putuskan untuk mulai belajar <em>touch typing</em>. Ternyata saya harus mulai belajar dari awal lagi untuk membiasakan jari-jari agar mengetik sesuai dengan posisi dan porsinya masing-masing.</p>

<p>Dari informasi yang saya kumpulkan, belajar <em>touch typing</em> banyak yang merekomendasikan untuk memulai dari <a href="https://keybr.com">keybr.com</a>. Karena keybr dapat mengidentifikasi jari mana yang lemah dan akan terus men-generate kata yang mengandung huruf yang menjadi kelemahan kita. Di sini saya mulai membangun fondasi <em>touch typing</em> yang benar. Kalau dilihat dari data log yang ada di keybr, saya mulai latihan dari November 2021 sampai Februari 2022.</p>

<p>Setelah mulai nyaman dan terbiasa dengan <em>touch typing</em>, saya mulai beralih ke <a href="https://monkeytype.com">monkeytype.com</a>. Di sini saya pergunakan untuk melancarkan dan membangun <em>muscle memory</em> yang lebih solid. Hingga hari ini, saya masih menggunakan monkeytype untuk membangun kecepatan mengetik dalam satuan <em>Words per Minute</em> (WPM).</p>

<h2 id="keychron-k6">Keychron K6</h2>

<p>Setelah sangat lancar dengan <em>touch typing</em>, WPM sudah rata-rata di 70-80. Kejenuhan mengetik mulai muncul. Saya mengatasi dengan mencoba menggunakan <em>mechanical keyboard</em>.</p>

<p>Saya pilih Keychron karena ini adalah <em>mechanical keyboard</em> pertama saya, dan saya igin mendapatkan pengalaman yang baik.</p>

<p>Singkat cerita saya juga sudah mulai <del>jenuh</del>/<em>fatigue</em> dengan <em>high profile switch</em>. Saya pun ingin mencoba <em>low profile switch</em>. Tapi, sekalian saja saya coba split keyboard.</p>

<p>Saya merasa saat menggunakan standard keyboard sering tertukar antara kiri dan kanan. Seperti terjadi semacam interfere signal karena tangan kanan dan kiri berdekatan. Mungkin kalau diilustrasikan akan seperti ini.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_02.webp" alt="gambar 2" /></p>

<p>Gambar 2. Ilustrasi tentang interfere signal yang saya bayangkan</p>

<p>Dengan menggunakan split keyboard, akan memberikan jarak antara kedua tangan, sehingga tidak ada signal yang beririsan (ini bercanda ya).</p>

<h2 id="chocofi">Chocofi</h2>

<p>Sebelum mengenal Chocofi, sebenarnya saya hanya mengincar Corne. Tapi setelah berkeliling marketplace, saya tidak menemukan pre-built model Corne yang saya suka. Saya cenderung menyukai Chocofi pre-built yang sudah sesuai dengan selera saya, yaitu:</p>

<ol>
  <li>Full black</li>
  <li>Low profile</li>
  <li>Wireless (bluetooth)</li>
  <li>Menggunakan case (agar board tidak terekspose)</li>
</ol>

<p>Pilihan pun jatuh kepada Chocofi.</p>

<p>Berikut ini profil dari Chocofi.</p>

<ol>
  <li>Keyboard shield dan casing 3D print dengan kontroler NRF528540 yang support ZMK Studio</li>
  <li>Tiap sisi punya 3 baris, 5 kolom, dan 3 tombol buat ibu jari (thumb cluster)</li>
  <li>Column Staggered dengan kolom pinky (kolom ke 5) dibuat lebih turun mengikuti bentuk anatomi jari kelingking. Menurut saya, layout ini cocok untuk tipikal jari orang asia yang memiliki jari jemari yang mungil</li>
  <li>Terinspirasi dari keyboard Fifi, dan menggunakan firmware Seperti Corne dan Miryoku</li>
  <li>Support ZMK Studio untuk kebutuhan custom mapping keys sesuai kebutuhan tanpa perlu flash tinggal copy &amp; paste</li>
  <li>Dilengkapi Switch On-Off dan menggunakan baterai 500 mAh di masing-masing sisi.</li>
</ol>

<p>Berikut ini spesifikasi dari Chocofi.</p>

<ol>
  <li>3x5 Column staggered + 3 buttons on thumb cluster</li>
  <li>NRF52840 controller (type c, ble, bluetooth)</li>
  <li>OLED 0.91 inchi 128x32 pixel SSD1306 I2C</li>
  <li>Socket Kailh choc hot swap low profile 1350</li>
  <li>Switch Kailh choc v1 red pro low profile (linear)</li>
  <li>Keycap Kailh choc v1 PBT black blank</li>
  <li>3D Printed PLA+ Case</li>
  <li>Programmable buttons</li>
  <li>Support ZMK Studio (menggunakan ZMK Firmware)</li>
  <li>Rubber Feets</li>
  <li>Suport 5 Multiple Device through Bluetooth</li>
  <li>Li-Po Battery 500 mAh</li>
  <li>Type C Connector</li>
  <li>1 Meter braided USB Type C Cable</li>
</ol>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_03.jpg" alt="gambar 3" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_04.jpg" alt="gambar 4" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_05.jpg" alt="gambar 5" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_06.jpg" alt="gambar 6" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_07.jpg" alt="gambar 7" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_08.jpg" alt="gambar 8" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_09.jpg" alt="gambar 9" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_15.jpg" alt="gambar 15" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_16.jpg" alt="gambar 16" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_17.jpg" alt="gambar 17" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_18.jpg" alt="gambar 18" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_20.jpg" alt="gambar 20" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_22.jpg" alt="gambar 22" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_23.jpg" alt="gambar 23" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_24.jpg" alt="gambar 24" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_25.jpg" alt="gambar 25" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_26.jpg" alt="gambar 26" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_27.jpg" alt="gambar 27" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_28.jpg" alt="gambar 28" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_29.jpg" alt="gambar 29" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_30.jpg" alt="gambar 30" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_31.jpg" alt="gambar 31" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_32.jpg" alt="gambar 32" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_33.jpg" alt="gambar 33" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_34.jpg" alt="gambar 34" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_35.jpg" alt="gambar 35" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_36.jpg" alt="gambar 36" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_37.jpg" alt="gambar 37" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_38.jpg" alt="gambar 38" /></p>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/0SucDZzEbdA" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<p>Karena keyboard ini tidak ada case dan karena bentuknya yang kecil dan terlihat ringkih, saya khawatir jika dimasukkan tas akan baku hantam dengan barang-barang lain di dalam tas, maka saya putuskan untuk membeli case. Setelah saya hitung-hitung dimensinya cocok dengan Fujifilm Instax Mini case.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_39.jpg" alt="gambar 39" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_40.jpg" alt="gambar 40" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_41.jpg" alt="gambar 41" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_42.jpg" alt="gambar 42" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_43.jpg" alt="gambar 43" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_44.jpg" alt="gambar 44" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_45.jpg" alt="gambar 45" /></p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_46.jpg" alt="gambar 46" /></p>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/Dsu2pJZkFy4" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<p>Awal mula mencoba mengetik, saya hanya mendapatkan 5 WPM. Beberapa jam kemudian mulai naik ke 15 WPM. Setalah 24 jam mulai naik ke 40 WPM.</p>

<p>Ini adalah progres setelah seminggu.</p>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/m-6jMmMTF6w" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<p><em>Surprisingly</em>, mengetik di keyboard ini ternyata menyenangkan. Tidak ada <em>fatigue</em> pada otot-otot digitorum (kelompok otot yang mengontrol gerakan jari tangan). Mengetiknya memang masih <em>dragged</em> karena masih harus membiasakan dengan konsep layer. Karena keyboard ini hanya memiliki 36 key, maka key yang tidak ada di base layer akan disimpan di layer berbeda.</p>

<h2 id="layering">Layering</h2>

<p>36 key tentu tidak akan memenuhi semua kebutuhan mengetik. Maka dari itu keyboard-keyboard dengan key yang sedikit seperti ini biasanya menggunakan konsep <em>layering</em>. Dimana mapping key akan dibagi berdasarkan beberapa layer.</p>

<p>Berikut ini layer-layer yang saya pergunakan.</p>

<ol>
  <li>layer 0 (qwerty_layer), base layer atau front layer</li>
  <li>layer 1 (numsym_layer), numeric &amp; symbol layer</li>
  <li>layer 2 (fun_layer), function buttons</li>
  <li>layer 3 (sys_layer), system layer untuk pengaturan konektifitas bluetooth</li>
</ol>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_10.png" alt="gambar 10" /></p>

<p>Gambar 10. layer 0 (qwerty_layer), base layer atau front layer</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_11.png" alt="gambar 11" /></p>

<p>Gambar 11. layer 1 (numsym_layer), numeric &amp; symbol layer</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_12.png" alt="gambar 12" /></p>

<p>Gambar 12. layer 2 (fun_layer), function buttons</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_13.png" alt="gambar 13" /></p>

<p>Gambar 13. layer 3 (sys_layer), system layer untuk pengaturan konektifitas bluetooth</p>

<p>Pada layer-layer tersebut dapat dilihat pada layer 0 atau base layer atau qwerty_layer, terdapat tombol referensi untuk mengakse layer 1 dan 2 yang terdapat pada thumb cluster kiri dan kanan.</p>

<p>Untuk mengakses layer 1, saya menekan dan tahan tombol space. Dengan begini, saya sudah masuk ke layer 1, tinggal menekan button apa yang ingin ditekan pada layer 1. Begitu juga untuk mengakses layer 2.</p>

<p>Untuk mengakses layer 3, saya perlu berada di layer 2, lalu menekan button referensi untuk ke layer 3 yang juga terdapat di thumb cluster sebelah kanan.</p>

<p>Saya masih bereksperimen dengan layout layering seperti apa yang cocok. Jadi akan sangat besar dikemudian hari layout ini akan berubah.</p>

<p>Saya menghindari menggunakan layer yang terlalu banyak agar tidak terjadi “layering fatigue” yaitu kondisi “keblinger” atau kelelahan otak karena kebanyakan layer. Hahaha.</p>

<p>Selain pendekatan layer juga ada pendekatan combo button.</p>

<h2 id="combo">Combo</h2>

<p>Sesuai namanya combo button berarti menekan 2 atau lebih button secara bersama-sama untuk memanggil fungsinya.</p>

<p>Saya tidak terlalu banyak menggunakan combo button. Hanya saya pergunakan untuk hal-hal yang berkaitan dengan pengaturan saja.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-07-08-review-split-keyboard-chocofi/gambar_14.png" alt="gambar 14" /></p>

<h2 id="kesan-penulis">Kesan penulis</h2>

<p>Beberapa manfaat yang saya rasakan setelah mencoba menggunakan Chocofi split keyboard.</p>

<ol>
  <li>Kita di-<em>encourage</em> untuk menggunakan <em>touch typing</em>. Karena (dengan split keyboard) jika tidak menggunakan <em>touch typing</em> artinya kita akan melihat ke dua sisi keyboard, bisa di sisi kanan atau kiri. Split keyboard membuat proses mengetik menjadi tidak efektif.</li>
  <li>Karena “dipaksa” untuk menggunakan <em>touch typing</em>, membuat jari-jemari menjadi lebih disiplin dengan porsinya masing-masing. Ini sangat cocok dengan layout split keyboard yang terbelah jadi dua di sisi kanan dan kiri. Tidak ada jari di tangan kiri yang menyeberang ke sisi kanan, begitu pula sebaliknya.</li>
  <li>Minim typo. Karena jarak tangan cukup berjarak dan tidak saling berdekatan. Ini menyebabkan tidak terjadi <em>race condition</em> saat pengiriman sinyal dari otak ke dua sisi tangan (note: ini pendapat saya, saya belum mencari literaturenya).</li>
  <li>Proses adaptasi jika sudah bisa mengetik dengan <em>touch typing</em> tidak terlalu lama. Adaptasi dari staggered ke column-staggered juga tidak terlalu lama. Saya 1 pekan sudah bisa menyesuaikan dengan column-staggered dari staggered. Jujur lebih nyaman menggetik di column-staggered (bisa jadi ortholinear juga lebih nyaman, saya belum punya keyboard dengan ortholinear). Karena posisi jari dari homerow hanya perlu bergerak ke atas atau ke bawah, bukan serong atas atas atau serong bawah.</li>
  <li>Sangat mudah diprogram ulang. Karena menggunakan ZMK Firmware, sehingga sangat mudah untuk diprogram ulang jika kita mau memodifikasi tombol dan layer sesuai dengan kebutuhan kita.</li>
  <li>Berpotensi besar untuk dicustom sendiri sesuai keinginan dan kebutuhan. Misal ingin ganti keycaps, ganti switch, ingin ganti case shield nya, dan lain-lain.</li>
  <li>Karena point 6, artinya juga mudah untuk diperbaiki sendiri.</li>
</ol>

<blockquote>
  <p>Dari beberapa kesan tersebut, dapat terlihat jelas bahwa fondasi utama jika ingin menikmati mengetik dengan keyboard adalah <em>touch typing</em>.</p>
</blockquote>

<p>Beberapa hal yang saya tidak begitu nyaman dengan Chocofi split keyboard.</p>

<ol>
  <li>Barangnya sulit didapat. Karena builder ada di luar negeri, yang tersedia di marketplace Indo tidak begitu beragam.</li>
  <li>Learning cuve nya lumayan. Untuk dapat menggunakan split keyboard, kita harus menyediakan waktu untuk menggunakan. Berteman dengan ketidaknyamanan untuk beberapa saat.</li>
  <li>Chocofi tidak sepopuler Corne. Sehingga tidak banyak yang membuat modifikasi, terutama dibagian case. Karena kelebihan dari keyboard seperti ini adalah sangat mudah untuk bergonta-ganti case.</li>
</ol>

<h2 id="pesan-penulis">Pesan penulis</h2>

<p>Split keyboard bukanlah level tertinggi dari penggunaan keyboard. Split keyboard hanya opsi atau pilihan dari beberapa pilihan model keyboard yang beredar di pasaran saat ini. Tidak semua orang cocok menggunakan split keyboard. Pergunakan perkakas/tools (dalam hal ini keyboard) yang memang nyaman kamu gunakan.</p>

<h2 id="update-keymap-2026-08-06">Update Keymap 2026-08-06</h2>

<div class="mb-8">
  <div class="relative w-full pb-[56.25%] h-0 overflow-hidden max-w-full">
    <iframe class="absolute top-0 left-0 w-full h-full" src="https://www.youtube.com/embed/8fjaZJeFjAI" loading="lazy" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

<h2 id="referensi">Referensi</h2>

<ol>
  <li>
    <p><a href="https://zmk.dev/">ZMK Firmware</a> <br />
Diakses tanggal: 2026-07-11</p>
  </li>
  <li>
    <p><a href="https://nickcoutsos.github.io/keymap-editor/">Nickcoutsos Keymap Editor</a> <br />
Diakses tanggal: 2026-07-11</p>
  </li>
</ol>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="splitkeyboard" /><category term="chocofi" /><summary type="html"><![CDATA[Baru 1 jam menggunakan split keyboard, otak serasa terbelah jadi dua.]]></summary></entry><entry><title type="html">Setup Meja Kerja 5.1</title><link href="https://bandithijo.pages.dev/blog/setup-meja-kerja-5-1" rel="alternate" type="text/html" title="Setup Meja Kerja 5.1" /><published>2026-06-23T06:00:00+08:00</published><updated>2026-06-23T06:00:00+08:00</updated><id>https://bandithijo.pages.dev/blog/setup-meja-kerja-5-1</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/setup-meja-kerja-5-1"><![CDATA[<h2 id="pendahuluan">Pendahuluan</h2>

<p>Meja belajar merupakan hal yang sangat personal untuk saya. Sejak SD saya diberikan meja belajar di kamar oleh orang tua saya. Sejauh ingatan saya, di masa sekolah, sejak SD sampai SMA, saya pernah punya 3 model meja belajar. Mulai dari yang model seperti meja kantoran, kemudian model yang memiliki rak 2 tingkat di atas meja belajar, yang terakhir adalah model meja belajar yang terintegrasi untuk meletakkan komputer (layar monitor CRT beserta CPU di bagian bawahnya). Saat kuliah saya juga memilih untuk menggunakan meja belajar. Saya sudah benar-benar melekat erat dengan meja belajar. Sebagian besar waktu saya di rumah mungkin di depan meja belajar.</p>

<p>Oh yaa, berhubung sekarang meja belajar ini sudah berubah jadi meja kerja, maka penamaan meja belajar untuk selanjutnya akan saya sebut dengan meja kerja.</p>

<p>Penamaan meja kerja 5.1 ini artinya meja kerja yang saya gunakan saat ini adalah meja kelima dengan modifikasi versi 1.</p>

<blockquote>
  <p>INFO</p>

  <p>Sebenarnya proses modifikasi meja ini sudah terjadi sejak 1 Desember 2024. Tapi baru sempat saya dokumentasikan sekarang. 🤣</p>
</blockquote>

<p>Berikut ini adalah perjalanan modifikasi meja kerja 5.0 menjadi 5.1.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_01.jpg" alt="Gambar 1" /></p>

<p>Gambar 1. Setup meja belajar 5.0 sebelum dimodifikasi (tampak depan)</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_02.jpg" alt="Gambar 2" /></p>

<p>Gambar 2. Setup meja belajar 5.0 sebelum dimodifikasi (tampak samping)</p>

<h2 id="alasan-memodifikasi-meja-kerja">Alasan memodifikasi meja kerja</h2>

<p>Alasan saya memodifikasi meja kerja adalah karena saya menambah perangkat baru yang ingin saya letakkan di meja belajar. Namun, karena tidak mungkin semua alat berada di atas meja utama, saya memutuskan untuk menambahkan rak untuk meletakkan peralatan tambahan tersebut.</p>

<p>Saya sebut sebagai “rak level 1” karena berada 1 level (tingkat) di atas meja belajar.</p>

<p>Setelah banyak mempertimbangkan mau seperti apa rak yang saya buat, akhirnya saya memutuskan untuk membuat rak semi-permanent dengan menggunakan besi siku.</p>

<h2 id="bahan-bahan-yang-dibutuhkan">Bahan-bahan yang dibutuhkan</h2>

<p>Bahan-bahan yang saya beli untuk membuat rak level 1, sebagai berikut:</p>
<ol>
  <li>Besi siku panjang 3 meter, tebal 1 mm x 2 batang</li>
  <li>Triplek 3 mm x 1 lembar</li>
  <li>Mur baut untuk besi siku x 25 biji</li>
  <li>Plat siku x 12 lembar</li>
  <li>Kaki karet untuk besi siku x 2 buah</li>
</ol>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_03.jpg" alt="Gambar 3" /></p>

<p>Gambar 3. Wah ternyata tripleknya kebesaran, padahal saya cuma akan menggunakan 120x20 cm</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_04.jpg" alt="Gambar 4" /></p>

<p>Gambar 4. Besi siku (tampak jauh)</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_05.jpg" alt="Gambar 5" /></p>

<p>Gambar 5. Besi siku (tampak dekat)</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_06.jpg" alt="Gambar 6" /></p>

<p>Gambar 6. Mur, Baut, dan kaki karet untuk besi siku</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_07.jpg" alt="Gambar 7" /></p>

<p>Gambar 7. Plat siku</p>

<h2 id="alat-alat-yang-diperlukan">Alat-alat yang diperlukan</h2>

<p>Alat-alat yang dibutuhkan, sebagai berikut:</p>
<ol>
  <li>Gergaji besi</li>
  <li>Kunci pas ukuran 12</li>
  <li>Meteran</li>
  <li>Penggaris</li>
  <li>Pulpen</li>
  <li>Paki dan Palu (untuk melubangi triplek)</li>
</ol>

<p>Setelah alat dan bahan lengkap, selanjutnya buat desainnya.</p>

<h2 id="desain-dan-rancangan">Desain dan rancangan</h2>

<p>Dari desain yang saya buat, saya membutuhkan ukuran:</p>

<table>
  <thead>
    <tr>
      <th>Panjang</th>
      <th>Jumlah</th>
      <th>Keterangan</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>20 cm</td>
      <td>x 2</td>
      <td>untuk rak</td>
    </tr>
    <tr>
      <td>120 cm</td>
      <td>x 4</td>
      <td>2 untuk kaki, 2 untuk rak</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>INFO</p>

  <p>Panjang dari meja saya 120 x 60 cm, karena itu saya membuat panjang rak level 1 ini 120 cm, dengan tinggi 120 cm juga.</p>
</blockquote>

<h2 id="implementasi">Implementasi</h2>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_08.jpg" alt="Gambar 8" /></p>

<p>Gambar 8. Besi siku yang sudah dipotong sesuai desain</p>

<p>Setelah dipotong, selanjutnya dirakit dengan mur dan baut dan setiap sudut sikunya dibantu dengan plat siku agar bentuknya tidak berubah.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_09.jpg" alt="Gambar 9" /></p>

<p>Gambar 9. Setelah dirakit mulai kelihatan bentuknya</p>

<p>Selanjutnya tinggal diberikan papan. Tapi saya memilih menggunakan triplek agar tidak berat.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_10.jpg" alt="Gambar 10" /></p>

<p>Gambar 10. Proses pembuatan lubang di triplek</p>

<p>Setelah keempat sudut triplek sudah dilubangi, selanjutnya tinggal dirakit ke rak.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_11.jpg" alt="Gambar 11" /></p>

<p>Gambar 11. Meja kerja setelah ditambahkan rak level 1 dengan besi siku (tampak samping)</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_12.jpg" alt="Gambar 12" /></p>

<p>Gambar 12. Meja kerja setelah ditambahkan rak level 1 dengan besi siku (tampak depan)</p>

<p>Selesai!</p>

<p>Sekarang saya sudah punya rak level 1. Sekarang meja saya tidak terlalu penuh dengan peralatan lagi.</p>

<h2 id="2026">2026</h2>

<p>Setelah 1 tahun menggunakan rak ini, saya merasa raknya kurang tinggi. Jadi saya tinggikan kakinya 10 cm. Penambahan tinggi 10 cm ini lumayan memberikan tambahan space untuk monitor eksternal agar bisa lebih tinggi selevel mata saya.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-23-setup-meja-kerja-5-1/gambar_13.jpg" alt="Gambar 13" /></p>

<p>Gambar 13. Sebelum ditinggikan (kiri), setelah ditinggikan (kanan)</p>

<h2 id="pesan-penulis">Pesan Penulis</h2>

<p>Meja belajar atau meja kerja adalah tempat saya paling banyak menghabiskan waktu untuk belajar, membaca, dan bekerja. Meja kerja menjadi sesuatu yang sangat personal untuk saya. Maka dari itu saya tidak berusaha meniru setup meja orang lain. Yang menurut orang lain bagus, belum tentu menurut saya. Begitu juga sebaliknya, yang menurut orang lain jelek, belum tentu menurut saya jelek.</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="desk" /><summary type="html"><![CDATA[Sejak masih SD, saya punya meja belajar di kamar. Meja belajar adalah tempat saya banyak menghabiskan waktu membaca buku maupun ngulik dengan komputer. Oleh karena itu, meskipun saya kerja dari rumah, saya prefer bekerja menggunakan meja kerja.]]></summary></entry><entry><title type="html">Mengganti Fingerprint ThinkPad X260</title><link href="https://bandithijo.pages.dev/blog/mengganti-fingerprint-thinkpad-x260" rel="alternate" type="text/html" title="Mengganti Fingerprint ThinkPad X260" /><published>2026-06-22T06:17:00+08:00</published><updated>2026-06-22T06:17:00+08:00</updated><id>https://bandithijo.pages.dev/blog/mengganti-fingerprint-thinkpad-x260</id><content type="html" xml:base="https://bandithijo.pages.dev/blog/mengganti-fingerprint-thinkpad-x260"><![CDATA[<p>Fingerprint di ThinkPad X260 adalah peripheral yang sangat memudahkan saya untuk authentikasi, terutama saat menjalankan command terminal yang menggunakan <code class="language-plaintext highlighter-rouge">sudo</code>. Sangat praktis, tinggal finger scroll, tidak perlu mengetik password.</p>

<p>Meskipun saya menggunakan Linux, tapi fingerprint tetap dapat digunakan. Saya sudah pernah menulis artikel tentang ini, <a href="https://bandithijo.pages.dev/blog/mengatur-fungsi-fingerprint-arch-linux">Mengatur Fungsi dari Fingerprint pada Arch Linux</a>.</p>

<p>Kepraktisan tersebut tidak berlangsung lama, karena plafon kamar saya bocor, dan tetesannya mengenai palmrest (kejadian sekitar tahun 2017-2018). Untungnya fingerprint di ThinkPad X260 ini adalah modul board terpisah dari Motherboard, jika rusak, cukup mengganti fingerprint board module saja.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-22-mengganti-fingerprint-thinkpad-x260/gambar_01.jpg" alt="Gambar 1" /></p>

<p>Gambar 1. Fingerprint Board (Tampak Atas)</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-22-mengganti-fingerprint-thinkpad-x260/gambar_02.jpg" alt="Gambar 2" /></p>

<p>Gambar 2. Fingerprint Board (Tampak Bawah)</p>

<p><em>Long story short</em>, fingerprint board yang saya pakai ini (berdasarkan keterangan seller) adalah copotan dari fingerprint board ThinkPad X250. Berdasarkan bentuk ThinkPad X260 memang memiliki kesamaan dengan seri X240 dan X250. Ketiga lineup seri ini memang memiliki parts yang bisa digunakan bersama.</p>

<p>Untuk mengganti fingerprint, harus mengangkat: internal battery (jika ada), drive (SSD) case, speaker left &amp; right, dan motherboard.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-22-mengganti-fingerprint-thinkpad-x260/gambar_03.jpg" alt="Gambar 3" /></p>

<p>Gambar 3. Bongkar ThinkPad X260 sampai Motherboard</p>

<p>Kita melepas plat cover besi yang menutupi fingerprint board (Gambar 4).</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-22-mengganti-fingerprint-thinkpad-x260/gambar_04.jpg" alt="Gambar 4" /></p>

<p>Gambar 4. Fingerprint Board Baru (Kiri) dan Fingerpint Board Lama (Kanan, masih tercover plat)</p>

<p>Setelah plat cover besi terlepas, fingerprint board sudah bisa untuk diganti. Jangan lupa untuk melepaskan kabel flexiblenya.</p>

<p><img src="https://bandithijo.pages.dev/assets/blog/2026-06-22-mengganti-fingerprint-thinkpad-x260/gambar_05.jpg" alt="Gambar 5" /></p>

<p>Gambar 5. Fingerprint Board Baru (Kiri) dan Fingerpint Board Lama (Kanan, cover sudah terlepas, siap diganti)</p>

<p>Selesai.</p>

<p>Meskipun terlihat mengerikan, sebenarnya proses pembongkaran ini tidak terlalu sulit. Yang terpenting pelan-pelan dan hati-hati.</p>]]></content><author><name>BanditHijo</name></author><category term="blog" /><category term="thinkpad" /><category term="fingerprint" /><summary type="html"><![CDATA[Proses penggantian fingerprint ThinkPad X260.]]></summary></entry></feed>