- Di kategori editor, Helix, Emacs, Neovim, Sublime Text, Zed, dan JetBrains IDE berulang kali disebut, dengan trade-off masing-masing terlihat jelas
- Di bidang version control, tren
jujutsu(jj) yang menggantikan git CLI sangat menonjol, dan banyak juga disebut alat bantu GUI seperti Magit, lazygit, dan Sublime Merge
- Untuk shell·terminal·manajemen lingkungan, Fish, WezTerm, Ghostty, kitty, tmux, Nix, mise, atuin, fzf, dan lainnya muncul sebagai stack utama
- Pesan kunci yang terus berulang adalah "pilih alat dengan default yang bagus agar terhindar dari konfigurasi tanpa akhir" dan "semakin bertambah usia, semakin cenderung menyesuaikan diri pada default yang baik daripada memaksa alat menyesuaikan diri pada kita" (meski ada juga pendapat sebaliknya)
Latar belakang diskusi
- Thread pertanyaan di Lobsters, "alat favorit developer apa?", dengan nada bahwa "developer punya opini yang terlalu kuat untuk memilih hanya satu alat"
- Dalam 19 jam, sudah ada lebih dari 130 komentar
- Filosofi yang berulang muncul: "semakin bertambah usia, saya lebih memilih menyesuaikan preferensi saya ke alat yang punya default bagus daripada menyesuaikan alat ke diri saya", karena "berada di jalur yang paling banyak diuji juga berarti lebih jarang menemui bug"
- Pendapat berlawanan: "semakin bertambah usia, kesabaran terhadap default yang buruk makin tipis. Kalau tidak bisa dibuat layak pakai dalam beberapa menit, saya ganti alatnya"
Editor teks / IDE
-
Helix
- "titik keseimbangan yang pas antara bisa dikustomisasi dan pengalaman default yang unggul"
- Saat dipakai bersama jujutsu, setelah berpindah commit perlu me-reload file yang terbuka secara manual — solusi sementara dengan keybinding
:reload-all
- PR fitur file watching (#14544) sedang dikerjakan oleh maintainer
- Ada juga banyak kasus pengguna kembali ke vim karena tidak bisa beradaptasi dengan model selection-first
- Fork dengan dukungan sebagian keybinding vim: evil-helix
-
Emacs
- Banyak pengguna yang menjawab singkat hanya dengan "Emacs"
- Magit dipuji sampai layak disebut terpisah
- Alur migrasi per area yang disebut: Git → Magit, Email → mu4e, RSS → elfeed, Notes/TODO/Calendar → org-mode, Finder → dired
-
Neovim
- "Saya memensiunkan
.vimrc yang dipakai lebih dari 10 tahun dan pindah penuh ke Neovim"
- Tren distribusi plugin:
- LazyVim: paling matang, keybinding flash.nvim disarankan untuk dinonaktifkan
- AstroNvim: alternatif yang lebih ramping
- Kickstart.nvim: titik awal sederhana untuk basis kustomisasi
- MiniMax: config awal buatan tim mini.nvim
-
JetBrains IDE
- Debugger PyCharm sangat direkomendasikan — berjalan bahkan di dalam Django REPL, mendukung template HTML/CSS/JS, dan bisa cherry-pick hunk
- Jika memakai dua produk JetBrains atau lebih, lisensi All Products lebih murah
-
Sublime Text / Zed
- "Sublime Text diremehkan", ada yang mengatakan sudah memakainya setiap hari selama lebih dari 20 tahun
- Meski coding dilakukan di tempat lain, performanya cepat dan buffer belum disimpan tetap persisten, sehingga tetap dipakai setiap hari
- Ada juga arus percobaan pindah ke Zed karena VSCode makin bengkak
-
Kate / Notepad++
- Kate di kubu Linux dan Notepad++ di kubu Windows juga disebut singkat
Version control
-
jujutsu (jj) — alat yang paling sering disebut tahun ini
- "Saya tidak menyangka akan meninggalkan git CLI, tapi akhirnya memang begitu"
- "Jarang ada alat yang lebih mudah sekaligus lebih kuat, tapi jujutsu berhasil melakukan keduanya"
- Rebase dan amend commit disebut jadi menyenangkan
- Kekurangan: default-nya belum dipoles sehingga perlu penyesuaian color/template — default-nya disebut seperti "teks muntahan unicorn pelangi kontras tinggi"
-
Alat bantu Git
- tig: "versi lebih baik dari git log", dipakai untuk interactive staging
- Magit: inti workflow pengguna Emacs
- Sublime Merge: "lapisan GUI untuk git tapi dibuat dengan sangat baik", bisa diintegrasikan dengan
jj juga lewat merge-editor = "smerge"
- lazygit: membuat orang lebih berani mencoba pekerjaan rumit seperti rebase, revert, stash, dan banyak remote
- delta: jika dipasang sebagai git pager, memberi diff dengan syntax highlighting; bila digabung dengan lazygit bisa toggle side-by-side / inline
- difftastic: diff berbasis sintaks, bukan per baris
- git revise: "seharusnya jadi bawaan git"
- Beyond Compare: alat diff/merge/sinkronisasi folder yang sudah dipakai selama 20 tahun
Shell / terminal
-
Fish
- "membereskan semua yang dilakukan bash·zsh sambil tetap memberi pengalaman hebat tanpa banyak konfigurasi"
- Jika perlu, skrip bash juga tetap bisa dijalankan apa adanya
- Dinilai sebagai alat yang terus membuat pengguna menemukan shortcut baru (misalnya
alt+<left|right> untuk riwayat direktori)
-
Emulator terminal
- WezTerm: copy/paste hanya dengan keyboard (
ctrl+shift+space), duplikasi tab ke sistem yang sama dengan ctrl+shift+t, serta SSH client dan multiplexer bawaan
- Ghostty: integrasi native macOS — popover kamus dengan
Cmd+Ctrl+D, drag-and-drop, tab native, kualitas rendering font
- kitty: "contoh alat bagus yang default-nya langsung bekerja sambil tetap memberi banyak ruang konfigurasi"
-
tmux
- perintah pertama yang dijalankan saat membuka sesi terminal
- Berguna saat SSH terputus atau terminal tertutup tidak sengaja — pola yang sama bisa dipertahankan saat berpindah antara Mac dan NixOS
-
Starship
- Bisa dipasang sebagai plugin di shell mana pun, kekurangannya perintah git status·branch lambat di repo besar
Manajemen lingkungan / dependensi
-
Nix / NixOS
- "Mungkin Stockholm syndrome, tapi membuat saya tidak bisa lagi memakai distro Linux dan build system lain"
- Dengan nix shell per proyek, paket sistem bisa diminimalkan dan versi bisa dikunci dengan tepat tanpa mencemari PATH global
- "memberi keyakinan tinggi bahwa ini akan tetap berjalan sama satu tahun, lima tahun dari sekarang"
- "Begitu melewati learning curve, rasanya seperti sihir. Konfigurasi OS memang seharusnya seperti ini"
-
mise
- Version manager alat yang menggantikan direnv, juga terintegrasi ke CI ringan
- "pengganti asdf yang jelas lebih baik"
- Setelah menemukan fitur
mise activate, direnv bisa dihapus sepenuhnya
- Dengan
mise watch dan sistem task, aksi per proyek dan eksekusi saat file berubah bisa diatur
-
Dev Containers
- Kelebihannya adalah bisa berbagi lingkungan docker/container deployment dan lingkungan pengembangan
- Kekurangannya: tooling masih belum matang (bahkan CLI referensinya belum punya perintah stop)
-
chezmoi
- Menjaga lingkungan pengembangan yang konsisten di mesin kerja dan pribadi, sekaligus mengelola alias git, config Neovim, access token, dan instalasi alat lain
Debugging / profiling
-
rr — debugger record/replay
- "alat utama untuk debugging C/C++, sekali direkam bisa diputar ulang secara deterministik tanpa batas"
- Bisa memasang watch pada alamat memori lalu memundurkan eksekusi sampai titik penulisan terakhir
- "temporal debugging bisection" — bersama watchpoint, melacak maju-mundur untuk menemukan titik terjadinya memory corruption
-
Pernosco
- Debugger time-travel + analisis aliran data
- Sangat membantu untuk focus handling multiproses konten Firefox dan pekerjaan kompatibilitas Chrome
about:blank
-
RenderDoc / Tracy / RemedyBG
- RenderDoc: alat serbaguna untuk debugging grafis, fitur dasarnya dinilai lebih baik daripada debugger Metal di XCode
- Tracy: "kalau membuat profiler dengan sumber daya tak terbatas, hasil akhirnya akan jadi Tracy"
- RemedyBG: debugger dengan kenyamanan kerja yang baik
-
XCode Instruments
- Dalam profiling shader 3D/GPU, memberi anotasi biaya runtime per baris
- Analisis penyebab stall — membedakan tunggu memory fetch, tunggu sinkronisasi, dan divergensi control flow
- "keunggulan ekosistem yang mengendalikan hardware, driver, bahasa shading Metal, dan tooling sekaligus"
-
Lainnya
- strace, extrace, perf — kombinasi wajib untuk debugging
- gdb — masih sering disebut singkat oleh banyak orang
Pencarian / pemrosesan teks
- fzf: terintegrasi dengan pencarian balik riwayat shell, "tingkat fuzzynya pas"
- Dengan pola
rg '' | fzf, seluruh teks repo bisa dicari, lalu saat memilih hasil cocok langsung dikembalikan ke prompt shell dalam bentuk vim foo.rs +123
- ripgrep: "langsung bekerja dengan benar tanpa konfigurasi, saya bahkan tidak pernah mencoba mengaturnya"
- septum: pencarian kode interaktif — pencarian bersyarat seperti "semua yang memuat triangle·vertex·mesh dalam 7 baris, tapi tanpa physics"
- fastmod / spacemod: untuk penggantian massal
- autojump: dengan
j whatevs, berpindah lewat fuzzy match ke riwayat direktori kerja sebelumnya
- zoxide: mirip autojump, dengan navigasi yang lebih mulus
- awk: tetap kuat untuk pekerjaan "mengambil sedikit lalu mengutak-atik sedikit"
- entr: "awasi file-file ini lalu jalankan ini" — cocok untuk menjalankan test codebase secara otomatis
JSON / data / alat konversi
- jq: standar de facto untuk pemrosesan JSON, manual-nya sangat dianjurkan dibaca sampai habis, dan
jq track dari Exercism juga direkomendasikan
- gojq: pesan error jauh lebih baik daripada jq native, dan mendukung input yaml sehingga muscle memory yang sama tetap bisa dipakai
- fx: untuk drill-down output JSON besar
- hexdump: khususnya
hexdump -C berguna untuk debugging embedded — pola seperti picocom --baud 115200 /dev/ttyUSB | hexdump -C
- hexyl: penampil hex berwarna
- bat: pengganti cat dengan syntax highlighting
- choose, fd: masing-masing pengganti cut dan find
Riwayat shell / clipboard / catatan
- Atuin: sinkronisasi riwayat shell, pencarian riwayat berdasarkan konteks direktori·repo git
- CopyQ: clipboard manager dengan sekitar 2000 item, berguna untuk memulihkan pekerjaan lama saat ada catatan yang terlewat
- histprune: kustomisasi
Ctrl+R untuk fzf — alt+D menghapus item riwayat secara langsung
- Obsidian: pindah dari Logseq, penyimpanan Markdown murni menguntungkan untuk kolaborasi dengan LLM/agent
- Joplin: AGPLv3, mendukung aplikasi desktop·mobile·web, backend WebDAV/OneDrive/S3, dan menyimpan file
.md apa adanya
Build / otomasi tugas
- just: pengganti make — fokus pada task, bukan build, dengan antarmuka konsisten lintas bahasa seperti
just lint
- "mode per baris ala make dan mode full script shell/python/node bisa ditoggle per target"
- Kekurangan: skrip embedded ditulis ke
$TMPDIR lalu dijalankan, serta memakai bahasa templating sendiri (uncanny valley)
- Task (go-task): alternatif berbasis yaml dengan kecenderungan batteries-included
- universal-test-runner: mendeteksi cara testing repo secara otomatis lalu menjalankannya, dengan pass-through untuk argumen tambahan
- chezmoi: mengelola dotfile dan instalasi alat secara konsisten antar mesin
HTTP / jaringan / secret
- Hurl: "lupakan aplikasi HTTP GUI yang mencoba mengumpulkan informasi Anda" — request ala curl dalam format teks sederhana, cocok untuk integration test
- curl: juga banyak disebut singkat
- SOPS: mengenkripsi secret dengan key age/SSH, pola seperti
sops exec-env secrets.yaml -- some command
- Mutagen: sinkronisasi file real-time dua arah di atas SSH — berguna untuk kerja di mesin remote
- forge: pengganti GitHub CLI, mendukung Codeberg, lebih cepat dan lebih rapi
Lain-lain / workflow
- Quarto: presentasi cepat dengan markdown
- Nushell: shell yang dipengaruhi PowerShell, andal untuk menulis skrip transformasi besar seperti GeoPackage → PostGIS atau PostGIS view → PMTiles. Kekurangannya: belum 1.0 sehingga sering rusak tiap update
- Typst: disebut sebagai pengganti LaTeX, dengan preferensi pada sintaks berbasis call-by-value
- Topiary: formatter multibahasa
- Hunk: terminal diff viewer berorientasi review-first untuk agentic coder, dengan pola menaruh mode
--watch di samping coding agent
- Raycast / Alfred: launcher macOS, mendukung snippet·clipboard·pencarian web berparameter
- Ergodox EZ: keyboard yang sudah dipakai 10 tahun, memuaskan dari sisi kustomisasi dan daya
- Joplin / Fossil: self-hosting catatan dan wiki
- AeroSpace / Sway: tiling window manager
Pesan meta yang berulang
- "pilih alat dengan default yang bagus agar terhindar dari konfigurasi tanpa akhir" — Helix, Fish, ripgrep, dan mise disebut sebagai contoh utama filosofi ini
- Sudut pandang sebaliknya: ada juga kasus orang yang setelah terus-menerus men-tweak akhirnya membangun sistem alat versinya sendiri — "sekarang saya cuma menyentuhnya beberapa kali setahun"
- Produk sampingan era AI agent: makin banyak yang merasa alat seperti jq, Markdown, dan structured text lebih cocok untuk kolaborasi dengan LLM — penyimpanan Markdown murni di Obsidian, mode watch di hunk, dan saran mempelajari manual jq berada dalam arus yang sama
- Keunggulan debugging grafis di macOS: profiling GPU di XCode Instruments dinilai jauh lebih unggul dibanding Linux/Windows
- Renaisans CLI vs tipografi: saat alat terminal makin kaya, output LLM/agent yang panjang pada akhirnya tetap lebih nyaman dibaca di browser atau aplikasi khusus dengan tipografi yang lebih baik
8 komentar
Saya sudah mencoba beberapa, tapi belum ada yang benar-benar pas, jadi sekarang saya sedang membuatnya sendiri. Saya mengambil hanya fitur yang saya butuhkan dengan menjadikan notepad++, VS code, Zed, dan Obsidian sebagai referensi.
Saya belakangan ini sering memakai tiga hal ini secara terpadu: cmux, tmux, dan mux.
Saat login SSH ke server yang terhubung dengan tailscale, saya menampilkan kumpulan login tmux yang sudah ada dengan fzf, lalu memilih dari situ untuk masuk.
cmux - Terminal berbasis Ghostty untuk macOS bagi agen coding AI
Show GN: mux – manajer sesi tmux yang mengubah sesi coding AI menjadi live preview
Kalau di Mac, untuk memasukkan bahasa Korea di terminal bukannya harus menekan Enter dua kali? (2 kali, setelah komposisi Hangul selesai lalu saat memasukkan)
Satu-satunya yang tidak punya masalah ini cuma wezterm, jadi saya pindah ke sana.
Saya suka zed
Saya sudah jadi orang yang tidak bisa hidup tanpa Claude Code sekarang. + tmux..
Tambahan, untuk editor teks pakai vscode..
Kalau bukan itu, paling IDE wajib seperti Visual Studio untuk build..
fzf, jq, rg, awk ❤️
neovim, alacritty, tmux, fzf, rg, obsidian, bat, jq, hurl, lazygit, hammerspoon, chrome, codex, claude,
Pendapat Lobste.rs
Saya memakai Helix sebagai editor teks. Bagi saya, keseimbangannya pas antara kemudahan dikustomisasi dan pengalaman bawaan yang sangat baik
Karena alasan yang sama saya memakai Fish sebagai shell terminal. Keadaan bawaannya sangat bagus, dan hampir tidak perlu diutak-atik agar sesuai dengan keinginan saya
Semakin bertambah usia, saya makin suka menyesuaikan selera saya dengan alat yang punya default yang sengaja dirancang bagus, daripada tanpa henti mengutak-atik konfigurasi
Atuin bagus untuk sinkronisasi riwayat shell antar mesin jarak jauh dan pencarian riwayat kontekstual berdasarkan direktori saat ini atau repositori git. Ada fitur lain juga, tapi saya hanya memakai fitur-fitur itu
Mise juga saya suka dalam banyak hal, tetapi terutama sebagai pengelola versi alat. Ini menggantikan direnv yang dulu saya pakai, dan di proyek pribadi saya mulai sedikit demi sedikit mengintegrasikannya ke alur CI ringan
Paling hanya beberapa kali setahun. Emacs saya sekarang seperti kotak perkakas Studley versi saya sendiri
Sebagai gantinya, beberapa bulan lalu saya akhirnya sepenuhnya menerima Neovim, dan memensiunkan
.vimrcsaya yang tumbuh organik selama lebih dari 10 tahun. Agak sedih juga, tapi jadi tidak terlalu iri pada HelixMise juga bagus, dan praktis hampir tidak perlu konfigurasi. Fish juga mulai saya pakai beberapa bulan lalu, dan selain beberapa fungsi buatan pengguna, saya hampir memakainya apa adanya
Ripgrep juga melakukan “hal yang terasa benar” dalam keadaan bawaan, sampai saya bahkan tidak yakin pernah mencoba mengonfigurasinya
Emacs
Mungkin ini Stockholm syndrome, tapi Nix. Memang tidak sempurna, tetapi setelah bisa bekerja lebih ekspresif dan efisien dengan Nix, distro Linux lain dan sistem meta-build praktis jadi terasa rusak bagi saya
Tambahan lagi,
pwntoolsjuga alat yang menyenangkan dipakai bahkan di luar CTF. Misalnya enak untuk memainkan socket sampai level bit dari Python REPLSaya selalu menyalakan VM Ubuntu libvirt baru dan memasang alat-alat di sana untuk bekerja, tetapi adakah pendekatan berbasis Nix yang Anda rekomendasikan?
Emacs tentu saja, terutama Magit
Nix. Ada kurva belajar. Saya sudah beberapa tahun berada di sekitar pengguna dan penginjil Nix sebelum mencobanya dengan serius, tetapi pada akhirnya memang cukup bagus
Karena mengerjakan banyak proyek, saya lelah dengan beragam alat pengelola dependensi tingkat sistem yang berbeda-beda. Satu untuk versi Node, satu untuk versi Python, dan seterusnya
Saya juga lelah dengan kegagalan build yang sulit di-debug karena ketidakcocokan antar proyek. Misalnya
$foorusak di Project A lalu saya update lewat Homebrew, dan sekarang$foodi Project B ikut rusakSituasi ketika proses build bergantung pada berbagai dependensi yang terpasang di sistem—sering kali tersembunyi—dan build gagal “entah kenapa” juga melelahkan
Saya memindahkan sebanyak mungkin hal ke nix shell per proyek. Paket tingkat sistem saya buat setipis mungkin, dan di proyek saya pin alat yang diperlukan—dependensi, runtime, compiler, dan sebagainya—ke versi yang tepat
Ini tidak mencemari PATH global atau proyek lain. Jika sesuatu berjalan di mesin saya sekarang, saya cukup yakin itu juga akan tetap berjalan 1 tahun atau 5 tahun lagi
Saat ingin meng-upgrade alat, saya juga bisa melakukannya tanpa khawatir memengaruhi proyek lain, dan jika ada regresi saya bisa dengan mudah rollback atau mem-pin satu dependensi tertentu ke versi lama
Ini juga lebih baik untuk rekan kerja di proyek yang memakai Nix. Waktu tambahan untuk menyiapkan dan merawat nix shell jadi dibagi bersama, dan keyakinan bahwa lingkungan pengembangan semua orang identik juga jauh lebih tinggi
Misalnya, bahkan CLI acuannya pun masih belum mengimplementasikan perintah
stop. Meski begitu, jika Anda memakai Docker/container untuk deployment, ada keuntungan karena bisa berbagi cukup banyak konfigurasi antara lingkungan pengembangan dan lingkungan deploymenthttps://containers.dev/
https://github.com/devcontainers/cli
rr(https://rr-project.org/) adalah perangkat lunak yang terasa seperti sihir; saya tidak bisa hidup tanpanya
rr? Saya paham gambaran umum dari pengantar di halaman depan proyeknyaKonsep merekam kegagalan sekali, lalu men-debug rekaman itu secara deterministik berulang kali jelas terdengar berguna
Hanya saja, saya bertanya tentang pengalaman nyata karena saya masih belum benar-benar merasakan sisi “wah, bug/alur kerja tertentu ini pasti mustahil diselesaikan tanpa rr”
Karena latar belakang saya administrator sistem, saya jauh lebih condong ke pendekatan “pakai default yang bagus dengan konfigurasi minimal”. Tapi belakangan ada dua hal yang mematahkan kebiasaan itu
jujutsu(
jj) sudah sering dibahas di situs ini, tetapi jujur saja, memakainya benar-benar menyenangkan. Saya tidak pernah menyangka akan meninggalkan git CLI, tapi ternyata begituSelama bertahun-tahun saya menghindari belajar memakai dan mengonfigurasi nvim, tetapi nvchad membuat saya bisa mulai. Namanya memang mengerikan, tetapi bagi saya ini konfigurasi awal yang sangat bagus: cukup minimalis namun pas subjektifnya
Tentu saja sekarang saya akhirnya memakai konfigurasi minimal saya sendiri dari nol
Selain itu, saya cukup sering memakai Python, jadi saya juga harus bilang bahwa alat-alat astral terus menyenangkan untuk dipakai. Semoga Anthropic merawatnya dengan baik
Kecuali Anda memakai latar gelap dengan teks gaya muntahan unicorn pelangi kontras tinggi khas zaman dulu, perlu cukup banyak penyesuaian warna dan template
Sebenarnya Emacs. Sedikit demi sedikit saya memindahkan pekerjaan komputasi saya ke Emacs dan mulai menerima default-nya
Emacs sangat mudah dikustomisasi, dan banyak key binding melakukan hal yang tepat di semua mode
Daftar yang sedang saya migrasikan perlahan adalah Git → Magit, Email → mu4e, RSS → elfeed, Notes/TODO/Calendar → org mode, Finder → dired
Quarto juga cukup bagus untuk cepat membuat materi presentasi dalam Markdown. Nix dan nix-darwin saya pakai untuk semua dotfiles
Emacs. Tidak sering saya pakai, tapi menulis parser dengan ragel itu menyenangkan
Sublime Text jelas diremehkan oleh terlalu banyak orang
Sepertinya namanya sesuatu seperti “vintage”. Akhir-akhir ini, dalam situasi di mana saya dulu ingin bisa menyukai Sublime Text, saya memakai Zed