Ada yang nanya di Telegram: Mas, peralatan untuk ngoding nya apa aja klo boleh tau? Meskipun beberapa sudah gue bagikan disini, tapi karena tidak terlalu up-to-date juga, dan kurang detail, jadi gue bagikan disini. Siapa tau butuh inspirasi, jadi semoga ter-inspirasi!
I work in any UNIX environment. My daily use is Mac OS X, but if only Linux in the options, it should be Elementary. Elementary OS adalah OS favorit gue sebelum menggunakan Mac, selain elementary gue lebih suka KDE (entah mengapa gue kurang senang dengan GNOME).
Untuk server, baru gue menggunakan Ubuntu Server. I love debian family.
Meskipun gue seorang Frontend Engineer, tapi 80% workflow gue berada di terminal. Menggunakan terminal yang bisa dikustomisasi sesuai dengan selera gue adalah terminal favorit gue. Di Mac, gue menggunakan iTerm. Di Linux, menggunakan terminal bawaan sudah cukup menurut gue.
Gue menggunakan ZSH, karena ekosistemnya (hello OhMyZSH!). Enggak pernah tertarik menggunakan Fish Shell karena menurut gue UX/DX nya kurang bagus.
Karena 80% workflow gue berada di terminal, code editor favorit gue adalah Vim (tapi menggunakan NeoVim). Gue sudah familiar dengan berbagai command yang ada di Vim, sampai membuat key binding gue sendiri. Sebelumnya menggunakan VSCode, entah kenapa gue merasa lebih fokus ketika menggunakan Vim.
Sebelumnya gue menggunakan VSCode sebelum gue mengetahui bila di Vim kita bisa membuka terminal (:tabe
, :terminal
). Setelah mengetahuinya (gue biasanya buka terminalnya di tab baru), gue full menggunakan Vim diberbagai project. Oke mungkin di Vim tidak ada Intellisense, tapi selama menggunakan VSCode gue (tidak terlalu) merasa terbantu dengan Intellisense tersebut.
Enggak pernah tertarik untuk menggunakan Atom (walau pernah coba). Fyi, editor pertama gue adalah Notepad++ dan Sublime.
Sebagai seorang Frontend Engineer yang peduli dengan Cross-browser compatibility, gue memasang banyak browser dimesin gue. Chrome, Firefox, dan Safari. Tiap browser pasti memiliki versi Developernya, engak tertarik menggunakan yang versi Canary atau Nightly Build karena males update.
Cross-browser compatibility ini sangat penting untuk Frontend Developer mengingat setiap user menggunakan browser yang berbeda-beda. Dan cara rendering, API, dll tiap browser pun berbeda-beda. Banyak pelajaran yang didapat ketika kita development menggunakan browser lebih dari satu.
Usahakan menggunakan browser & versinya yang evergreen/stable. Jangan yang outdated, apalagi yang canary (kecuali untuk ber-experimen).
Workflow gue simple, semuanya berada di package.json
. Gue sedikit familiar dengan Makefile
, tapi karena setiap hari bekerja diekosistem JavaScript, jadi mau enggak mau gue harus memaksimalkan penggunaan di package.json
. Ketika gue merasa penggunaan di package.json
kurang powerfull, gue lebih suka membuat custom script menggunakan bash, daripada file javascript itu sendiri (Ingin mencoba custom script menggunakan JS, tapi belum tau script apa yang harus gue buat).
Untuk penjelasan detail tentang workflow gue, gue akan membahasnya ditulisan terpisah tentang Frontend Infrastructure.
Seperti modern develoepr lainnya: Gue menggunakan Git. Enggak menggunakan Git GUI karena belum dapet manfaatnya haha (dulu pakai Git GUI hanya untuk kondisi conflict, karena sekarang sudah bisa cara resolvenya di CLI, so goodbye!)
Karena gue seorang Vim User, tentu gue ingin bisa memanjakan kemalasan gue dalam menggunakan Vim sehingga bisa lebih produktif. Plugin-plugin di Vim yang gue gunakan enggak terlalu banyak, hanya:
git status
, git diff
, git checkout
, dll tanpa harus keluar dari Vimstandard
.className='c-Navbar'
, karena menggunakan :%s/c-Navbar/<whatever>/gc
terlalu berbahaya, gue lebih suka menggunakan Multiple Cursors..editorconfig
. Dengan Vim Prettier, gue bisa dengan mudah “nge-fix” berbagai masalah tersebut, meskipun terkadang ada beberapa fitur yang tidak sesuai dengan workflow gue sebelumnya (gue menggunakan Standard, sedangkan Prettier unopinionated). Biasanya workflow gue: Prettier
dilanjutkan dengan Neoformat
. Mantap.Cmd+p
nya Di VSCode menurut gue. Ketika gue tau file apa yang ingin gue buka, gue akan menggunakan fzf
.Lumayan banyak juga, ya? Selama menggunakan Vim, plugin-plugin tersebut enggak berpengaruh ke startup time ketika gue membuka Vim. Untuk konfigurasi Vim gue, bisa dicek disini. Sengaja gue membuat file-file konfigurasi gue a.k.a dotfiles dipublish secara open, jadi kalau gue ingin ganti mesin, tinggal copy saja file-file tersebut.
Semenjak menggunakan Linux dulu, gue belum pernah tau keuntungan yang ditawarkan Tmux selain multi-window nya (multiple terminal session dalam satu window). Seiring berjalannya waktu, gue sangat terbantu ternyata dengan Tmux. Gue memisahkan penggunaan terminal (yang sebelumnya menggunakan:tabe -> :terminal
), menjadi Ctrl+b -> c
saja. Fitur multi sessions di Tmux a.k.a Multi-tasker nya juga berguna (gue baru tau ketika detach tmux sessions, ternyata tidak mematikan server tmux) ketika gue males nge-close tab tab yang ada di vim gue.
Aplikasi-aplikasi GUI yang gue install sekarang hanya:
P.S: Semua ini hanyalah tools, pembantu. Yang paling penting adalah skills & mindset, okay?
Related: My setup (sometimes I update it).