Jake Wharton Bikin Alat Sendiri untuk Live Coding di KotlinConf

Jake Wharton Bikin Alat Sendiri untuk Live Coding di KotlinConf

Teknologi

Jake Wharton membuat dir stepper, alat 50 baris Kotlin/Native, agar sesi live coding di KotlinConf berjalan tanpa terlihat penonton.

Jake Wharton memaparkan pengalaman di balik sesi live coding pertamanya dalam tulisan yang diterbitkan 16 Juli 2026. Presentasi berjudul "Talking to terminals (and how they talk back)" itu ia bawakan di KotlinConf, sekitar dua bulan sebelum tulisan tersebut terbit, dan seluruh kode ditulis dari nol di hadapan penonton.

Sebelumnya Wharton terbiasa membawakan presentasi yang banyak memakai slide, berisi demo kecil atau penelusuran kode yang sudah ada. Karena sesi kali ini dimulai dari keadaan kosong, ia menghabiskan sebagian besar waktu di dalam IDE. Dari situ muncul persoalan lain: bagaimana mengingat bagian kode yang harus ditulis pada setiap tahap.

Bentrok saat memakai commit git

Jalan yang paling gamblang adalah menyiapkan repositori git dengan satu commit untuk setiap tahap. Menurut Wharton, cara itu justru sangat merepotkan dan tidak berjalan sama sekali, setidaknya untuknya.

Ia mulai dengan commit, tetapi ketika mencapai commit ketujuh atau kedelapan, lebih dari separuh waktunya habis untuk melakukan interactive rebase atas seluruh riwayat. Jika ia membutuhkan sebuah fungsi pada tahap 8 yang seharusnya sudah diekstrak antara tahap 3 dan 4, ia harus meluangkan sekitar 10 menit lagi untuk menulis ulang riwayat. Karena berkas yang berubah hanya sedikit, setiap commit berbenturan dengan perubahan riwayat.

Masalah berikutnya adalah cara berpindah antar tahap. Git umumnya membantu pengguna melompat mundur dari versi terakhir, bukan melangkah maju dari versi paling awal. Bagi Wharton, pendekatan itu jelas melawan arus.

Plugin IDE yang tak sempat ditulis

Wharton mempresentasikan materinya di IntelliJ IDEA, IDE yang ia sebut sebagai platform yang sangat bisa diperluas. Plugin khusus sebenarnya bisa menyelesaikan persoalan itu. Namun ia telah menunda penulisan materi dan hanya menyisakan beberapa hari sebelum tampil, sehingga tidak mungkin mempelajari sekaligus menulis plugin IDE dalam waktu sesingkat itu. Ia juga menilai kualitas dokumentasi plugin IntelliJ berbanding terbalik dengan kecanggihan platform tersebut.

Wharton secara tegas menolak memakai model bahasa besar (LLM) untuk mengerjakan alat bantunya. Ia menyinggung persoalan etis yang melingkupinya dan menegaskan bahwa menggarap alat itu sendiri adalah bagian yang menyenangkan.

Ia kemudian menemukan dokumentasi IntelliJ mengenai external tools. Jika alat ditulis sebagai program command-line, IDE dapat dikonfigurasi untuk memanggilnya, dan menurut dokumentasi tersebut pengguna dapat "assign a shortcut to it" atau menetapkan pintasan untuk alat itu.

Direktori .steps dan penanda tahap

Karena alat command-line itu bersifat stateless, isi setiap tahap perlu disimpan dan status tahap aktif harus dicatat. Wharton memilih satu direktori bernama .steps yang menampung seluruh tahap, masing-masing sebagai subdirektori bernomor berurutan. Setiap berkas di dalam sebuah tahap akan disalin ke direktori kerja saat tahap itu dijalankan.

Proyeknya dibangun dengan Gradle, sehingga terdapat berkas build.gradle dan direktori src berisi kode. Pada tahap-tahap awal hanya main.kt yang berubah, lalu tahap berikutnya mulai menyertakan berkas lain seperti build.gradle.

Untuk menandai tahap yang sedang aktif, ia menempatkan berkas kosong dengan nama khusus, misalnya .step.2, di folder utama. Menaruhnya di dalam direktori .steps sempat terasa lebih rapi karena sepenuhnya tak terlihat, tetapi ketika menguji tahapan ia perlu merujuk tahap terkini dengan cepat. Penanda itu juga memastikan kode yang tampil sejalan dengan catatannya selama presentasi.

Alatnya sendiri digambarkan sederhana: program Kotlin/Native sekitar 50 baris yang ia sebut sebagai "glorified cp", istilahnya untuk program yang pada dasarnya hanya menyalin berkas.

Seiring bertambahnya tahap dan ia mengulik perpindahan antar tahap, Wharton ingin bisa mengatur ulang atau bahkan mundur. Keduanya tidak diperlukan saat presentasi, tetapi menjadi penting ketika menyusun materi. Program itu menerjemahkan tiga arah menjadi nilai delta: "next" menjadi 1, "prev" menjadi -1, dan "reset" menjadi 0, sedangkan arah lain memicu UnsupportedOperationException dengan pesan "Unknown direction".

Pintasan tombol di IntelliJ

Di menu Settings > Tools > External Tools, Wharton membuat tiga "tools" yang masing-masing memanggil program itu dengan tiga arah berbeda. Setiap tool kemudian diberi pintasan tombol sendiri, sehingga ia dapat berpindah tahap tanpa terlihat penonton. Bagian terakhir yang krusial adalah memastikan IDE disinkronkan secara otomatis terhadap perubahan berkas dari luar.

dir-stepper tersedia sebagai proyek open source, dan README-nya memuat video yang menunjukkan integrasi lengkapnya.

Wharton menilai alat itu bekerja sangat baik untuk kebutuhannya, meski ia baru teringat di tengah presentasi bahwa ia seharusnya memakai alat tersebut. Sebagai proyek sampingan, ia menyebutnya menghibur, tidak memakan waktu lama untuk dibuat, dan pada akhirnya membuatnya lebih bersemangat menyelesaikan materi presentasi.

Sumber: Jake Wharton

Your experience on this site will be improved by allowing cookies Cookie Policy