Saya mau cerita tentang sebuah bug yang saya perbaiki dan dapat bounty 200 USD plus kerjaan ekstra yang menyusul dari ini. Meski secara nilai ini kecil dibandingkan banyak proyek lain, tapi ada banyak hal yang membuat gembira dari satu bug kecil ini sehingga ingin saya ceritakan.
Cerita singkatnya: teman saya memakai software open source QZ, sebuah library untuk printing via web browser. Jadi jika client menginstall software ini di PC-nya maka web app yang memakai library QZ bisa mengakses langsung printer lokal. Langsung di sini artinya bisa mengirimkan kode mentah, sehingga printing bisa cepat dan mendukung berbagai fitur spesifik printer. Fitur semacam ini dibutuhkan untuk software Point Of Sales, aplikasi bank atau sejenisnya yang butuh langsung mencetak ke printer yang tidak standar (misalnya printer thermal, printer buku tabungan, dsb).
Rekan saya menemui masalah ketika melakukan raw printing. Ternyata ini sudah jadi masalah di software tersebut sejak tahun lalu dan ada bounty untuk yang bisa menyelesaikan masalah ini. Meskipun software ini open source, tapi mereka meminta bayaran untuk mereka yang butuh support komersial. Saya berhasil menemukan masalah dan solusinya dengen cepat. Ada beberapa hal yang membuat saya senang.
Hal pertama yang membuat senang adalah: Saya nggak mencari bounty ini, nggak pernah dengar tentang software ini sebelumnya. Bug ini diberitahu oleh teman. Inilah pentingnya untuk menjaga networking dan pertemanan pada umumnya. Ini sebabnya kadang perlu ngobrol teknis, supaya tahu bidang keahlian rekan kita dan bisa bertukar proyek.
Dulu waktu masih jadi mahasiswa saya sempat kerja di satgas pengolah data institut di ITB. Salah satu yang saya program dulu adalah komponen custom untuk printing raw dengan kode PCL (untuk HP Laserjet) dan ESC/P untuk Epson. Hal berikutnya yang membuat senang adalah: ternyata pengetahuan lama yang saya pikir tidak akan terpakai lagi ternyata masih berguna.
Solusi bug ini pada akhirnya juga sangat sederhana, pembuat website yang ingin memakai QZ hanya perlu mengubah satu string encoding, dari “UTF-8” menjadi “ISO8559-1”. Tidak perlu mengubah kode di software QZ sama sekali. Hal ini juga membuat saya senang, mengingatkan cerita tentang Knowing Where To Tap. Versi singkat cerita tersebut: ada seseorang yang diminta membetulkan masalah, dan solusinya adalah cuma mengetuk satu titik dengan palu lalu meminta 1000 USD, rinciannya: mengetuk dengan palu 50 sen, mengetahui di mana harus mengetuk: 999.5 USD.
Bug ini sebenarnya cukup jelas untuk orang yang sering bekerja dengan masalah teks dan representasi biner. Walaupun solusinya sangat sederhana, tentunya perlu ditest dulu apakah ada lebih dari satu bug. Untungnya kombinasi internet cepat (bisa cepat checkout source code QZ) dan IDE yang bagus (Intellij IDEA Ultimate versi berbayar) memungkinan saya bisa mengetes dengan sangat mudah. Ini juga suatu hal yang membuat saya senang: saya tinggal di kota yang internetnya cepat dan murah. Kalau suatu saat pindah dari Chiang Mai, sepertinya internet yang cepat ini sudah menjadi sesuatu yang wajib dimiliki.
Dibandingkan bug security yang kadang rewardnya besar sekali (bahkan untuk bug security yang kecil), reward untuk bug ini tidak besar. Tapi jika dibandingkan dengan gaji banyak orang di Indonesia ataupun Thailand, nilai ini cukup lumayan (misalnya ini lebih besar dari UMK per bulan di berbagai kota di Jawa Tengah). Tentunya rejeki tidak diduga ini membuat saya senang.
Saya pikir ini jadi satu pengalaman yang menarik dan ceritanya berhenti di situ saja. Ternyata beberapa minggu kemudian saya diminta apakah bisa memperbaiki bug lain di software yang sama. Kali ini berhubungan dengan printing teks Vietnam di printer yang mendukung font Vietnam dengan encoding tertentu. Meskipun saya tidak bisa membaca teks Vietnam dan tidak mengerti bahasa Vietnam, tapi ini bisa saya selesaikan dalam waktu singkat setelah membaca beberapa website mengenai karakter Vietnam. Berbagai masalah encoding ini dulu saya temui waktu memprogram BiblePlus untuk Symbian, dan kemudian Blackberry, itu sebabnya tidak lama bagi saya menulis solusinya.
Untungnya encoding yang dipakai (TCVN-3) cukup sederhana (8 bit) tidak serumit Shift-JIS misalnya. Kode yang saya tulis bisa dilihat di github saya . Bisa dilihat bahwa kodenya sangat sederhana dan saya selesaikan beberapa jam saja sebelum jam tidur. Saya bersyukur dapat reward juga untuk bug ini, kali ini: 350 USD.
Cukup demikian ceritanya. Saya menuliskan cerita ini agar saya sendiri ingat untuk selalu bersyukur atas segala hal.
Character encoding memang menyakitkan bagi banyak orang, termasuk bagi web developer yang bikin website multi language.
Sharing yang mencerahkan Mas, jadi pemicu untuk terus belajar.