Tentang
Apa yang saya bangun, dan bagaimana biasanya saya mengerjakannya.
Nama saya Aris Jirat Kurniawan. Saya menulis perangkat lunak, dan kalau perangkat lunaknya butuh benda fisik untuk dijalankan, biasanya benda itu ikut saya buat sendiri.
Saya kuliah Sistem Komputer di sebuah universitas di Jakarta. Server yang menyajikan halaman ini ada di rumah saya dan saya urus sendiri — jadi kalau situs ini mati, itu salah saya.
01 — Gajah
Ada stiker gajah di tutup laptop saya. Bukan logo yang saya desain — stiker itu menempel, tidak pernah saya lepas, dan sejak itu jadi penanda saya. Ceritanya cuma sebatas itu.
Yang lebih layak diceritakan adalah kebiasaan di baliknya: saya lebih suka membongkar sesuatu sampai ke dasarnya daripada berhenti begitu ia mulai jalan, dan lebih suka menyelesaikan satu benda sampai tuntas daripada menggantung tiga.
Karena itu matematika untuk pendeteksi jalan berlubang saya turunkan di kertas dulu sebelum jadi kode, papan ketiknya berjalan dari model 3D ke papan yang disolder sampai firmware-nya sendiri, dan catatan pembuatannya masih menyimpan sepuluh cetakan yang gagal berikut dua sebabnya. Namanya catatan, bukan etalase.
02 — Yang saya bangun
-
ArkButton
Papan ketik yang sedang saya pakai mengetik ini. Saya gambar sendiri, saya cetak, saya solder tombol demi tombol, dan firmware-nya saya tulis sendiri — sebagian besar supaya tombol yang paling sering saya tekan bisa duduk di bawah ibu jari, di tempat yang saya pilih.
-
pothole-detection
Program yang belajar mengenali jalan berlubang dari foto — dan matematikanya saya turunkan sendiri, bukan memanggil pustaka siap pakai, lalu saya cocokkan dengan hitungan angka untuk membuktikan turunannya memang benar.
-
homelab-platform
Sekumpulan mesin kecil di rumah yang menyajikan halaman ini, disusun supaya satu-satunya cara mengubah sesuatu adalah menuliskannya dulu — kalau saya mengutak-atik langsung sistem yang sedang jalan, dia mengembalikannya sendiri.
-
fate
Pustaka yang menjaga sebuah proses panjang tetap tahu ia sedang berada di langkah mana — pembukuan di balik hal seperti alur pembayaran atau antrean persetujuan — berikut alat pendamping, fate-studio , yang menggambar seluruh prosesnya jadi diagram yang bisa ditelusuri sambil berjalan.
-
otm
Cara mengirim kata sandi ke orang lain tanpa meninggalkannya selamanya di riwayat percakapan: Anda dapat satu tautan, dan tautan itu berhenti bekerja begitu dibuka.
-
clowner
Skrip kecil yang mengubah satu aplikasi macOS jadi dua salinan yang benar-benar terpisah, supaya urusan kerja dan urusan pribadi bisa jalan berdampingan tanpa keluar-masuk akun.
03 — Pernah ikut kerjakan
Terbaru dulu. Baris berpanah di bawah tiap tempat adalah yang terbawa dari tempat sebelumnya ke sana.
-
BFI Finance sekarang
-
Layanan proses berbasis workflow
Proses persetujuan yang berjalan berhari-hari, dijalankan sebagai workflow yang tahan restart. Yang membuatnya menarik bukan itu, tapi cara urutannya ditentukan: tiap langkah mendeklarasikan bidang data apa yang ia BACA dan apa yang ia TULIS, lalu penjadwalnya menurunkan urutan eksekusi dari deklarasi itu — bukan dari rangkaian yang digambar tangan. Kalau satu nilai di hulu berubah, langkah-langkah yang terlanjur memakainya dibatalkan dan dihitung ulang; yang masukannya ternyata sama persis dengan sebelumnya memakai hasil lama, tidak dijalankan dua kali. Antar-service berkirim pesan lewat NATS JetStream dan RabbitMQ, dan riwayat tiap bidang disimpan sebagai rantai perubahan yang tidak pernah ditimpa. Layar operatornya bukan aplikasi satu halaman: formulirnya dirender di server sebagai potongan HTML, ditukar ke halaman oleh HTMX, dan hanya kontrol yang benar-benar interaktif yang dihidrasi sebagai web component.
-
Perkakas developer untuk tim platform
CLI yang menyatukan belasan service dari repositori terpisah menjadi satu lingkungan kerja lokal: satu worktree per fitur, reverse proxy ber-HTTPS di depannya, dan proses sisa dari sesi sebelumnya dihentikan otomatis sebelum instance baru dijalankan. Sebagian besar shell — karena yang diurusnya memang proses, port, sertifikat, dan direktori — dengan Node untuk bagian yang butuh lebih dari itu.
-
Platform pelanggan, dan draf yang tidak boleh hilang
Muka webnya dibangun di atas tumpukan yang sama dengan web pendaftaran sehingga komponennya dipakai bersama. Yang lebih menarik ada di belakangnya: verifikasi mandiri itu panjang, orang meninggalkannya di tengah dan kembali berhari-hari kemudian, jadi tiap ketikan disimpan otomatis ke penyimpanan kunci-nilai yang cepat. Isinya kemudian dipindahkan ke basis data relasional lewat baca-tembus — dibaca dari tempat baru dulu, jatuh ke tempat lama kalau belum ada di sana — supaya perpindahannya tidak pernah kehilangan draf siapa pun.
-
Aplikasi ponsel untuk agen lapangan
Dipakai di lokasi pelanggan, bukan di meja. Jaringan di lapangan naik-turun, jadi alurnya dirancang untuk tetap konsisten ketika sambungan hilang di tengah pengisian. Firebase menangani autentikasi, pemberitahuan, dan sinkronisasi ke belakang.
-
Web pendaftaran untuk mitra di luar perusahaan
Alur pendaftaran panjang yang diisi dari luar kantor, sering lewat ponsel dan sering terputus di tengah. Isian bertahan lintas sesi, unggahan dokumen bisa dilanjutkan, dan tiap layar punya alamatnya sendiri sehingga bisa dibuka ulang dari tautan yang sama. Bagian terbesar dari tiga tahun pertama.
Urutan langkahnya tidak digambar tangan — ia diturunkan dari deklarasi baca-tulis tiap langkah, seperti lembar sebar yang menghitung ulang sel yang bergantung pada sel yang barusan diubah. keadaan jadi benda, bukan tumpukan boolean
-
-
Ruangguru
-
Pemutar video dengan kuis di dalamnya
Video berhenti di titik yang ditentukan, menampilkan soal, dan melanjut setelah dijawab. Sumbernya bukan berkas tunggal: potongan dikirim bertahap, kualitas berganti mengikuti bandwidth, dan tiap potongan terenkripsi sehingga pemutar harus menegosiasikan kunci ke server lisensi dan menangani kunci yang ditolak. Kombinasi keadaan itu dikelola sebagai mesin keadaan, sehingga "menyangga", "bertanya", dan "sudah dijawab" tidak dapat aktif bersamaan.
-
Web belajar untuk salah satu produknya
Beberapa aplikasi web dalam satu monorepo dengan kumpulan komponen bersama, sehingga perbaikan diterapkan sekali dan berlaku di semuanya.
-
CMS yang dipakai bersama banyak produk
Satu antarmuka penyuntingan untuk beberapa produk sekaligus, ditulis dalam ReasonML — bahasa bertipe ketat yang dikompilasi ke JavaScript, sehingga bentuk data yang tidak sesuai tertangkap saat kompilasi. Dirender di server lebih dulu agar halaman berisi banyak data tetap cepat tampil.
-
Registri kontrak antar-service
Definisi bersama untuk banyak service, sehingga perubahan yang merusak kompatibilitas tertangkap sebelum rilis. Kontribusinya terpusat pada sisi kontrak: aturan otorisasi per pemanggil dan penandaan bidang yang boleh kosong.
Mesin keadaan masuk lewat pemutar video di peramban, muncul lagi lima tahun kemudian sebagai orkestrasi proses di server, lalu berhenti jadi pustaka orang lain. merawat pemutar orang lain → membangun sendiri
-
-
Mola TV
-
Pemeliharaan pemutar video streaming
Pemeliharaan pemutar yang sudah berjalan di produksi: penanganan galat pemutaran, perilaku saat bandwidth berubah, dan perbaikan pada jalur yang sering gagal.
-
Pembayaran berulang dan giliran jaga
Bagian dari tim penagihan langganan berulang, yang kegagalannya harus terdeteksi dan bukan lewat diam-diam. Termasuk giliran jaga untuk insiden produksi.
dari halaman ke produk: tanggal, stok, orang di lapangan
-
-
YukStay
-
Halaman depan dan pencarian hunian
Sewa apartemen dan kost bulanan. Layar pertamanya sebuah pencarian lokasi dengan jumlah unit tersedia per area, dalam dua bahasa sejak awal. Halamannya dirender di server lalu di-hydrate di peramban, jadi hasil pencarian sudah ada di HTML sebelum JavaScript-nya jalan — penting untuk halaman yang harus terindeks dan harus cepat di ponsel. Versi AMP-nya dilayani terpisah untuk hasil pencarian Google.
-
Kalender ketersediaan dan panel admin
Ketersediaan hunian ditampilkan sebagai kalender karena penyewaan terikat rentang tanggal, bukan daftar item. Panel adminnya terhubung ke aplikasi agen lapangan berbasis React Native, dengan Firebase sebagai jembatannya.
cepat itu keputusan awal, bukan tambalan akhir
-
-
Workmate
-
Pemeliharaan klien AngularJS dan halaman baru dengan Vue
Platform pencarian pekerja harian dengan pola permintaan bergelombang mengikuti acara dan jadwal pelatihan. Klien AngularJS yang sudah berjalan tetap dipelihara sementara halaman baru ditulis dengan Vue di sebelahnya, termasuk alur pendaftaran singkat yang dirilis dalam satu sprint.
-
Revamp dengan React dan Netlify
Penulisan ulang antarmuka dengan React, dilayankan lewat Netlify. Anggaran waktu muat dan keterbacaan oleh mesin pencari ditetapkan di awal — pendekatan yang dibawa dari pengerjaan AMP sebelumnya — bukan dioptimalkan setelah rilis.
kebiasaan pertama, dari seorang mentor: buktikan, jangan percaya
-
-
Docotel
-
Eproc
Sistem e-procurement mereka, dikerjakan dengan tes ditulis lebih dulu. Struktur berkas dan konvensi penamaan mengikuti panduan gaya John Papa, integrasi berjalan lewat CI, dan API-nya disusun mengikuti REST secara konsisten.
-
Calc the Game — analisis dan penyelesai
Permainan angka yang dianalisis untuk memahami aturan internalnya, lalu dibuatkan penyelesai. Mencari urutan operasi yang mencapai angka sasaran diselesaikan sebagai persoalan permutasi.
-
Memimpin sisi front end
Memimpin pengerjaan front end pada paruh akhir: pembagian kerja, konsistensi konvensi kode antar anggota tim, dan penyelesaian fitur dalam tenggat proyek.
otodidak, belum ada konvensi bersama
-
-
Menjajaki bidang lain
-
Arsitektur, dipilih karena bersinggungan dengan IoT
Bangunan bisa dipasangi sensor dan dibaca dari jauh, dan itu yang menarik dari jurusannya. Pemrogramannya sendiri tetap dipelajari di luar kelas.
-
Konsultan IT sendiri
Jasa konsultan IT dengan bekal pengalaman web development, dijalankan sendiri sebelum kembali bekerja kantoran.
-
Otomasi untuk pekerjaan administratif
Skrip untuk bagian pekerjaan sendiri yang berulang — bentuk paling awal dari perkakas yang belakangan dibangun untuk tim.
antarmuka = urutan keadaan, bukan tumpukan halaman
-
-
Freelance
-
Aplikasi web PHP, otodidak
Berawal dari satu tugas sekolah yang diteruskan menjadi aplikasi utuh, lalu berkembang jadi pekerjaan lepas. PHP dipelajari sendiri sampai ke Laravel.
-
Situs klien berbasis Flash
Situs resmi seorang klien selama empat tahun: blog, halaman pencapaian, galeri, dan profil — seluruhnya dibangun di dalam satu movie Flash, sehingga navigasi, transisi, dan tiap halaman ditulis sebagai ActionScript. Dokumen HTML-nya sendiri hanya pembungkus.
Mesin pencari melihat kotak kiri; pengunjung melihat kotak kanan. Itulah sebabnya seluruh generasi situs seperti ini hilang tanpa jejak dari web. -
04 — Sisanya
Selebihnya kuliah, dan perkakas yang saya pakai sehari-hari — papan ketik, terminal, editor, server — semuanya tertulis di Gear. Setiap proyek di atas punya tulisannya sendiri, kalau Anda ingin bagian yang di halaman ini saya tinggalkan.