[{"data":1,"prerenderedAt":1840},["ShallowReactive",2],{"blog-posts":3},[4,221,451,980,1256,1442,1667],{"id":5,"title":6,"body":7,"category":200,"cover":201,"date":202,"description":203,"extension":204,"meta":205,"navigation":206,"path":207,"readingTime":208,"seo":209,"sitemap":210,"stem":215,"tags":216,"__hash__":220},"blog\u002Fblog\u002F07.perjalanan-terjauh-xl-ultraverse.md","Menjadi Jantung di XL Ultraverse",{"type":8,"value":9,"toc":192},"minimark",[10,29,37,42,45,52,63,66,70,86,92,95,99,111,118,124,135,141,152,159,163,166,172,178,185,189],[11,12,13,14,24,25,28],"p",{},"Tanggal 31 Januari 2026 kemarin jd salah satu momen paling membekas buat saya dan tim ",[15,16,17],"strong",{},[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fwww.aptronim.com\u002Faptrocode",[22],"nofollow","Aptrocode",". Kami dapet kepercayaan besar buat pegang peran vital di sebuah perhelatan akbar: ",[15,26,27],{},"XL Ultraverse",".",[11,30,31,32,36],{},"Bagi saya pribadi, ini bkn sekadar urusan profesional, tp jg menandai ",[33,34,35],"u",{},"perjalanan darat terjauh yg pernah saya tempuh"," seumur hidup: berangkat langsung dr Jakarta, tempat tinggal saya, menuju ke Surabaya.",[38,39,41],"h2",{"id":40},"berangkat-menuju-timur-jakarta-ke-surabaya","Berangkat Menuju Timur: Jakarta ke Surabaya",[11,43,44],{},"Perjalanan darat menembus ratusan kilometer aspal tol Trans Jawa bener\" nguras tenaga, tp rasa antusias kami jauh lebih dominan. Menghabiskan waktu belasan jam di dalam mobil bareng tim ngasih bnyk obrolan seru dan ruang buat nyiapin mental sebelum hari-H.",[11,46,47],{},[48,49],"img",{"alt":50,"src":51},"Mampir sejenak di rest area saat perjalanan berangkat menembus tol Trans Jawa","\u002Fimages\u002Fcapture\u002Fphoto130.jpg",[53,54,60],"pre",{"className":55,"code":57,"language":58,"meta":59},[56],"language-text","📍 Ekspedisi Darat:\nJakarta ──> Tol Trans Jawa ──> Rest Area ──> Surabaya\nTotal jarak tempuh: ~780+ km\n","text","",[61,62,57],"code",{"__ignoreMap":59},[11,64,65],{},"Foto di atas saya ambil pas kami mampir sejenak di rest area buat istirahat, ngisi tenaga, dan ngelurusin kaki sebelum lanjut gas lg menuju Surabaya.",[38,67,69],{"id":68},"h-1-loading-mempersiapkan-panggung-utama","H-1 Loading: Mempersiapkan Panggung Utama",[11,71,72,73,77,78,81,82,85],{},"Sesampainya di Surabaya, kami ga punya waktu buat santai-santai. Tepat H-1 sebelum ",[74,75,76],"em",{},"showtime",", tim langsung meluncur ke ",[74,79,80],{},"venue"," buat proses ",[15,83,84],{},"loading",", perakitan instalasi, dan penataan seluruh infrastruktur teknis.",[11,87,88],{},[48,89],{"alt":90,"src":91},"Suasana loading dan penataan perangkat di venue H-1 sebelum acara dimulai","\u002Fimages\u002Fcapture\u002Fphoto131.jpg",[11,93,94],{},"Di ruangan inilah seluruh persiapan fisik diuji. Kami mastiin setiap kabel, layar, dan perangkat komputasi terpasang presisi. Uji coba jaringan dan simulasi beban kami lakuin berulang kali sampai larut malam demi mastiin ga ada satu pun kendala pas acara berjalan.",[38,96,98],{"id":97},"jantung-realtime-3-kota","Jantung Realtime 3 Kota",[11,100,101,102,107,108,28],{},"Di event XL Ultraverse ini, saya dan tim ",[15,103,104],{},[18,105,23],{"href":20,"rel":106},[22]," bener\" berdiri sbg ",[33,109,110],{},"jantungnya acara",[11,112,113,114,117],{},"Kenapa? Krn kami yg merancang dan mengeksekusi ",[15,115,116],{},"sistem portal realtime"," yg menghubungkan tiga kota besar sekaligus scr serentak:",[53,119,122],{"className":120,"code":121,"language":58,"meta":59},[56],"       ┌─────────── Surabaya ───────────┐\n       │                                │\n[ Realtime Portal ]              [ Realtime Portal ]\n       │                                │\n    Jakarta ────────────────────────── Bali\n",[61,123,121],{"__ignoreMap":59},[11,125,126,127,130,131,134],{},"Tantangan terbesarnya ada di ",[15,128,129],{},"latensi",". Di event interaktif semegah ini, sedikit ",[74,132,133],{},"lag"," aja bakal ngerusak keseluruhan pengalaman panggung:",[53,136,139],{"className":137,"code":138,"language":58,"meta":59},[56],"❌ Layanan Konferensi Umum : Delay 1 - 3 detik (interaksi patah dan canggung)\n✅ Portal Khusus Aptrocode  : Latensi ultra-rendah, interaksi instan tanpa jeda\n",[61,140,138],{"__ignoreMap":59},[11,142,143,144,147,148,151],{},"Kalau cuma ngandalin Zoom atau layanan konferensi biasa, delay-nya bakal sangat kerasa dan ga mungkin ngasih ilusi portal yg mulus. Di sini, sistem kami berhasil nekan delay sampai ",[15,145,146],{},"sangat-sangat kecil",", mendekati ",[74,149,150],{},"realtime"," instan.",[11,153,154,155,158],{},"Soal gimana arsitekturnya atau teknologi apa yg kami racik di balik layar? Biarlah itu tetep jd rahasia dapur tim ",[18,156,23],{"href":20,"rel":157},[22]," 🤫. Yg paling penting, ngeliat interaksi lintas pulau berjalan tanpa kendala teknis adalah kepuasan batin tersendiri sbg seorang builder.",[38,160,162],{"id":161},"drama-ban-bocor-di-perjalanan-pulang","Drama Ban Bocor di Perjalanan Pulang",[11,164,165],{},"Setelah acara selesai dan berjalan sukses, kami memutuskan buat langsung bersiap pulang ke Jakarta. Rasa lega dan puas bercampur capek luar biasa.",[11,167,168,169,28],{},"Tp ternyata petualangan belum bener\" selesai. Di tengah jalan pulang, mobil kami sempat ngalamin musibah: ",[15,170,171],{},"ban bocor",[11,173,174],{},[48,175],{"alt":176,"src":177},"Drama ban bocor di tengah jalan tol saat perjalanan pulang ke Jakarta","\u002Fimages\u002Fcapture\u002Fphoto132.jpg",[11,179,180,181,184],{},"Untungnya kami selalu waspada dan bawa ",[15,182,183],{},"ban cadangan"," yg siap pakai di bawah mobil. Di pinggir jalan tol, dengan sisa tenaga yg ada, kami bahu-membahu dongkrak mobil dan ganti ban sampai akhirnya bisa melanjutkan perjalanan dengan selamat sampai rumah.",[38,186,188],{"id":187},"penutup","Penutup",[11,190,191],{},"Pengalaman XL Ultraverse ini ngajarin saya bnyk hal. Tentang tanggung jawab megang sistem krusial, kekompakan tim di bawah tekanan tinggi, sampai pentingnya persiapan matang buat hal\" tak terduga.",{"title":59,"searchDepth":193,"depth":193,"links":194},2,[195,196,197,198,199],{"id":40,"depth":193,"text":41},{"id":68,"depth":193,"text":69},{"id":97,"depth":193,"text":98},{"id":161,"depth":193,"text":162},{"id":187,"depth":193,"text":188},"life",null,"2026-02-04","Catatan perjalanan darat terjauh saya dari Jakarta ke Surabaya, membangun portal realtime 3 kota bareng tim Aptrocode, hingga drama ban bocor di jalan pulang.","md",{},true,"\u002Fblog\u002Fperjalanan-terjauh-xl-ultraverse","4 min read",{"title":6,"description":203},{"loc":207,"images":211},[212,213,214],{"loc":51},{"loc":91},{"loc":177},"blog\u002F07.perjalanan-terjauh-xl-ultraverse",[217,23,218,219],"Life","Journey","Experience","TGlFnzvUeFbGo5VyGg6_UmK11i0rKBVztpJ0G0-XjHM",{"id":222,"title":223,"body":224,"category":200,"cover":201,"date":438,"description":439,"extension":204,"meta":440,"navigation":206,"path":441,"readingTime":208,"seo":442,"sitemap":443,"stem":444,"tags":445,"__hash__":450},"blog\u002Fblog\u002F06.belajar-di-era-agentic-ai.md","Cara Saya Belajar di Era Agentic AI",{"type":8,"value":225,"toc":431},[226,233,239,245,249,258,271,278,294,298,301,308,314,321,327,339,346,350,353,356,364,367,380,384,391,394,400,413,415,422,425],[11,227,228,229,232],{},"Perkembangan AI, terutama di era ",[74,230,231],{},"agentic AI"," saat ini, sering memicu perdebatan: apakah AI bikin manusia makin malas dan bodoh?",[11,234,235,236],{},"Jawaban jujur saya: ",[15,237,238],{},"belum tentu, semua tergantung orangnya dan cara kita menggunakannya.",[11,240,241,242,28],{},"AI jelas bisa bikin daya pikir tumpul kalau kita telan semua jawabannya mentah\". Tp di tangan orang yg tepat, AI justru bisa jd ",[33,243,244],{},"akselerator belajar yg luar biasa",[38,246,248],{"id":247},"tetap-aware-bukan-parno","Tetap Aware, Bukan Parno",[11,250,251,252],{},"Prinsip utama saya cukup simpel: ",[15,253,254,255,28],{},"saya nanya apa aja ke AI, tp tetep berusaha selalu ",[74,256,257],{},"aware",[11,259,260,261,264,265,270],{},"Bkn berarti saya anti-percaya atau parno sm teknologi. Kadang saya jg percaya 100% kok buat hal\" tertentu yg sifatnya repetitif. Tp kuncinya ada di ",[15,262,263],{},"kesadaran penuh",": kita yg pegang kendali sbg ",[33,266,267],{},[74,268,269],{},"reviewer",", bkn sekadar penerima pasif.",[11,272,273,274,277],{},"Bagi saya, esensi belajar bareng AI ada di ",[15,275,276],{},"sikap kritis"," ini:",[279,280,281,288],"ul",{},[282,283,284,287],"li",{},[15,285,286],{},"Tanpa Sikap Kritis:"," Kita cuma nerima apa adanya tanpa tau alasannya, dan pelan\" kehilangan pemahaman mendalam.",[282,289,290,293],{},[15,291,292],{},"Dengan Sikap Kritis:"," Kita justru terdorong buat verifikasi, ngecek sumber, dan paham konteks masalahnya scr utuh.",[38,295,297],{"id":296},"penerapannya-saat-koding","Penerapannya Saat Koding",[11,299,300],{},"Hal ini paling kerasa pas saya ngoding.",[11,302,303,304,307],{},"Saya ga pernah langsung lempar ",[74,305,306],{},"prompt"," instan dan pasrah terima beres:",[53,309,312],{"className":310,"code":311,"language":58,"meta":59},[56],"❌ \"Tolong buatkan software manajemen tugas lengkap dengan database dan auth...\"\n",[61,313,311],{"__ignoreMap":59},[11,315,316,317,320],{},"Buat saya, koding tetep butuh ",[15,318,319],{},"pemahaman logika yg matang",". Polanya selalu saya mulai dr rancangan mandiri dulu sebelum melibatkan AI:",[53,322,325],{"className":323,"code":324,"language":58,"meta":59},[56],"Alur Kerja:\n1. Rancang arsitektur & alur logika di kepala\n2. Riset mandiri kebutuhan teknis & dependensi\n3. Brainstorming bareng AI buat cari alternatif solusi\n4. Susun prompt bertahap (per modul \u002F per fungsi)\n",[61,326,324],{"__ignoreMap":59},[11,328,329,330,332,333,28],{},"Biasanya saya bikin gambaran kasarnya dulu di kepala, riset alur dan kebutuhannya, lalu riset bareng AI buat dapet referensi atau sudut pandang alternatif. Begitu gambarannya udah kebentuk jelas, baru saya susun ",[74,331,306],{},"-nya scr bertahap — ",[33,334,335,336,338],{},"per ",[74,337,306],{},", per fungsi, atau per modul",[11,340,341,342,345],{},"Beda rasanya antara sekadar minta dibuatkan sm beneran manfaatin AI sbg ",[15,343,344],{},"rekan diskusi",". AI ngebantu eksplorasi dan percepat eksekusi, sementara arah desain dan keputusan logikanya tetep ada di kendali kita.",[38,347,349],{"id":348},"tau-hal-yg-sebelumnya-luput","Tau Hal yg Sebelumnya Luput",[11,351,352],{},"Menariknya, AI bkn cuma bantu urusan teknis, tp jg ngebongkar hal\" mendasar sehari-hari yg sebelumnya saya ga tau.",[11,354,355],{},"Sebelum kenal AI, saya ga pernah mikir dalam soal hal sepele:",[279,357,358,361],{},[282,359,360],{},"Cara pakai sabun mandi yg benar biar kelembapan kulit tetep terjaga.",[282,362,363],{},"Urutan merawat gigi yg tepat dan pentingnya Listerine.",[11,365,366],{},"Kita sering anggap remeh rutinitas harian cuma krn udah bertahun\" ngelakuinnya. Pas iseng nanya dan eksplor bareng AI, baru sadar bnyk kebiasaan keliru yg selama ini saya lakuin.",[11,368,369,370,373,374,379],{},"Dari hal sekecil ",[33,371,372],{},"perawatan diri"," sampai konsep ",[33,375,376],{},[74,377,378],{},"distributed systems",", AI ngebuka wawasan baru yg sebelumnya bahkan ga kepikiran buat dicari di mesin pencari.",[38,381,383],{"id":382},"seni-overthinking-positif-menantang-jawaban-ai","Seni \"Overthinking\" Positif: Menantang Jawaban AI",[11,385,386,387,390],{},"Saat interaksi sm AI, saya sengaja biasain diri buat agak ",[74,388,389],{},"overthinking",". Pas AI ngasih kesimpulan, tugas saya bkn langsung nerima gitu aja, tp ngejar alasan di baliknya.",[11,392,393],{},"Contoh simpel: pas AI nyaranin pasta gigi tertentu sbg yg terbaik, saya ga langsung telan. Saya bakal bedah balik:",[53,395,398],{"className":396,"code":397,"language":58,"meta":59},[56],"🔍 Pertanyaan Verifikasi ke AI:\n- \"Kandungannya emang apa sampai dibilang terbaik?\"\n- \"Kenapa milih merek itu dibanding kompetitor utamanya?\"\n- \"Apa plus-minus masing\" kandungan aktifnya buat enamel gigi?\"\n",[61,399,397],{"__ignoreMap":59},[11,401,402,403],{},"Lewat cara ini, saya bkn cuma dapet nama produk. Saya jd paham zat aktifnya, fungsinya buat enamel gigi, sampai perbandingan objektifnya. ",[15,404,405,406,409,410,28],{},"Jawaban AI bkn garis ",[74,407,408],{},"finish",", tp ",[33,411,412],{},"pemantik diskusi",[38,414,188],{"id":187},[11,416,417,418,421],{},"AI diciptakan bkn buat gantiin otak kita berpikir, tp jd ",[15,419,420],{},"rekan sparring"," tanpa batas waktu.",[11,423,424],{},"Apakah AI bikin kita bodoh atau makin pintar? Jawabannya tetep berpulang ke masing\" pengguna. Asal kita punya rasa penasaran tinggi, kritis, dan berani verifikasi, kehadiran AI bisa jd ruang belajar baru yg sangat fleksibel.",[426,427,428],"blockquote",{},[11,429,430],{},"Poin\" di tulisan ini relevan buat kondisi saat ini. Buat tahun\" mendatang, kita ga pernah tau AI bakal jd kayak apa. Yg paling penting, kita cuma perlu terus adaptasi sm perkembangan zaman.",{"title":59,"searchDepth":193,"depth":193,"links":432},[433,434,435,436,437],{"id":247,"depth":193,"text":248},{"id":296,"depth":193,"text":297},{"id":348,"depth":193,"text":349},{"id":382,"depth":193,"text":383},{"id":187,"depth":193,"text":188},"2025-11-15","Sudut pandang pribadi soal belajar di era agentic AI — menjaga nalar tetap kritis, membiasakan verifikasi, dan bagaimana memposisikan diri tanpa pasrah sepenuhnya.",{},"\u002Fblog\u002Fbelajar-di-era-agentic-ai",{"title":223,"description":439},{"loc":441},"blog\u002F06.belajar-di-era-agentic-ai",[446,447,448,449],"AI","Mindset","Learning","Productivity","Cc9ezH9D9MenKpyanTy6eMpEMDfIPyDZYzR0xt3kCwU",{"id":452,"title":453,"body":454,"category":967,"cover":201,"date":968,"description":969,"extension":204,"meta":970,"navigation":206,"path":971,"readingTime":208,"seo":972,"sitemap":973,"stem":974,"tags":975,"__hash__":979},"blog\u002Fblog\u002F05.code-snippets-vs-code.md","Code Snippets di Visual Studio Code",{"type":8,"value":455,"toc":960},[456,460,474,481,485,520,523,844,852,856,859,915,919,922,942,946,953,956],[38,457,459],{"id":458},"pengertian-code-snippets","Pengertian Code Snippets",[11,461,462,465,466,469,470,473],{},[15,463,464],{},"Code snippets"," adalah potongan kode atau template teks yg sering dipakai dan bisa disisipkan scr instan ke dlm editor lewat singkatan (",[74,467,468],{},"prefix",") dan tombol pintasan (",[74,471,472],{},"shortcut",").",[11,475,476,477,480],{},"Snippets tersimpan di dlm pengaturan editor (Visual Studio Code) dan efektif banget buat ngeliminasi pengetikan kode ",[74,478,479],{},"boilerplate"," yg berulang\" tiap kali bikin komponen atau fungsi baru.",[38,482,484],{"id":483},"cara-nambah-snippets-di-vs-code","Cara Nambah Snippets di VS Code",[486,487,488,502,517],"ol",{},[282,489,490,491,494,495,498,499,28],{},"Buka menu pengaturan snippets: Tekan ",[61,492,493],{},"Ctrl + Shift + P"," (atau ",[61,496,497],{},"Cmd + Shift + P"," di macOS), lalu ketik ",[15,500,501],{},"Preferences: Configure User Snippets",[282,503,504,505,508,509,512,513,516],{},"Pilih bahasa spesifik (misal ",[61,506,507],{},"vue.json",", ",[61,510,511],{},"typescript.json",") atau pilih ",[15,514,515],{},"New Global Snippets file"," buat snippet yg berlaku di semua jenis berkas.",[282,518,519],{},"Tulis definisi snippet dlm format JSON.",[11,521,522],{},"Berikut contoh berkas konfigurasi snippet global yg saya pakai:",[53,524,529],{"className":525,"code":526,"filename":527,"language":528,"meta":59,"style":59},"language-json shiki shiki-themes github-light github-dark","{\n  \"Import Module\": {\n    \"scope\": \"javascript,typescript\",\n    \"prefix\": \"imp\",\n    \"body\": [\n      \"import { $1 } from '$2';\"\n    ],\n    \"description\": \"Import a module\"\n  },\n  \"Vue 3 Script Setup SFC\": {\n    \"scope\": \"vue\",\n    \"prefix\": \"vscript\",\n    \"body\": [\n      \"\u003Cscript setup lang=\\\"ts\\\">\",\n      \"$1\",\n      \"\u003C\u002Fscript>\",\n      \"\",\n      \"\u003Ctemplate>\",\n      \"  \u003Cdiv>\",\n      \"    $2\",\n      \"  \u003C\u002Fdiv>\",\n      \"\u003C\u002Ftemplate>\"\n    ],\n    \"description\": \"Vue 3 TypeScript Single File Component template\"\n  },\n  \"Define Props\": {\n    \"scope\": \"vue,typescript\",\n    \"prefix\": \"dprops\",\n    \"body\": [\n      \"defineProps\u003C{\",\n      \"  $1: $2;\",\n      \"}>();\"\n    ],\n    \"description\": \"Vue defineProps declaration\"\n  }\n}\n","global.code-snippets","json",[61,530,531,540,549,565,578,587,593,599,610,616,624,636,648,655,674,682,690,698,706,714,722,730,736,741,751,756,764,776,788,795,803,811,817,822,832,838],{"__ignoreMap":59},[532,533,536],"span",{"class":534,"line":535},"line",1,[532,537,539],{"class":538},"sVt8B","{\n",[532,541,542,546],{"class":534,"line":193},[532,543,545],{"class":544},"sj4cs","  \"Import Module\"",[532,547,548],{"class":538},": {\n",[532,550,552,555,558,562],{"class":534,"line":551},3,[532,553,554],{"class":544},"    \"scope\"",[532,556,557],{"class":538},": ",[532,559,561],{"class":560},"sZZnC","\"javascript,typescript\"",[532,563,564],{"class":538},",\n",[532,566,568,571,573,576],{"class":534,"line":567},4,[532,569,570],{"class":544},"    \"prefix\"",[532,572,557],{"class":538},[532,574,575],{"class":560},"\"imp\"",[532,577,564],{"class":538},[532,579,581,584],{"class":534,"line":580},5,[532,582,583],{"class":544},"    \"body\"",[532,585,586],{"class":538},": [\n",[532,588,590],{"class":534,"line":589},6,[532,591,592],{"class":560},"      \"import { $1 } from '$2';\"\n",[532,594,596],{"class":534,"line":595},7,[532,597,598],{"class":538},"    ],\n",[532,600,602,605,607],{"class":534,"line":601},8,[532,603,604],{"class":544},"    \"description\"",[532,606,557],{"class":538},[532,608,609],{"class":560},"\"Import a module\"\n",[532,611,613],{"class":534,"line":612},9,[532,614,615],{"class":538},"  },\n",[532,617,619,622],{"class":534,"line":618},10,[532,620,621],{"class":544},"  \"Vue 3 Script Setup SFC\"",[532,623,548],{"class":538},[532,625,627,629,631,634],{"class":534,"line":626},11,[532,628,554],{"class":544},[532,630,557],{"class":538},[532,632,633],{"class":560},"\"vue\"",[532,635,564],{"class":538},[532,637,639,641,643,646],{"class":534,"line":638},12,[532,640,570],{"class":544},[532,642,557],{"class":538},[532,644,645],{"class":560},"\"vscript\"",[532,647,564],{"class":538},[532,649,651,653],{"class":534,"line":650},13,[532,652,583],{"class":544},[532,654,586],{"class":538},[532,656,658,661,664,667,669,672],{"class":534,"line":657},14,[532,659,660],{"class":560},"      \"\u003Cscript setup lang=",[532,662,663],{"class":544},"\\\"",[532,665,666],{"class":560},"ts",[532,668,663],{"class":544},[532,670,671],{"class":560},">\"",[532,673,564],{"class":538},[532,675,677,680],{"class":534,"line":676},15,[532,678,679],{"class":560},"      \"$1\"",[532,681,564],{"class":538},[532,683,685,688],{"class":534,"line":684},16,[532,686,687],{"class":560},"      \"\u003C\u002Fscript>\"",[532,689,564],{"class":538},[532,691,693,696],{"class":534,"line":692},17,[532,694,695],{"class":560},"      \"\"",[532,697,564],{"class":538},[532,699,701,704],{"class":534,"line":700},18,[532,702,703],{"class":560},"      \"\u003Ctemplate>\"",[532,705,564],{"class":538},[532,707,709,712],{"class":534,"line":708},19,[532,710,711],{"class":560},"      \"  \u003Cdiv>\"",[532,713,564],{"class":538},[532,715,717,720],{"class":534,"line":716},20,[532,718,719],{"class":560},"      \"    $2\"",[532,721,564],{"class":538},[532,723,725,728],{"class":534,"line":724},21,[532,726,727],{"class":560},"      \"  \u003C\u002Fdiv>\"",[532,729,564],{"class":538},[532,731,733],{"class":534,"line":732},22,[532,734,735],{"class":560},"      \"\u003C\u002Ftemplate>\"\n",[532,737,739],{"class":534,"line":738},23,[532,740,598],{"class":538},[532,742,744,746,748],{"class":534,"line":743},24,[532,745,604],{"class":544},[532,747,557],{"class":538},[532,749,750],{"class":560},"\"Vue 3 TypeScript Single File Component template\"\n",[532,752,754],{"class":534,"line":753},25,[532,755,615],{"class":538},[532,757,759,762],{"class":534,"line":758},26,[532,760,761],{"class":544},"  \"Define Props\"",[532,763,548],{"class":538},[532,765,767,769,771,774],{"class":534,"line":766},27,[532,768,554],{"class":544},[532,770,557],{"class":538},[532,772,773],{"class":560},"\"vue,typescript\"",[532,775,564],{"class":538},[532,777,779,781,783,786],{"class":534,"line":778},28,[532,780,570],{"class":544},[532,782,557],{"class":538},[532,784,785],{"class":560},"\"dprops\"",[532,787,564],{"class":538},[532,789,791,793],{"class":534,"line":790},29,[532,792,583],{"class":544},[532,794,586],{"class":538},[532,796,798,801],{"class":534,"line":797},30,[532,799,800],{"class":560},"      \"defineProps\u003C{\"",[532,802,564],{"class":538},[532,804,806,809],{"class":534,"line":805},31,[532,807,808],{"class":560},"      \"  $1: $2;\"",[532,810,564],{"class":538},[532,812,814],{"class":534,"line":813},32,[532,815,816],{"class":560},"      \"}>();\"\n",[532,818,820],{"class":534,"line":819},33,[532,821,598],{"class":538},[532,823,825,827,829],{"class":534,"line":824},34,[532,826,604],{"class":544},[532,828,557],{"class":538},[532,830,831],{"class":560},"\"Vue defineProps declaration\"\n",[532,833,835],{"class":534,"line":834},35,[532,836,837],{"class":538},"  }\n",[532,839,841],{"class":534,"line":840},36,[532,842,843],{"class":538},"}\n",[11,845,846,847,28],{},"Koleksi snippet pribadi saya yg lengkap dan terus diperbarui bisa diliat di ",[18,848,851],{"href":849,"rel":850},"https:\u002F\u002Fgist.github.com\u002Fadydetra\u002F0f3bb1e9717a48b6ce568d1d2fcc85e2",[22],"GitHub Gist ini",[38,853,855],{"id":854},"cara-pakai-snippets","Cara Pakai Snippets",[11,857,858],{},"Setelah snippet disimpan:",[486,860,861,890],{},[282,862,863,866,867,870,871,874,875,878,879,882,883,885,886,889],{},[15,864,865],{},"Import Module",": Cukup ketik ",[61,868,869],{},"imp"," di berkas TypeScript\u002FJavaScript lalu tekan ",[61,872,873],{},"Tab"," atau ",[61,876,877],{},"Enter",". Kursor bakal otomatis ada di ",[61,880,881],{},"$1"," (nama item yg di-import), lalu tekan ",[61,884,873],{}," lg buat pindah ke ",[61,887,888],{},"$2"," (nama path modul).",[282,891,892,895,896,899,900,903,904,906,907,910,911,914],{},[15,893,894],{},"Vue Template Instan",": Di berkas ",[61,897,898],{},".vue",", ketik ",[61,901,902],{},"vscript"," lalu tekan ",[61,905,873],{},". Seluruh struktur ",[61,908,909],{},"\u003Cscript setup lang=\"ts\">"," dan ",[61,912,913],{},"\u003Ctemplate>"," bakal langsung terisi rapi dlm sekejap.",[38,916,918],{"id":917},"variabel-bawaan-vs-code","Variabel Bawaan VS Code",[11,920,921],{},"Kamu jg bisa manfaatin variabel bawaan VS Code kayak:",[279,923,924,930,936],{},[282,925,926,929],{},[61,927,928],{},"$TM_FILENAME_BASE",": Nama berkas saat ini tanpa ekstensi (berguna buat otomatis namai komponen).",[282,931,932,935],{},[61,933,934],{},"$CURRENT_YEAR",": Tahun berjalan.",[282,937,938,941],{},[61,939,940],{},"$CLIPBOARD",": Nempelin teks yg lg ada di clipboard scr otomatis ke dlm template.",[38,943,945],{"id":944},"kesimpulan","Kesimpulan",[11,947,948,949,952],{},"Pakai snippets bkn sekadar ngirit beberapa detik waktu ngetik, tp jg njaga konsistensi standar kode dan ngurangin risiko kesalahan ketik (",[74,950,951],{},"typo",") di kode boilerplate.",[11,954,955],{},"Selamat nyoba dan selamat koding! 🚀",[957,958,959],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":59,"searchDepth":193,"depth":193,"links":961},[962,963,964,965,966],{"id":458,"depth":193,"text":459},{"id":483,"depth":193,"text":484},{"id":854,"depth":193,"text":855},{"id":917,"depth":193,"text":918},{"id":944,"depth":193,"text":945},"tech","2024-05-21","Konsep code snippets kustom dan cara bikinnya di VS Code buat ningkatin produktivitas serta kecepatan koding.",{},"\u002Fblog\u002Fcode-snippets-vs-code",{"title":453,"description":969},{"loc":971},"blog\u002F05.code-snippets-vs-code",[976,449,977,978],"VS Code","Tooling","Vue","JjqfrvCHjLiPZ9P76Oh9eYsSiVyJaVNwtq3PlHO4lJw",{"id":981,"title":982,"body":983,"category":967,"cover":201,"date":1244,"description":1245,"extension":204,"meta":1246,"navigation":206,"path":1247,"readingTime":208,"seo":1248,"sitemap":1249,"stem":1250,"tags":1251,"__hash__":1255},"blog\u002Fblog\u002F04.semantic-commit.md","Semantic Commit",{"type":8,"value":984,"toc":1235},[985,989,998,1001,1005,1012,1056,1071,1076,1152,1156,1199,1203,1206,1212,1215,1218,1224,1227,1229,1232],[38,986,988],{"id":987},"apa-itu-semantic-commit","Apa Itu Semantic Commit?",[11,990,991,993,994,997],{},[15,992,982],{}," (sering disebut jg sbg ",[74,995,996],{},"Conventional Commits",") adalah konvensi penulisan pesan commit di Git yg punya pola tertentu buat ngasih tau scr eksplisit tujuan dr perubahan kode yg dilakuin.",[11,999,1000],{},"Bayangin pas kamu kerja dlm tim besar sm ratusan commit per minggu. Tanpa format yg jelas, riwayat commit bakal kacau dan susah ditelusuri. Semantic Commit berfungsi layaknya kamus terpadu biar seluruh anggota tim bisa langsung paham konteks perubahan cuma dr satu baris pesan commit 🧐.",[38,1002,1004],{"id":1003},"format-sebenarnya-cuma-1-baris","Format Sebenarnya: Cuma 1 Baris!",[11,1006,1007,1008,1011],{},"Kenyataannya, ",[33,1009,1010],{},"99% commit yg kita tulis sehari-hari itu ya cuma 1 baris",":",[53,1013,1017],{"className":1014,"code":1015,"language":1016,"meta":59,"style":59},"language-bash shiki shiki-themes github-light github-dark","git commit -m \"feat(auth): tambah login google\"\ngit commit -m \"fix(ui): perbaiki tombol back meleset\"\ngit commit -m \"refactor(blog): ringkaskan heading artikel\"\n","bash",[61,1018,1019,1034,1045],{"__ignoreMap":59},[532,1020,1021,1025,1028,1031],{"class":534,"line":535},[532,1022,1024],{"class":1023},"sScJk","git",[532,1026,1027],{"class":560}," commit",[532,1029,1030],{"class":544}," -m",[532,1032,1033],{"class":560}," \"feat(auth): tambah login google\"\n",[532,1035,1036,1038,1040,1042],{"class":534,"line":193},[532,1037,1024],{"class":1023},[532,1039,1027],{"class":560},[532,1041,1030],{"class":544},[532,1043,1044],{"class":560}," \"fix(ui): perbaiki tombol back meleset\"\n",[532,1046,1047,1049,1051,1053],{"class":534,"line":551},[532,1048,1024],{"class":1023},[532,1050,1027],{"class":560},[532,1052,1030],{"class":544},[532,1054,1055],{"class":560}," \"refactor(blog): ringkaskan heading artikel\"\n",[11,1057,1058,1059,1062,1063,1066,1067,1070],{},"Kamu cukup milih ",[15,1060,1061],{},"tipe"," perubahannya, sebutin ",[15,1064,1065],{},"lingkup"," (opsional), lalu tulis ",[15,1068,1069],{},"penjelasan singkatnya",". Selesai!",[1072,1073,1075],"h3",{"id":1074},"jenis-tipe-commit","Jenis\" Tipe Commit",[279,1077,1078,1089,1100,1111,1122,1133,1144],{},[282,1079,1080,1085,1086,473],{},[15,1081,1082],{},[61,1083,1084],{},"feat:"," Nambahin fitur baru (contoh: ",[61,1087,1088],{},"feat: buat halaman dashboard",[282,1090,1091,1096,1097,473],{},[15,1092,1093],{},[61,1094,1095],{},"fix:"," Benerin bug atau eror (contoh: ",[61,1098,1099],{},"fix: atasi layout hancur di mobile",[282,1101,1102,1107,1108,473],{},[15,1103,1104],{},[61,1105,1106],{},"docs:"," Update dokumentasi atau catatan (contoh: ",[61,1109,1110],{},"docs: update readme",[282,1112,1113,1118,1119,473],{},[15,1114,1115],{},[61,1116,1117],{},"refactor:"," Bersihin atau rombak struktur kode tanpa ngubah fungsi (contoh: ",[61,1120,1121],{},"refactor: pisah modal jd komponen mandiri",[282,1123,1124,1129,1130,473],{},[15,1125,1126],{},[61,1127,1128],{},"perf:"," Optimasi performa biar makin ngebut (contoh: ",[61,1131,1132],{},"perf: lazy load gambar gallery",[282,1134,1135,1140,1141,473],{},[15,1136,1137],{},[61,1138,1139],{},"chore:"," Urusan perintilan, dependensi, atau build config (contoh: ",[61,1142,1143],{},"chore: bump dependencies",[282,1145,1146,1151],{},[15,1147,1148],{},[61,1149,1150],{},"style:"," Urusan format kode, spasi, atau titik koma yg ga ngaruh ke logika.",[38,1153,1155],{"id":1154},"kenapa-harus-pakai-semantic-commit","Kenapa Harus Pakai Semantic Commit?",[486,1157,1158,1172,1189],{},[282,1159,1160,1167,1168,1171],{},[15,1161,1162,1163,1166],{},"Gampang Telusuri Sejarah Kode (",[74,1164,1165],{},"Git Log",")",":\nPas nyari tau kapan suatu bug muncul atau kapan sebuah fitur diperkenalkan, ",[61,1169,1170],{},"git log --oneline"," jd sangat gampang dibaca.",[282,1173,1174,1177,1178,910,1181,1184,1185,1188],{},[15,1175,1176],{},"Automasi Changelog",":\nTool otomatis kayak standard-version atau release-please bisa baca commit bertipe ",[61,1179,1180],{},"feat",[61,1182,1183],{},"fix"," buat scr otomatis nge-generate berkas ",[61,1186,1187],{},"CHANGELOG.md"," dan nentuin versi SemVer berikutnya.",[282,1190,1191,1194,1195,1198],{},[15,1192,1193],{},"Ningkatin Kolaborasi Tim",":\n",[74,1196,1197],{},"Code review"," jd jauh lebih cepat krn reviewer langsung tau apakah PR itu berisi perbaikan bug, fitur baru, atau sekadar refactoring.",[38,1200,1202],{"id":1201},"perbandingan-buruk-vs-rapi","Perbandingan: Buruk vs Rapi",[11,1204,1205],{},"Bayangin sebuah repo sm riwayat commit kayak gini:",[53,1207,1210],{"className":1208,"code":1209,"language":58,"meta":59},[56],"❌ update\n❌ upload gambar\n❌ fix bug\n❌ ganti button\n",[61,1211,1209],{"__ignoreMap":59},[11,1213,1214],{},"Pesan commit di atas ga informatif. Bug apa yg diperbaiki? Gambar apa yg diunggah?",[11,1216,1217],{},"Bandingin kl ditulis pakai Semantic Commit:",[53,1219,1222],{"className":1220,"code":1221,"language":58,"meta":59},[56],"✅ feat(navbar): implement responsive mobile drawer\n✅ fix(api): handle timeout exception on watchlist fetch\n✅ docs(readme): add installation command with bun\n✅ chore(deps): bump tailwindcss to v4.0.0\n",[61,1223,1221],{"__ignoreMap":59},[11,1225,1226],{},"Jauh lebih rapi, terstruktur, dan profesional! 👌",[38,1228,945],{"id":944},[11,1230,1231],{},"Meskipun ga ada undang\" yg mewajibkan Semantic Commit buat proyek pribadi, biasain nulis commit yg rapi sejak awal bakal ngebentuk etos kerja developer yg disiplin, teliti, dan siap kerja dlm tim enterprise global.",[957,1233,1234],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":59,"searchDepth":193,"depth":193,"links":1236},[1237,1238,1241,1242,1243],{"id":987,"depth":193,"text":988},{"id":1003,"depth":193,"text":1004,"children":1239},[1240],{"id":1074,"depth":551,"text":1075},{"id":1154,"depth":193,"text":1155},{"id":1201,"depth":193,"text":1202},{"id":944,"depth":193,"text":945},"2023-12-01","Panduan nulis commit message yg terstruktur, rapi, dan gampang dipahami tim pake konvensi Semantic Commit.",{},"\u002Fblog\u002Fsemantic-commit",{"title":982,"description":1245},{"loc":1247},"blog\u002F04.semantic-commit",[1252,1253,1254,996],"Git","Workflow","Best Practice","5Vaf6rY7jrerru1yCqRvycbwhX4BcuRS7Bn7-6rI4bA",{"id":1257,"title":1258,"body":1259,"category":967,"cover":201,"date":1430,"description":1431,"extension":204,"meta":1432,"navigation":206,"path":1433,"readingTime":208,"seo":1434,"sitemap":1435,"stem":1436,"tags":1437,"__hash__":1441},"blog\u002Fblog\u002F03.berkenalan-dengan-archcraft.md","Berkenalan dengan Archcraft",{"type":8,"value":1260,"toc":1424},[1261,1265,1279,1282,1286,1289,1292,1329,1333,1336,1356,1371,1375,1378,1406,1409,1412,1421],[38,1262,1264],{"id":1263},"apa-itu-archcraft","Apa Itu Archcraft?",[11,1266,1267,1270,1271,1274,1275,1278],{},[15,1268,1269],{},"Archcraft"," adalah distribusi sistem operasi yg dibangun di atas fondasi ",[15,1272,1273],{},"Arch Linux",". Kl di Windows kita kenal Windows 10 atau 11, di dunia Linux ada ratusan varian (",[74,1276,1277],{},"distro","), dan salah satu yg paling unik dan estetik adalah Archcraft.",[11,1280,1281],{},"Archcraft bkn dibuat oleh korporasi besar, tp dirancang oleh Aditya Shakya (@adi1090x) bareng komunitas yg punya passion mendalam terhadap kustomisasi visual dan minimalisme sistem.",[38,1283,1285],{"id":1284},"filosofi-keep-it-simple-keep-it-cool","Filosofi: \"Keep it Simple, Keep it Cool\" ❄",[11,1287,1288],{},"Bnyk orang pengen ngerasain kecepatan dan kebebasan Arch Linux, tp gentar pas liat proses instalasinya yg serba manual lewat terminal hitam-putih.",[11,1290,1291],{},"Archcraft hadir menjawab dilema itu:",[279,1293,1294,1304,1323],{},[282,1295,1296,1299,1300,1303],{},[15,1297,1298],{},"Instalasi Mudah",": Ada ",[74,1301,1302],{},"installer"," grafis Calamares, jd siapa pun bisa masang Arch Linux tanpa harus ketik perintah partisi disk yg ribet.",[282,1305,1306,1309,1310,508,1313,1316,1317,910,1320,28],{},[15,1307,1308],{},"Window Manager Siap Pakai",": Alih\" pakai desktop environment berat kayak GNOME atau KDE, Archcraft pakai Window Manager (WM) ringan seperti ",[15,1311,1312],{},"Openbox",[15,1314,1315],{},"bspwm",", atau varian Wayland modern kayak ",[15,1318,1319],{},"Hyprland",[15,1321,1322],{},"Sway",[282,1324,1325,1328],{},[15,1326,1327],{},"Desain Out-of-the-Box",": Konfigurasi bar status (Polybar \u002F Waybar), menu aplikasi (Rofi \u002F Wofi), dan skema warna terminal udah dikurasi sm estetik dan kompak sejak menit pertama sistem dinyalain.",[38,1330,1332],{"id":1331},"manajemen-paket-pacman-aur","Manajemen Paket: Pacman & AUR",[11,1334,1335],{},"Salah satu kekuatan terbesar turunan Arch Linux adalah ekosistem manajemen paketnya:",[486,1337,1338,1344],{},[282,1339,1340,1343],{},[15,1341,1342],{},"Pacman",": Manajer paket resmi yg super cepat buat ngunduh dan masang aplikasi.",[282,1345,1346,1349,1350,874,1353,28],{},[15,1347,1348],{},"Arch User Repository (AUR)",": Repositori komunitas terbesar di dunia Linux. Hampir semua software yg pernah dibuat buat Linux hampir pasti tersedia di AUR dan bisa dipasang cukup sm helper kayak ",[61,1351,1352],{},"yay",[61,1354,1355],{},"paru",[53,1357,1359],{"className":1014,"code":1358,"language":1016,"meta":59,"style":59},"yay -S visual-studio-code-bin\n",[61,1360,1361],{"__ignoreMap":59},[532,1362,1363,1365,1368],{"class":534,"line":535},[532,1364,1352],{"class":1023},[532,1366,1367],{"class":544}," -S",[532,1369,1370],{"class":560}," visual-studio-code-bin\n",[38,1372,1374],{"id":1373},"pengalaman-pribadi-pakai-archcraft","Pengalaman Pribadi Pakai Archcraft",[11,1376,1377],{},"Sbg pengguna yg udah pakai Archcraft lebih dr setahun buat aktivitas koding sehari\", sistem ini sangat memuaskan:",[279,1379,1380,1390,1400],{},[282,1381,1382,1385,1386,1389],{},[15,1383,1384],{},"Penggunaan RAM Rendah",": Pas ",[74,1387,1388],{},"idle",", sistem cuma makan sekitar 300MB - 500MB RAM, nyisain seluruh sisa daya komputasi buat browser, emulator, dan dev server.",[282,1391,1392,1395,1396,1399],{},[15,1393,1394],{},"Fleksibilitas Tanpa Batas",": Seluruh tampilan dikendaliin oleh berkas konfigurasi teks murni (",[74,1397,1398],{},"dotfiles","). Mau ganti tema, pintasan keyboard, atau layout jendela, semuanya bisa disesuaiin sesuka hati.",[282,1401,1402,1405],{},[15,1403,1404],{},"Rolling Release",": Sistem selalu dapet pembaruan kernel dan software terkini tanpa perlu instal ulang sistem dr nol tiap tahun.",[1407,1408],"hr",{},[11,1410,1411],{},"Archcraft cocok banget buat developer atau antusias yg suka efisiensi, performa kencang, dan antarmuka yg keren tanpa ribet.",[11,1413,1414,1415,1420],{},"Tertarik nyoba? Bisa langsung unduh dan coba dlm mode Live USB lewat situs resminya di ",[18,1416,1419],{"href":1417,"rel":1418},"https:\u002F\u002Farchcraft.io",[22],"archcraft.io"," 🔧🐧.",[957,1422,1423],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":59,"searchDepth":193,"depth":193,"links":1425},[1426,1427,1428,1429],{"id":1263,"depth":193,"text":1264},{"id":1284,"depth":193,"text":1285},{"id":1331,"depth":193,"text":1332},{"id":1373,"depth":193,"text":1374},"2023-11-28","Mengenal Archcraft, distro Linux berbasis Arch yg minimalis, ringan, estetik out-of-the-box, dan seru buat dieksplorasi.",{},"\u002Fblog\u002Fberkenalan-dengan-archcraft",{"title":1258,"description":1431},{"loc":1433},"blog\u002F03.berkenalan-dengan-archcraft",[1438,1269,1439,1440],"Linux","Open Source","Dotfiles","CI1ccd_yBK60mHi1gtmxDU4kqcarfSXJ1XMkK1G78PA",{"id":1443,"title":1444,"body":1445,"category":967,"cover":201,"date":1657,"description":1658,"extension":204,"meta":1659,"navigation":206,"path":1660,"readingTime":208,"seo":1661,"sitemap":1662,"stem":1663,"tags":1664,"__hash__":1666},"blog\u002Fblog\u002F02.github-itu-penting.md","GitHub itu Penting",{"type":8,"value":1446,"toc":1652},[1447,1450,1454,1461,1464,1563,1567,1573,1601,1605,1612,1631,1646],[11,1448,1449],{},"Ga semua programmer diwajibkan pakai GitHub, tp ada bnyk poin penting kenapa platform ini udah jd standar industri pengembangan software modern.",[38,1451,1453],{"id":1452},"repository-dan-version-control","Repository dan Version Control",[11,1455,1456,1457,1460],{},"Repository (repo) adalah wadah utama tempat ",[74,1458,1459],{},"source code"," proyek software disimpan, dilacak versinya, dan diakses bareng tim.",[11,1462,1463],{},"Beberapa hal krusial tentang repo GitHub:",[486,1465,1466,1488,1506,1523,1540],{},[282,1467,1468,1471],{},[15,1469,1470],{},"Git Version Control Terintegrasi:",[279,1472,1473],{},[282,1474,1475,1476,1479,1480,1483,1484,1487],{},"Melacak setiap perubahan baris kode, riwayat commit, serta siapa yg ngubah dan apa alasannya. Pas ada ",[74,1477,1478],{},"bug"," tak terduga, kita bisa gampang ngelakuin ",[74,1481,1482],{},"revert"," atau bandingin perbedaan (",[74,1485,1486],{},"diff",") sm versi sebelumnya.",[282,1489,1490,1497],{},[15,1491,1492,1493,1496],{},"Penyimpanan Kode Terpusat (",[74,1494,1495],{},"Remote Hosting","):",[279,1498,1499],{},[282,1500,1501,1502,1505],{},"Ga perlu lg nyimpen file codingan lewat Google Drive atau flashdisk 🥴. Selain rentan hilang, upload satu per satu ga efisien. Di GitHub, cukup ",[61,1503,1504],{},"git push",", dan seluruh proyek tersimpan aman di cloud.",[282,1507,1508,1514],{},[15,1509,1510,1511,1496],{},"Kolaborasi dengan Cabang (",[74,1512,1513],{},"Branching",[279,1515,1516],{},[282,1517,1518,1519,1522],{},"Bnyk developer bisa kerja barengan di proyek yg sama tanpa saling nimpa kode. Fitur baru dikembangin di ",[74,1520,1521],{},"feature branch",", diuji terpisah, baru digabung ke branch utama pas siap.",[282,1524,1525,1531],{},[15,1526,1527,1528,1496],{},"Pelacakan Masalah (",[74,1529,1530],{},"Issues",[279,1532,1533],{},[282,1534,1535,1536,1539],{},"GitHub nyediain papan ",[74,1537,1538],{},"issues"," buat nyatet bug, ngerencanain fitur baru, sampai diskusi teknis sm tim atau komunitas.",[282,1541,1542,1548],{},[15,1543,1544,1545,1011],{},"Review Kode Melalui ",[74,1546,1547],{},"Pull Requests",[279,1549,1550],{},[282,1551,1552,1555,1556,1559,1560,28],{},[74,1553,1554],{},"Pull Request"," (PR) memungkinkan kita ngajuin perubahan buat di-review rekan tim. Ini fondasi ",[74,1557,1558],{},"code review"," profesional buat ngejaga kualitas dan standar kode sebelum masuk ke ",[61,1561,1562],{},"main",[38,1564,1566],{"id":1565},"automasi-github-actions","Automasi GitHub Actions",[11,1568,1569,1570,1011],{},"Selain sbg hosting kode, GitHub punya ekosistem automasi yg powerful lewat ",[15,1571,1572],{},"GitHub Actions",[279,1574,1575,1589,1595],{},[282,1576,1577,1580,1581,1584,1585,1588],{},[15,1578,1579],{},"Continuous Integration (CI)",": Otomatis ngejalanin ",[74,1582,1583],{},"linter"," (",[61,1586,1587],{},"eslint","), unit testing, dan build check setiap kali ada commit atau PR baru.",[282,1590,1591,1594],{},[15,1592,1593],{},"Continuous Deployment (CD)",": Otomatis deploy aplikasi ke hosting (Vercel, Netlify, atau cloud server) begitu PR di-merge ke branch utama.",[282,1596,1597,1600],{},[15,1598,1599],{},"Keamanan Otomatis",": Fitur Dependabot yg ngasih notifikasi pas ada dependensi yg punya celah keamanan.",[38,1602,1604],{"id":1603},"belajar-dari-open-source","Belajar dari Open Source",[11,1606,1607,1608,1611],{},"Salah satu manfaat terbesar yg saya rasain langsung adalah kesempatan belajar langsung dr repositori ",[74,1609,1610],{},"open-source"," kelas dunia.",[11,1613,1614,1615,508,1617,508,1620,1623,1624,1011],{},"Saya sering eksplor repositori proyek seperti ",[15,1616,978],{},[15,1618,1619],{},"Nuxt",[15,1621,1622],{},"Tailwind CSS",", dan ",[18,1625,1628],{"href":1626,"rel":1627},"https:\u002F\u002Fgithub.com\u002Felk-zone\u002Felk",[22],[15,1629,1630],{},"Elk",[279,1632,1633,1636,1643],{},[282,1634,1635],{},"Liat arsitektur folder dan struktur kode yg diterapin developer kelas dunia.",[282,1637,1638,1639,1642],{},"Pelajari cara nulis ",[74,1640,1641],{},"test",", dokumentasi, dan aturan kontribusi yg rapi.",[282,1644,1645],{},"Paham alur diskusi arsitektur di bagian issues dan pull requests.",[11,1647,1648,1649,1651],{},"Mulai biasain pakai GitHub buat semua proyek pribadimu, dan jangan ragu buat kontribusi di proyek ",[74,1650,1610],{},", sekecil apa pun perubahannya.",{"title":59,"searchDepth":193,"depth":193,"links":1653},[1654,1655,1656],{"id":1452,"depth":193,"text":1453},{"id":1565,"depth":193,"text":1566},{"id":1603,"depth":193,"text":1604},"2023-11-27","Poin\" penting mengapa GitHub sangat esensial bagi developer untuk version control, kolaborasi tim, automasi CI\u002FCD, dan belajar dari open source.",{},"\u002Fblog\u002Fgithub-itu-penting",{"title":1444,"description":1658},{"loc":1660},"blog\u002F02.github-itu-penting",[1252,1665,1253,977],"GitHub","PJmCfbhM7ExQBWSVh4etKSsR9oiU6TI3sY90qQsVTdM",{"id":1668,"title":1669,"body":1670,"category":967,"cover":201,"date":1828,"description":1829,"extension":204,"meta":1830,"navigation":206,"path":1831,"readingTime":1832,"seo":1833,"sitemap":1834,"stem":1835,"tags":1836,"__hash__":1839},"blog\u002Fblog\u002F01.alasan-saya-menggunakan-nuxt.md","Alasan Saya Menggunakan Nuxt",{"type":8,"value":1671,"toc":1823},[1672,1675,1696,1700,1703,1759,1763,1784,1787,1791,1802,1808],[11,1673,1674],{},"Sebelum masuk ke pembahasan, tulisan ini murni berdasarkan opini dan pengalaman pribadi saya dlm membangun aplikasi web ✌️.",[11,1676,1677,1678,1681,1682,874,1685,1688,1689,1692,1693,1695],{},"Perlu ditegaskan di awal: ",[33,1679,1680],{},"saya ga sepenuhnya selalu pakai Nuxt",". Di beberapa situasi, saya jg pakai teknologi lain seperti ",[15,1683,1684],{},"SvelteKit",[15,1686,1687],{},"React",". Semua tentu balik lg ke kebutuhan proyek, arsitektur yg dibutuhin, sampai kesepakatan tim. Tp dlm bnyk ",[74,1690,1691],{},"case"," secara umum, ",[15,1694,1619],{}," tetep jd pilihan utama yg paling saya andalkan.",[38,1697,1699],{"id":1698},"kenapa-nuxt-jd-pilihan-utama","Kenapa Nuxt Jd Pilihan Utama",[11,1701,1702],{},"Ada beberapa alasan mendasar kenapa Nuxt dan ekosistem Vue terasa paling klop di alur kerja saya:",[279,1704,1705,1722,1728,1749],{},[282,1706,1707,1710,1711,1713,1714,1717,1718,1721],{},[15,1708,1709],{},"Vue Ecosystem First",": Syntax Single File Component (",[61,1712,898],{},"), reactivity berbasis ",[61,1715,1716],{},"ref"," \u002F ",[61,1719,1720],{},"reactive",", dan kemudahan templating-nya terasa sangat natural dan bersih.",[282,1723,1724,1727],{},[15,1725,1726],{},"Dokumentasi Rapi dan Jelas",": Salah satu dokumentasi framework terbaik. Rapi, terstruktur, dan gampang dicari solusinya pas nemu kasus teknis lanjutan.",[282,1729,1730,1733,1734,508,1737,1740,1741,1744,1745,1748],{},[15,1731,1732],{},"Auto-Imports",": Otomatisasi impor komponen, ",[74,1735,1736],{},"composables",[74,1738,1739],{},"utilities",", sampai server routes. Praktis dan bikin ",[74,1742,1743],{},"codebase"," jauh lebih bersih tanpa tumpukan baris ",[61,1746,1747],{},"import"," manual.",[282,1750,1751,1754,1755,1758],{},[15,1752,1753],{},"Nitro Engine",": Server engine bawaan Nuxt sangat fleksibel dan ringan, gampang di-deploy ke mana aja (Node.js, Edge, Vercel, Cloudflare) dgn ",[74,1756,1757],{},"cold-start"," yg kencang.",[38,1760,1762],{"id":1761},"komunitas-dan-tim-inti","Komunitas dan Tim Inti",[11,1764,1765,1766,1769,1770,1772,1773,508,1776,1779,1780,1783],{},"Nuxt punya tim inti (",[74,1767,1768],{},"core team",") yg dedikasinya luar biasa di dunia ",[74,1771,1610],{},". Tokoh-tokoh seperti ",[15,1774,1775],{},"Daniel Roe",[15,1777,1778],{},"Pooya Parsa"," (otak Nitro & UnJS), sampai ",[15,1781,1782],{},"Anthony Fu"," konsisten ngembangin ekosistem tooling yg modern dan solid.",[11,1785,1786],{},"Melihat ekosistem yg terus dirawat dgn visi jelas bikin saya yakin buat make Nuxt di proyek-proyek jangka panjang.",[38,1788,1790],{"id":1789},"fleksibilitas-dan-tools-sesuai-kebutuhan","Fleksibilitas dan Tools Sesuai Kebutuhan",[11,1792,1793,1794,1797,1798,1801],{},"Sbg developer, membatasi diri di satu ",[74,1795,1796],{},"stack"," tentu bkn pilihan bijak. Setiap ",[74,1799,1800],{},"framework"," punya kekuatan masing\":",[53,1803,1806],{"className":1804,"code":1805,"language":58,"meta":59},[56],"SvelteKit ──> Minimalis, performa kompilasi kencang\nReact     ──> Ekosistem library luas, standar industri populer\nNuxt      ──> DX terpadu, konvensi matang, SSR & fullstack out-of-the-box\n",[61,1807,1805],{"__ignoreMap":59},[11,1809,1810,1811,874,1813,1815,1816,1819,1820,1822],{},"Kalau proyek butuh ekosistem tertentu atau integrasi khusus, saya ga ragu buat pakai ",[15,1812,1687],{},[15,1814,1684],{},". Tp kalau saya dapet kebebasan penuh buat milih fondasi ",[74,1817,1818],{},"fullstack"," web yg produktif, cepat, dan terstruktur sejak hari pertama, ",[15,1821,1619],{}," hampir selalu jd pilihan nomor satu saya.",{"title":59,"searchDepth":193,"depth":193,"links":1824},[1825,1826,1827],{"id":1698,"depth":193,"text":1699},{"id":1761,"depth":193,"text":1762},{"id":1789,"depth":193,"text":1790},"2023-11-25","Opini dan pengalaman seputar alasan memilih Nuxt dan Vue, serta fleksibilitas memakai stack lain seperti SvelteKit atau React sesuai kebutuhan.",{},"\u002Fblog\u002Falasan-saya-menggunakan-nuxt","3 min read",{"title":1669,"description":1829},{"loc":1831},"blog\u002F01.alasan-saya-menggunakan-nuxt",[1619,978,1837,1838],"Opinion","Architecture","VTgYom0cd7b0N8EA5zxNTf-phm7Qc_3VNZengbPoFXs",1788619562060]