Cerita pengalaman pentesting

Sudah beberapa tahun terakhir saya melakukan pentesting eksternal, menjadi freelancer melalui salah satu perusahaan security di Jakarta. Kali ini saya ingin menuliskan cerita pengalaman, dari mulai kenapa pentesting itu fun, dan beberapa pelajaran yang bisa dipetik (lesson learned) dari pekerjaan pentesting ini. Mengenai pembahasan apa itu pentesting dan serba-serbinya (terutama untuk orang yang ingin produknya ditest), bisa baca tulisan saya sebelumnya serba serbi pentest.

Berbagi ilmu bukan berarti saya sudah jagoan. Saya tidak merasa diri saya sangat jago, dan tidak merasa bahwa apa yang saya pentest pasti sudah aman. Tapi saya merasa ada beberapa hal yang saya tahu yang bisa saya bagikan. Sebagian pentester sangat pelit dengan ilmunya supaya kelihatan jagoan (padahal ilmu pentesting ya itu-itu aja).

Karena pekerjaan saya lakukan secara remote, scopenya biasanya terbatas: web dan aplikasi mobile. Tapi kadang ada juga pekerjaan yang melibatkan hardware misalnya kartu NFC (bendanya dikirim ke sini dan dikirimkan balik setelah selesai), atau masuk ke jaringan internal via VPN (yang ini jarang).

Sejauh ini saya tidak pernah berhadapan langsung dengan client, kecuali membalas beberapa hal teknis via email. Jadi lesson learned di sini tidak akan mencakup interaksi dengan client. Saya juga tidak membuat laporan resmi atau melakukan presentasi untuk client, ini dilakukan orang lain, jadi itu juga tidak masuk ke scope.

Saya memulai pekerjaan pentest dengan dasar ilmu yang mungkin berbeda dengan orang lain:

  • Dulu saya pernah bandel waktu di semester pertama kuliah, belasan tahun yang lalu. Saya dan temen saya pernah melakukan beberapa keisengan digital di kampus, seperti mengeksploitasi sistem, memasang keylogger, dsb
  • Setelah hampir DO, saya menjadi administrator sistem, jadi setelah itu punya dasar sistem operasi dan juga jaringan yang baik untuk OS Linux dan Windows. Sejak saat itu saya hanya hacking for fun, misalnya crack software untuk dipakai sendiri atau mengakali website yang saya pakai
  • Saya punya hobi reverse engineering, tapi tidak benar-benar saya dalami. Contohnya tahun 2006 saya pernah menulis reverse engineering virus Brontok. Saya kerja dengan C++ dan sering kali dalam debugging perlu sampai ke level assembly, jadi masih dengan berbagai hal low level.
  • Saya punya hobi programming dan sudah membuat berbagai macam aplikasi dari mulai web app, mobile app, dan bahkan porting kernel FreeBSD

Ketika mulai pentesting:

  • Saya tidak punya sertifikasi apa-apa
  • Saya cuma kenal sedikit orang security
  • Saya tidak kenal banyak tool yang populer, bahkan waktu itu belum pernah memakai zaproxy ataupun burp suite

Dari hasil ngobrol dengan beberapa orang, kebanyakan pentester mulai dari otodidak. Ada yang mulai dari iseng positif (CTF), ada juga yang masuk dunia security karena hal negatif (tertangkap hacking sesuatu). Beberapa orang berkembang dengan belajar lebih banyak, ada yang kuliah IT, ada yang mengambil sertifikasi, dsb. Sebagian lagi ilmunya tidak berkembang

Kelebihan saya menurut saya adalah: kemampuan membaca kode (baik biner maupun tekstual) dan pengetahuan kriptografi yang cukup baik sehingga bisa menemukan bug kriptografi sejenis hashing bug Mastercard. Bug sejenis ini sudah saya temukan di beberapa payment gateway di Indonesia (sayangnya karena NDA, tidak bisa diceritakan, jadi untuk bug semacam ini saya hanya bilang: bug sejenis Mastercard, tanpa menyebut detail varian masalahnya).

Bug seperti Bug Gojek bisa dengan mudah ditemukan banyak pentester, tapi jika saya membuat aplikasi dengan bug sejenis bug MasterCard atau E-Money Mandiri, saya cukup yakin hanya sedikit pentester yang mampu menemukannya.

Kenapa pentesting?

Kenapa tidak melakukan software development saja? kenapa tertarik pentesting?

  1. Saya memang suka ngoprek apa aja, jadi bagus untuk penyaluran hobi
  2. Memaksa saya belajar banyak teknologi baru. Misalnya ketika ada Angular XSS injection, mau tidak mau saya perlu mengenal angular untuk belajar eksploitasi itu
  3. Pekerjaan pentest sifatnya singkat. Software development biasanya lama. Setelah selesai pun perlu disupport
  4. Seru dan bangga jika bisa menemukan bug fatal. Ini terutama jika dilakukan pada sistem yang sudah live bertahun-tahun, dan baru ditemukan bugnya sekarang.

Apakah selalu menyenangkan?

Tidak ada hal yang semuanya fun, meskipun sebagian besar pekerjaan pentesting sifatnya fun tapi banyak juga yang membosankan. Contohnya jika kita perlu memeriksa sistem informasi yang punya form 10 halaman dan hanya jalan di tablet (jadi tidak bisa memakai skrip auto fill form, atau harus menulis sendiri skrip baru).

Terkadang developer juga membuat gemes karena tidak mengerti bug fatal yang sudah dijelaskan, sehingga kadang sampai perlu membuat video untuk menjelaskan bugnya. Lebih mengesalkan lagi jika mereka dikejar deadline, dan jadinya pentester ikutan dikejar deadline.

Di kasus lain, kadang aplikasinya belum selesai di tanggal yang dijadwalkan, jadi pentester malah jadi tester fungsionalitas aplikasi. Salah satu kasus terparah waktu diberi website dengan halaman HTML statik tanpa https, jadi hal yang bisa dicek sangat minim sekali.

Hal yang membuat sedih adalah Non Disclosure Agreement: kadang saya tidak bisa sharing bug-bug menarik ke orang lain jika itu menyangkut sistem mereka. Bug menarik di sini maksudnya bukan sekedar SQL Injection, XXE atau XSS. Jika bugnya di luar sistem mereka maka saya bisa sharing (contoh: bug alternatif firewall Palo Alto ini juga bisa dianggap bug di luar sistem mereka).

Lesson Learned

Ini adalah beberapa catatan random mengenai berbagai pelajaran yang saya petik

Belajarlah dari orang lain

Belajarlah dari orang lain karena ini cara yang baik untuk memulai. Pelajaran ini bisa didapat dari berbagai cerita orang ataupun dari berbagai tulisan/writeup di web. Setelah mendapatkan gambaran topiknya kita bisa mendalami topik dengan membaca berbagai macam buku atau mencoba berbagai tool.

Karena saya jarang melakukan testing internal (on site), saya juga masih terus belajar dengan melihat report dari orang lain yang mengerjakan testing internal. Tentunya jika kita belajar dari orang lain, kita sebaiknya juga mengajari orang lain, baik dengan memberikan ilmu via obrolan ataupun tulisan.

Saya belum pernah ketemu pentester atau hacker yang punya teknik luar biasa yang tidak diketahui siapapun. Semua ilmu mereka dipelajari dari berbagai writeup dan sharing yang dilakukan orang lain.

Satu orang biasanya tidak cukup

Banyak aplikasi bisa dipentest oleh satu orang, tapi untuk aplikasi super penting, misalnya yang melibatkan uang, sebaiknya pentest dilakukan oleh lebih dari satu orang.

Satu orang pentester bisa membuat kesalahan, dan sumbernya bisa banyak:

  • Skill orang tersebut memang kurang
  • Orang tersebut memiliki skill, tapi pada saat testing mungkin sedang mengantuk, kurang konsentrasi, dsb
  • Jumlah target ada banyak atau fungsionalitas aplikasi terlalu banyak
  • Ada masalah jaringan yang diakses dari jaringan orang tersebut sehingga tool yang dipakai tidak bekerja benar (contoh: bisa saja ISP tertentu menyisipkan iklan jadi eksploitasi gagal), tapi pentester dari jaringan lain ternyata berhasil mengeksploitasi
  • Masalah juga bisa ada di komputer pentester atau tool yang dipakai pentester. Contoh nyata yang pernah saya alami adalah: semua tool berbasis Java (burp suite dan zaproxy) selalu gagal melakukan koneksi ke server tertentu, tapi pentester lain yang memakai Fiddler ternyata bisa melakukan koneksi dengan normal.

Beberapa perusahaan menyewa beberapa group pentester, baik secara bersamaan, ataupun bergantian supaya yakin hasilnya aman. Pekerjaan pentest biasanya dibatasi waktu yang singkat, jadi jumlah bug yang ditemukan terbatas. Harapannya bug-bug besar ditemukan oleh pentester, tapi bukan jaminan bahwa nanti ada hacker atau bug hunter yang berusaha berminggu-minggu bisa tembus ke sebuah aplikasi.

Dari mengerjakan berbagai pekerjaan bareng orang lain, saya jadi belajar memperhatikan bug-bug tertentu yang kadang terlewat oleh saya dan juga tahu tools-tools yang populer dipakai.

Belajar terus informasi terbaru

Di awal kita bisa bertanya secara langsung pada seseorang untuk belajar berbagai hal dasar, tapi setelah itu saatnya kita perlu belajar sendiri “langsung dari sumbernya”. Biasanya sumber awal berbagai teknik baru adalah dari presentasi di security conference. Berbagai security conference akan mengupload file dan video presentasinya sehingga bisa kita baca, jadi tidak perlu ikutan untuk mendapatkan ilmunya.

Berbagai varian dari teknik yang sudah ada juga bisa dibaca dari writeup orang-orang yang melakukan bug bounty. Terkadang isinya membosankan, bug yang sudah sangat sering ditemukan (misalnya XSS), tapi sesekali ada teknik eksploitasi yang menarik yang bisa diambil ilmunya.

Sumber saya mendapatkan berbagai info security terbaru adalah dari reddit /r/netsec dan /r/reversengineering. Biasanya ini sudah cukup untuk merangkum berbagai informasi terbaru. Untuk info tambahan, saya subcribe ke security updates Debian (ada berbagai bug, kadang yang kurang signifikan saya ketahui dari adanya security update package tertentu)

Belajar mencari dan mendalami tool

Seperti saya ceritakan di awal: saya dulu kurang tahu banyak tool. Di awal saya banyak mengimplementasikan tool custom saya sendiri. Setelah memperhatikan pentester lain, jadi tahu berbagai tool yang sudah siap pakai dan lebih matang dari tool buatan saya.

Untuk satu tujuan, biasanya ada banyak sekali pilihan tool. Biasanya saya akan mencoba beberapa tool sejenis lalu memutuskan yang mana yang akan saya pakai, dan kadang saya pakai beberapa sekaligus. Contoh: untuk vulnerability scanner (yang sekedar mencari bug-bug sederhana) saya memakai Nexpose, OpenVAS, dan Arachni.

Sekedar catatan: Jika ada pentester yang hanya menyerahkan hasil scanner, tanpa melakukan testing manual, bisa dipastikan pentester tersebut tidak bekerja. Dalam kasus ini kemungkinan besar ada bug tidak ditemukan, dan Anda akan pusing membaca hasil scan yang masih butuh validasi lagi.

Untuk intercepting proxy, saya akhirnya memilih zaproxy dengan pertimbangan:

  • Gratis (burp professional tidak gratis, sementara versi free tidak bisa menyimpan session)
  • Open source (Fiddler dan burp suite versi free gratis tapi tidak open source)
  • Cross platform (Fiddler tidak cross platform, belum lama ini baru ada versi beta untuk non Windows)

Setelah saya putuskan, saya kemudian berusaha mendalami jika tool tersebut cukup kompleks. Contohnya dalam kasus zaproxy di atas, setelah paham pemakaiannya, saya mencari tips dan trik di Internet dan ketemu bahwa kita bisa memakai berbagai list dari SecLists untuk input zaproxy dan kita bisa menambah berbagai skrip dan list kita sendiri.

Contoh skrip yang bisa kita buat misalnya:

  • skrip payload generator custom (mencoba-coba berbagai payload yang paling sering berhasil)
  • skrip untuk meng-exclude berbagai situs tidak penting (seperti facebook/google/dsb) dari log

Log IP saat ini

Saya melakukan testing dari rumah dengan IP dinamik, artinya IP eksternal bisa berubah setiap waktu. Kadang pihak yang ditest ingin mengecek apakah benar sebuah request berasal dari penyerang sesungguhnya atau dari kerjaan pentesting.

Dulu saya tidak mencatat ini, tapi untungnya saya masih bisa mengecek beberapa IP terakhir melalui log activity di Gmail. Sekarang supaya aman, saya membuat skrip yang mencatat setiap ada perubahan alamat IP.

Log semua sesi pentesting

Alasan saya tidak memakai burp versi gratis adalah karena tidak bisa menyimpan session. Kadang ada client yang menanyakan laporan beberapa bulan yang lalu, padahal website yang ditest sudah berubah. Dengan menyimpan semua sesi pentesting, bisa dilihat semua request yang pernah diberikan, dan juga bisa dijelaskan jika memang ada bagian website yang sudah berubah.

Lakukan otomasi

Banyak pekerjaan pentest sifatnya membosankan dan bisa diotomasi. Otomasi ini bisa dilakukan dengan menginstall berbagai software atau browser extension untuk tujuan khusus atau dengan membuat skrip sendiri. Contoh sederhana: beberapa aplikasi bank memiliki form yang terdiri atas beberapa halaman (misalnya form aplikasi kartu kredit). Dengan browser extension untuk mengisi form secara otomatis (atau menyimpan isian saat ini), maka kita bisa menghemat waktu ketika testing hal semacam itu.

Saya sendiri sekarang ini punya berbagai kategori skrip:

  • berbagai skrip python custom target tertentu
  • berbagai skrip zaproxy
  • browser extension custom
  • skrip Frida untuk pentest Android dan iOS

Ilmu programming sangat terpakai

Secara umum ilmu programming sangat terpakai dalam pentesting. Selain untuk otomasi seperti yang disebutkan sebelumnya, juga terpakai untuk hal-hal berikut:

  • Source code review: keahlian membaca dan memahami program sangat diperlukan
  • API test. Beberapa perusahaan pernah meminta testing apakah API mereka bisa bocor (sejenis bug yang saya temui di kasus Mastercard), jadi mau tidak mau harus membuat program
  • memperbaiki eksploit (contoh: pernah saya temui eksploit Java yang hanya berjalan di Java versi baru karena memakai kelas yang hanya ada di Java terbaru, sedangkan client masih memakai Java versi sebelumnya)
  • Untuk modifikasi kode. Dalam pentest mobile app, kadang kode perlu dipatch untuk memudahkan testing

Dengan dasar programming yang baik, jumlah bug yang ditemukan dan dieksploitasi bisa lebih banyak.

Kreativitas CTF kadang diperlukan

Mungkin sekitar 90% eksploit dari Internet bisa langsung dijalankan, dan biasanya orang-orang akan menyerah jika eksploitnya tidak jalan hanya karena perbedaan versi software. Biasanya hal seperti ini justru jadi tantangan buat saya.

Hal-hal seperti ini bisa dipelajari dengan mengikuti CTF. Banyak soal CTF luar negeri adalah varian dari bug yang nyata. Dalam kasus ini kita perlu paham eksploitnya dan menerapkannya sesuai dengan situasi

Skill administrasi sistem sangat terpakai

Tidak selamanya kita bisa langsung testing ke target yang live. Kadang pentest dibatasi waktunya, kadang koneksi terlalu lambat dari Thailand ke Indonesia. Di saat seperti itu kadang saya perlu menginstall secara lokal berbagai software supaya bisa ditest eksplotasi secara lokal.

Selain contoh kasus di atas, kadang saya menemui mesin dengan sistem operasi yang sangat tua. Saya biasanya menginstall dulu versi yang sama di sistem lokal untuk mengetes eksploit supaya yakin apakah tidak akan membuat sistem crash.

Pengalaman dan ilmu administrasi sistem yang saya miliki ternyata sangat berguna untuk setup semacam ini. Saran saya jika Anda ingin jadi pentester, minimal bisa mensetup sistem operasi dan berbagai software secara lokal untuk ditest sendiri.

Penutup

Salah satu alasan saya dulu meninggalkan dunia security adalah: saya pikir software akan menjadi semakin aman. Ketika saya belajar mengenai SQL injection belasan tahun lalu, saya punya pikiran seperti ini: bug ini mudah sekali dihindari, dalam beberapa tahun ke depan pasti bug seperti ini sudah nggak akan ditemui lagi.

Bug sql injection ini baru saya temukan Januari 2019, di sebuah subdomain situs sebuah bank yang bisa diakses dari publik

Setelah melakukan pentesting beberapa tahun, ternyata saya salah besar, sampai saat ini bug SQL injection masih cukup sering saya temui. Bug buffer overflow dan sejenisnya juga masih ditemui. Sekarang ini banyak jenis bug baru yang sepertinya akan tetap ada sampai belasan tahun ke depan.

Jadi sepertinya sampai cukup jauh ke depan, pentester masih sangat dibutuhkan. Berbagai tools akan membuat beberapa pekerjaan pentesting jadi sederhana, tapi masih banyak yang lain yang tetap harus manual. Tentunya ilmu pentesting ini harus diupdate terus supaya mengikuti perkembangan teknologi. Tiap teknologi bisa membawa banyak masalah baru misalnya yang trend sekarang:

  • Cloud: sering ada misconfiguration
  • IOT: banyak masalah dasar seperti 20 tahun yang lalu (buffer overflow dsb) dan juga ada berbagai serangan menarik seperti glitch attack para microcontroller
  • BlockChain: masalah pada implementasi, pada enkripsi, pada smart contract
  • machine learning (adversarial machine learning)

Dilihat dari contoh di atas, di masa depan ilmu programming dan devops makin diperlukan untuk memahami masalah security yang lebih kompleks.

Catatan Oprekan Liburan

Pulang ke Indonesia kali ini cukup lama dari tanggal 12 Desember 2018 dan baru masuk kerja besok, tanggal 7 Januari. Sebenarnya nggak banyak yang dioprek selama liburan ini, tapi ini sekedar jadi catatan, plus ada beberapa barang yang baru sampai ketika kami sedang di Depok yang siap dioprek bulan ini.

Liburan kali ini saya berusaha meminimasi bawaan, tapi tetap ingin bisa ngoprek hardware. Kali ini saya coba membawa Pi Zero W yang sudah diberi case USB, sehingga bisa langsung dicolok ke komputer untuk powernya. Saya juga sudah setup agar Pi Zero W-nya mengemulasikan USB Ethernet, jadi bisa langsung diakses dari komputer/laptop.

Ini saya pakai untuk iseng-iseng membaca data dari beberapa kartu NFC yang saya temui. Saat ini tidak ada temuan baru yang menarik.

Waktu libur saya sempat ngoprek dan nemu bug. Sementara ini saya nggak kasih tau dulu bugnya apa, tapi sayangnya tidak ada bounty dari perusahaan tersebut. Tapi ada teman saya di situ yang mengurusin security dan pinter bikin cake, jadi ditodong aja, hasilnya Cheese Cake ini.

Dari sejak beberapa tahun lalu saya teringat sebuah game lama, tapi lupa judulnya, dan bahkan lupa di platform mana (NES atau Sega Mega Drive, dulu punya 2 console ini). Yang saya ingat cuma satu: tokohnya membawa anjing dalam petualangannya, anjingnya bisa dibuat agar terbang mengelilingi tokohnya, terus terbang menerjang musuhnya. Karena sulit mencari deskripsi ini (dan adik-adik saya juga lupa), jadi saya putuskan untuk mencoba memainkan semua game NES dan kalau tidak ketemu, akan mencoba semua game Sega Mega Drive.

Saya menggunakan 3DS untuk mencoba-coba game-game NES-nya, jadi bisa dilakukan di mana saja. Saya juga membawa 3DS dalam liburan ini dan untungnya sampai huruf C sudah ketemu judul yang saya cari: Conquest of the Crystal Palace. Walau sudah menemukan ini, saya masih akan meneruskan mencoba semua game NES.

Ini adegan yang saya ingat

Sesampainya di Chiang Mai, sudah ada beberapa paket menunggu.

Nggak semua isi paket dibahas di posting kali ini

Yang pertama adalah decoder ring hadiah dari Flare-On. Jonathan sedang suka bermain-main sebagai detektif/spy dan senang memainkan ini.

Ini hadiah dari menyelesaikan flare-on 2018

Paket lainnya adlaah Foldscope, mikroskop origami kertas. Ceritanya mikroskop ini dibuat dengan biaya 1 USD (tentunya dijual dengan harga lebih dari harga pembuatan), tapi untuk bisa mendapatkannya tidak bisa beli satuan. Harga termurah adalah 35 USD (dapat 20 Foldscope) belum termasuk ongkos kirim.

Jonathan memakai Foldscope

Beberapa waktu yang lalu kernel Linux mensupport satu arsitektur CPU baru: C-SKY dari China. Ini mungkin akan menjadi arsitektur baru terakhir yang akan ditambakan ke Linux karena sekarang semua memakai arsitektur populer atau RISC-V yang terbuka. Karena penasaran saya membeli satu development board untuk CPU ini dan baru sampai ketika saya sudah di Depok. Saat inielum sempat dicoba lebih lanjut.

Booting CSKY
Ini boardnya

Demikian catatan oprekan kali ini. Semoga tahun ini akan bisa menulis lebih banyak oprekan lain.

Cerita Kehidupan part 1

Hari ini akhirnya manggil tukang pijet lagi ke rumah, sebenarnya pegal-pegal sisa perjalanan minggu lalu sudah hilang, tapi ya kalau dipijat kan biar tambah enak badannya hehehe. Ngobrol-ngobrol dengan tukang pijat merupakan salah satu kesempatan saya berlatih berbahasa Thai, karena dia gak bisa bahasa Inggris sama sekali.

Kami mengenalnya sudah lama, dari sejak saya ga bisa bahasa Thai sampai akhirnya bisa mengerti banyak mendengarkan ceritanya. Jadi kepikiran untuk menuliskan kisah kehidupannya. Sebenarnya yang bikin menarik dari kisah kehidupannya adalah, dia pernah diramal, katanya sepanjang hidupnya dia akan hidup susah dan harus bekerja keras. Coba bayangkan kalau udah tau duluan hidup bakal susah kira-kira reaksi kita bagaimana?

Sebut saja namanya Pina, dia dulu bekerja di tempat pijat depan Condo kami tinggal. Dia merupakan orang yang pertama memijat saya di Chiang Mai. Dulu, kalau kami mau pijat, kami ga pilih-pilih tukang pijat, siapa aja yang lagi antri di tempat pijat itu ya terima saja. Kadang-kadang pijatan terasa ga standar, ada yang tenaganya kuat ada yang mungkin karena sudah memijat banyak orang tenaganya jadi tinggal sedikit. Pina ini termasuk yang pijatannya oke. Waktu itu dia masih berumur 40-an. 

Setelah beberapa lama, karena tempat pijat depan Condo sering tutup, pas Pina memijat saya lagi, saya minta nomor teleponnya. Waktu itu sebenarnya kami sudah beberapa tahun ada di Chiang Mai, dan saya masih tetap ragu dan gak percaya untuk memanggil tukang pijat ke rumah apalagi saya tetap ga merasa kenal dengan dia. Tapi saya pikir, ya minta dulu nomornya, nanti kalau mau panggil bisa coba telepon.

Setelah beberaa kali memanggil ke rumah, akhirnya saya mulai mendengarkan kisah-kisah kehidupannya. Dulu saya ga begitu memperhatikan dengan seksama, mungkin juga karena kemampuan bahasa saya merespon juga masih sangat terbatas. Sejak beberapa tahun terakhir ini kisahnya semakin membuat saya kadang-kadang berpikir. Walaupun dia pernah diramal hidupnya bakal susah sampai dia meninggal, dia ga patah semangat, dan dia tetap melakukan apa yang dia bisa.

Dia punya tanah di Mae Teng, sekitar 1 jam perjalanan dari Chiang Mai. Di tanahnya yang cukup luas itu, dia punya rumah yang ditinggali 2 anak laki-lakinya. Dia juga menanam pohon pisang di sana. Kalau habis panen, dia mengerjakan sendiri memanen pisang, membawa pisangnya ke Chiang Mai dan menjualnya ke berbagai warung. Kadang-kadang walau lagi ga dipanggil untuk pijat, dia mampir ke rumah dan mengantarkan beberapa sisir pisang yang masih mentah. Sebagai orang yang hidup pas-pasan, kadang-kadang dia juga membawakan jagung rebus atau cemilan buat anak kami ketika datang untuk memijat. 

Sekarang ini dia sudah berumur 50 tahun lebih, tenaga memijatnya sudah berkurang dibandingkan dengan 11 tahun lalu. Kami masih tetap menggunakan jasanya memijat selama dia masih bekerja jadi tukang pijat. Salah satu alasan kenapa kami masih memanggil dia ke rumah juga karena dia sekarang ini harus membesarkan cucunya yang berumur hampir 2 tahun. Cucu perempuannya ini dia rawat sejak lahir, anak laki-lakinya dan ibu dari cucunya tidak mampu merawat si bayi karena berbagai alasan. Jadi kami pikir, dengan dia memijat kami dia dapat penghasilan untuk membesarkan cucunya itu.

Kadang-kadang kalau mendengarkan cerita dan keluh kesahnya, cerita soal anak-anaknya, cerita soal ibunya yang dulu sakit dan akhirnya meninggal, cerita mengenai merawat cucu, cerita masa lalunya tentang suami-suaminya, saya antara kasian dan heran. Kasihan dengan pilihan kehidupnya yang membuat dia mengalami berbagai kesusahan, heran kenapa dia mau-maunya hidup begitu. Tapi ya, saya berusaha menjadi pendengar yang budiman. Saya tahu, dia gak minta solusi dari saya, dia cuma mau mengeluarkan unek-unek dan pendengar saja. Saya juga ga kepikiran solusi buat dia, ya kan saya ga tahu jalan pikirannya secara lengkap, jadi ya manalah mungkin saya kasih solusi.

Kembali ke cerita hidupnya, salah satu episode cerita yang saya ingat adalah: dia menikah muda, menikah dengan pesta besar. Tapi pernikahannya itu ga berlangsung lama karena suaminya menikah lagi dengan wanita lain. Setau saya suami pertamanya ini masih tetap kontak dengan dia terutama untuk urusan anak pertama. Kemudian dia menikah lagi, dari pernikahan ke-2 dia punya 1 anak laki-laki lagi, dan pernikahan ke-2 ini pun ga berlanjut. Setelah 2 kali gagal menikah, dia pernah menikah lagi di usia 40 -an dengan seorang pemuda usia 30. Pernikahan itu ga bertahan lama, karena menurut dia si lelaki muda itu cuma jadi beban nambah urusan saja.  Setelah gagal dengan pernikahan ke-3 nya, dia akhirnya memutuskan untuk tidak lagi memikirkan mengenai laki-laki. Bahkan ketika mantan suami pertama menunjukkan indikasi mau balik lagi dengan dia, walaupun si mantan suami itu punya pekerjaan tetap yang artinya bisa untuk menghidupi Pina, dia menolak untuk menikah ulang.

Dengan status Janda beranak 2, dia harus bekerja untuk menghidupi anaknya. Anak-anaknya dia titipkan ke ibunya, dan dia bekerja di Thailand Selatan. Waktu saya tanya apakah dia pernah rindu untuk mengurus anak-anaknya, dia bilang ya rindu juga, tapi kan saya harus cari duit. Dia tadi cerita, saat anaknya sudah sekolah dan bisa menuliskan surat, anaknya mengirimkan surat rindu ke ibunya ini. Membaca surat anaknya, dia menangis di kamar mandi sampai lupa kalau lagi goreng ikan. Hampir saja rumah makan tempat dia bekerja kebakaran, karena api sudah naik ke penggorengan. Ceritanya sebenarnya sedih, tapi dia menceritakannya sambil tertawa-tawa. Mungkin kalau sudah berlalu, mengingat cerita sedih bisa bikin jadi lucu juga ya. 

Sekarang, anak-anaknya sudah besar, yang paling kecil berusia 30 tahunan. Teorinya harusnya dia sudah bisa santai karena anaknya sudah mandiri. Tapi kenyataanya, dia masih harus bekerja keras untuk membesarkan cucu dari anak pertama. Anak pertama ini, punya pekerjaan, tapi gak cukup untuk membiayai anaknya sendiri. Tinggalnya juga bukan di Chiang Mai. Otomatis Pina yang urusin cucu dari bayi. Kadang-kadang Pina mengeluh susahnya mengurus bayi di usia 50-an. Tapi pada dasarnya dia dulu juga ga mengurus anak-anaknya. Mungkin dia terbeban mengurus cucunya, karena merasa dulu dia juga menelantarkan anak-anaknya. Entahlah persisnya apa yang dia pikirkan. Tapi walau mengeluh, dia tetap mengurus cucunya.

Ceritanya agak random ya, masih panjang kisah kehidupan Pina ini. Lain kali akan saya lanjutkan episode-episode kehidupan Pina. Sebenarnya mungkin ada banyak kisah sejenis kehidupan Pina ini. Pelajaran dari kisah hari ini, dia tetap bekerja keras walau tahu hidupnya akan susah sampai akhir hayatnya. Dia mengeluh tapi tetap mengerjakan apa yang dia bisa dan tidak menyerah begitu saja.

Belajar Bahasa

Buat kebanyakan orang di Indonesia, dari kecil mereka sudah bisa paling tidak dua bahasa: Bahasa Indonesia dan bahasa daerahnya. Sebagai orang Batak Simalungun, saya cuma mengerti sedikit dan gak bisa bilang klaim saya bisa bahasa Simalungun. Bahasa yang digunakan di rumah itu ya bahasa Indonesia.

Bahasa pertama yang saya pelajari selain bahasa Indonesia itu bahasa Inggris. Saya ingat, sejak kelas 1 SMP saya ikut kursus belajar bahasa Inggris. Saya ikut kursus dekat rumah, seminggu 2 kali sekitar 2 jam. Di kelas bahasa Inggris, pelajarannya di mulai dengan percakapan, lalu mulai diberi beban spelling, dictation dan grammar. Saya merasa kemampuan bahasa Inggris saya biasa-biasa saja walaupun waktu masa kuliah saya banyak juga membaca textbook dalam bahasa Inggris.

Waktu tingkat 2 kuliah, saat teman-teman saya beramai-ramai belajar bahasa Perancis, saya memilih kursus bahasa Jerman. Alasannya ya karena bahasa Jerman terdengar lebih gampang dikuping daripada bahasa Perancis. Tapi saya cuma belajar bahasa Jerman 1 term selama 6 bulan, sekarang ini saya sudah lupa dengan bahasa Jerman sama sekali.

Setibanya di Chiang Mai, untuk bisa berkomunikasi dengan orang lokal, mau ga mau saya berbahasa Inggris. Untuk belajar bahasa Thai, saya juga belajar menggunakan bahasa Inggris sebagai bahasa perantara. Sejak semakin sering dipakai, bahasa Inggris saya semakin banyak vocabularynya. Perbendaharaan kata dan pelafalan kata bahasa Inggris saya banyak bertambah dari menonton film serial asing dengan subtitle bahasa Inggris.

Sekarang ini, setelah 11 tahun tinggal di Chiang Mai, kemampuan bahasa Thai saya sudah tergolong lumayan untuk percakapan sehari-hari, tapi saya belum terbiasa dengan kata-kata di koran ataupun di berita TV. Saya juga sudah belajar untuk membaca bahasa Thai, tapi karena belum pernah memaksakan diri untuk membaca banyak hal dalam bahasa Thai, sampai sekarang kemampuan baca bahasa Thai saya tergolong beginner.

Buat saya, belajar bahasa itu hanya akan berhasil kalau ada kebutuhan untuk menggunakannya. Saya ingat, kemampuan bahasa Thai saya juga pernah hampir hilang karena lama ga dipakai. Sejak punya teman orang Thai yang gak bisa berbahasa Inggris sama sekali, akhirnya saya memaksakan diri untuk memakai bahasa Thai saya.

Kalau melihat dari cara belajar anak-anak berbahasa, saya juga bisa menyimpulkan, kemampuan berbahasa itu bisa hilang kalau tidak digunakan. Waktu Jonathan sekolah, dia hampir 100 persen menggunakan bahasa Inggris, kemampuan bahasa Indonesianya minim sekali. Waktu dia di daycare, dia bisa berbahasa Thai juga, tapi kemampuan bahasa Thai-nya itu hilang. Sejak homeschool, kemampuan bahasa Indonesia Jonathan meningkat, karena walaupun pelajarannya menggunakan bahasa Inggris, percakapan sehari-hari kami lebih sering menggunakan bahasa Indonesia. Sejak dia belajar kumon Thai, kemampuan bahasa Thai-nya juga kembali lagi, dia juga mulai bisa membaca teks bahasa Thai.

Cara belajar orang beda-beda, ada yang bisa belajar bahasa cukup dari menonton video saja. Joe belajar bahasa Inggris dari menonton sesame street. Joshua sekarang kemampuan berbahasanya kebanyakan bahasa Inggris, karena Jonathan lebih banyak berbahasa Inggris ke dia. Selain itu, Joshua ini tipe yang banyak belajar dari apa yang dia tonton. Lagu-lagu dan film yang dia tonton kebanyakan bahasa Inggris juga, sekarang kalau ngigau juga pake bahasa Inggris dia hahaa.

Saya tipe belajar dari mendengar. Saya ingat, setiap mau ujian dulu saya merasa ga siap, terus saya tutup buku dan mendengarkan teman-teman yang lagi sibuk menghapalkan. Ketika ujian tiba, saya bisa ingat apa yang teman-teman saya hapalkan hahaha. Waktu pertama belajar bahasa Thai, saya juga lebih suka belajar di kelas daripada belajar privat. Dengan belajar di kelas, saya mendapat kesempatan mendengarkan berulang-ulang kata yang baru dari teman-teman yang sedang ditanya oleh gurunya.

Sekarang ini ada banyak metode belajar bahasa baru. Kita bisa mengikuti kursus di kelas bersama murid-murid lain ataupun memanggil guru privat. Kita juga bisa belajar sendiri dari buku-buku. Bisa juga menciptakan flashcard untuk mengulang-ulang perbendaharaan kata. Cara terakhir yang sedang saya coba menggunakan aplikasi.

Menurut pengalaman belajar bahasa Inggris dan Thai, apapun metode belajarnya yang paling penting untuk bisa mahir berbahasa asing itu adalah menggunakan bahasa itu. Percuma belajar bertahun-tahun kalau ga pernah menggunakan bahasa yang dipelajari. Ada orang yang datang ke Thailand seminggu dan bisa menguasai banyak kata-kata sehari-hari karena kemungkinan dia punya keterampilan menguasai bahasa baru.

Bahasa Thailand merupakan bahasa asing pertama yang saya pelajari tanpa bisa membaca tulisannya. Sekarang ini saya masih tetap belajar membacanya dan sejauh ini masih gagal hahaha. Saya perlu mencari keterpaksaan untuk bisa membaca bahasa Thai. Saya sudah coba menambahkan beberapa teman orang Thai yang selalu bikin status bahasa Thai di FB, tapi saya lebih sering mengklik translate this daripada mencoba membaca apa yang mereka tulis. Saya juga ikut bergabung dengan Line Grup homeschooler orang-orang Thai, bagian ini juga sejauh ini lebih sering saya skip baca hahaha. Saya coba membeli beberapa buku anak-anak berbahasa Thai, hasilnya saya bosan karena ceritanya kurang menarik. Saya mencoba menuliskan kembali apa yang saya baca, tapi karena belum nemu waktu yang tepat untuk melakukannya saya lebih sering lupa melakukannya. Ada yang punya ide bagaimana supaya saya bisa terpaksa menulis dalam bahasa Thai? jangan suruh saya ngeblog dalam bahasa Thai, karena belum sampai sana kemampuan bahasa Thai saya hahahaa.

Belakangan ini, karena ketularan wabah nonton kdrama (ini hal yang saya tahu harusnya ga saya mulai), dan karena Jonathan yang keukeuh mau belajar bahasa Spanish mengggunakan aplikasi Memrise, saya juga jadi iseng mencoba belajar Korea pakai aplikasi Memrise. Sejauh ini sih belum konsisten, tapi ternyata alphabet bahasa Korea jauh lebih mudah daripada bahasa Thai. Kapan-kapan walau mungkin belum benar-benar bisa berbahasa Korea saya akan coba tuliskan mengenai aplikasi Memrise untuk belajar bahasa asing.

Topik Skripsi Jurusan Informatika

Saya masih sering dimintai konsultasi untuk  skripsi mahasiswa. Saya dengan senang hati akan membantu berbagai pertanyaan konkrit yang diajukan, tapi ada satu hal yang tidak akan saya berikan jawabannya: pak bisa minta topik skripsi?

Saya sendiri sudah lama tidak di dunia kampus. Berbagai pertanyaan ini sebagian dari orang yang dikenal di Internet, sebagian lagi karena dirujuk oleh para dosen saya dulu di ITB, teman-teman yang sekarang jadi dosen di berbagai universitas, dan juga adik saya yang juga dosen.

Saya tidak akan menjelaskan panjang lebar apa itu skripsi, kenapa harus menulis skripsi, dsb karena semua bisa dicari di Internet dan bisa ditanyakan ke dosen masing-masing. Saya hanya ingin meminta supaya yang bertanya merenungkan sedikit mengenai ini: Anda kuliah beberapa tahun di universitas tujuannya apa? apakah Anda sudah mengerti ilmu yang diajarkan, atau berharap nanti secara ajaib tiba-tiba menguasai ilmu ketika sudah bekerja?

Inilah kesempatan Anda untuk mengeksplorasi satu topik secara mendalam dengan waktu yang cukup lama tidak seperti tugas kuliah yang sebentar saja. Anda dibolehkan memilih topik sendiri, tidak dipaksa seperti pada tugas kuliah.  Bagi sebagian orang, bahkan ini yang menjadi titik awal mereka mendalami bidang tertentu.

Menurut saya dunia Informatika/Komputer itu sangat luas dan fleksibel dan mudah dihubungkan ke dunia apa saja. Suka bercocok tanam? bisa dibuat sistem terkomputerisasi, dari mulai otomatis menyiram tanaman sampai sistem informasi untuk mempermudah penjualan hasil bumi. 

Suka game tertentu? bisa dieksplorasi apakah bisa dimenangkan menggunakan Machine Learning/AI. Jika lebih suka topik yang berhubungan dengan grafik/game mungkin bisa membuat game engine sejenis. Suka main game multiplayer dan sering dicurangi? mungkin bisa membahas masalah security multiplayer online game.

Sesekali jalan-jalan ke perpustakaan (foto lama perpustakaan ITB)

Berbagai skripsi lama yang di perpustakaan kampus juga bisa dilihat dan bisa direnungkan: apakah topik ini jadi menarik atau lebih berguna jika dibuat versi mobilenya? apakah lebih akurat jika menggunakan Machine Learning? (bahkan topik ML ini ada banyak pendekatan untuk satu masalah). Bahkan topik dari jurusan lain juga bisa dilihat, misalnya identifikasi penyakit pada tanaman: apakah bisa menggunakan machine learning? apakah bisa dibuat versi mobile yang akurat supaya bisa langsung dipakai di lapangan?

Topik skripsi juga tidak harus selalu lebih rumit dari yang sudah pernah ada.  Beberapa topik bisa dibuat versi sederhananya misalnya dengan tujuan agar bisa dijadikan alat bantu pengajaran, atau disederhanakan supaya bisa berjalan di sistem dengan spesifikasi lebih rendah (misalnya embedded system).

Untuk skripsi S1, riset yang perlu dilakukan tidak harus original (untuk level S2/S3 perlu lebih original), artinya boleh saja topiknya serupa dengan yang sudah ada dengan pendekatan/implementasi yang sedikit berbeda. Tapi tentunya tetap tidak boleh menyalin/plagiat. Ada banyak algoritma dan juga teknologi (mulai dari, bahasa pemrograman, sistem operasi, dan hardware yang berbeda) yang bisa membedakan dari skripsi lain yang sudah ada.

Saran saya jika sekarang masih jauh dari skripsi: coba carilah topik yang menarik bagi Anda dan banyaklah membaca berita terbaru untuk mencari inspirasi. Silakan bertanya pada dosen di kampus jika memang dosen tersebut bisa membimbing Anda. Ada beberapa dosen yang memiliki proyek dan memang butuh seseorang mengeksplorasi satu topik tertentu dari riset/proyek dosen tersebut. Tapi perlu diperhatikan bahwa saya pernah menemui adanya dosen yang membuat daftar topik skripsi yang ngawur atau terlalu mengada-ada (mungkin karena terlalu banyak mahasiswa bertanya, jadi dia mengarang saja semuanya).

Semoga tulisan ini cukup memberikan inspirasi supaya Anda tidak bingung lagi mencari topik skripsi. Semoga Anda bisa belajar mengambil keputusan sendiri (topik skripsi), dan bertanggung jawab menyelesaikan keputusan yang Anda ambil itu. Ini (biasanya) adalah tugas terakhir Anda di kampus yang menjadi persiapan sebelum Anda pergi ke dunia kerja (atau jenjang pendidikan yang lebih tinggi).

Hong Kong Trip: Disneyland Day 1

Tulisan ini merupakan bagian dari cerita jalan-jalan kami ke Hong Kong sejak 18 September – 23 September 2018.

Penerbangan Air Asia dari Chiang Mai ke Hong Kong hanya ada 1 kali sehari. Kami berangkat hari Selasa, 18 September jam 6 pagi dan tiba sekitar 9.30 waktu setempat (ada perbedaan waktu 1 jam antara Chiang Mai dan Hong Kong). Setelah urusan imigrasi yang antriannya sangat panjang dan ambil bagasi, kami naik taksi ke Disneyland Resort. Kami memesan Hotel Holywood Disneyland untuk 1 malam dan 2 hari Fun Day tiket plus sarapan untuk hari berikutnya secara online. Karena kami melakukan pemesanan hotel secara online dari situs resmi Disneyland Hong Kong dan melakukan checkin online kami mendapat upgrade kamar dari kelas Standard ke kelas Deluxe tanpa biaya tambahan.

Tips dalam memilih hotel dan paket tambahan di Disneyland hotel, ada berbagai promosi yang kalau ga diperhatikan dengan seksama malah jatuhnya jadi lebih mahal. Promosi juga berbeda-beda, ada promosi pembelian sebelum 21 hari, pembelian sebelum 7 hari dan pembelian sebelum 45 hari, pembelian untuk menginap 3 malam, dan lain-lain. Kami memakai promosi pembelian sebelum 21 hari. Paket sarapan atau makan malam juga merupakan pilihan terpisah yang bisa ditambahkan. Kami memilih paket sarapan, dengan pertimbangan hotelnya jauh dari minimarket dan atau restoran luar. Sekalian juga supaya memaksimalkan pengalaman tinggal di Disneyland Resort. Total pengeluaran kami  HKD 4,642.50 (sekitar 8.9 juta rupiah dengan kurs saat ini) untuk hotel semalam plus sarapan berempat, dan tiket Disneyland 2 hari.

Catatan buat kami ingat, hari Senin sore Jonathan makannya seperti tidak selera, kami sudah ingatkan supaya dia makan dan tetap sehat karena hari Jumat sebelumnya dia muntah-muntah tengah malam. Kami sempat kuatir ga bisa jadi berangkat kalau dia sakitnya tambah parah, apalagi dapat kabar soal topan Mangkut hari Sabtu di Hong Kong bikin hati makin kecut dan sempat kepikiran jangan-jangan kami harus batal berangkat nih. Hari Sabtu sampai Senin Jonathan sudah normal lagi dan baca berita Hong Kong mulai normal sejak hari Senin, jadi optimis bisa berangkat.

Pulang dari co-op senin sore saya sudah packing semuanya dan setelah makan malam kami berencana tidur awal karena harus berangkat dari rumah jam 4 pagi. Tengah malam, tau-tau saya dibangunkan Jonathan karena dia mengeluh sakit perut. Kali ini dia ga muntah-muntah tapi….diare! *sigh* setelah beberapa kali terbangun untuk ke toilet karena dia ga bisa tidur juga, akhirnya Jonathan pindah tidur ke ruang tamu sama papanya supaya ga bikin Joshua terbangun juga, sedangkan saya kebagian bebersih dan menemani Joshua. Setelah dioles minyak kayu putih dan diberi norit, Jonathan masih ke toilet beberapa kali lagi dan akhirnya dia bisa tidur beberapa jam sampai jam berangkat.

Karena sudah sempat ketiduran sejam lebih, saya malah ga bisa tidur lagi. Saya berusaha tidur, tutup mata dan rebahan, tapi ya kuatir kebablasan tidur walau udah set alarm, jadilah saya ga bisa tidur. Waktu saya mulai hampir tertidur, jam 2.30 Joshua mulai gelisah tidurnya, Joshua masih ngantuk dan berusaha tidur lagi, tapi mungkin dia juga merasakan kegelisahan saya yang ga bisa tidur lagi. Akhirnya saya ga tidur sama sekali sampai tiba di Hong Kong karena di pesawat Jonathan dan Joshua gantian tidurnya, jadi otomatis saya ga kebagian jatah tidur deh.

Di pesawat, karena sekarang kami berempat, kami ga bisa lagi duduk dalam 1 group yang sama. Waktu Joshua masih kecil dan bisa dipangku biasanya kami duduk bareng tapi sekarang Joshua sudah harus duduk sendiri. Joshua duduk di dekat jendela, saya di tengah supaya bisa bantu Joshua dan Jonathan, Jonathan di pinggir gang (supaya gampang kalau perlu ke toilet) dan Joe di belakangnya Joshua (dekat jendela juga). Waktu check-in online awalnya kami berniat ga beli kursi, tapi ternyata sistem AirAsia tidak mempertimbangkan anak kecil harus bersama-sama dengan orangtuanya. Anehnya malahan saya yang terpisah dari anak-anak. Kami beli kursi yang standard seat saja, tapi itupun ada beberapa kali hampir gagal beli kursi yang kami pilih. Karena kami udah sering mengalami gagal pilih kursi, Joe udah tau cara untuk memaksa sistem menerima pilihan kami.

Pemilihan kursi Joe di belakang Joshua ini cukup bagus, karena Joshua jadi senang main peek-a-boo sama papanya. Waktu saya harus bantu Jonathan ke toilet, Joshua juga bisa tenang main sama Joe. Untungnya karena Jonathan sudah bisa tidur beberapa jam, perutnya sudah tidak terlalu bergejolak dan hanya 2 kali ke toilet sebelum naik pesawat, dan di pesawat dia ke toilet cuma untuk pipis. Tapi dari pengalaman terbang kali ini, semakin yakin punya anak cukup 2 saja, soalnya kalau nambah 1 lagi bakal tambah repot pengaturan kursinya hehe.

Waktu resmi untuk check in hotel sebenernya dimulai jam 3 siang, tapi kami cukup beruntung karena kami bisa early check in. Jam 12 siang waktu Hongkong kami sudah bisa masuk kamar. Walaupun belum jam makan siang kalau ikutin perut Chiang Mai, kami memutuskan untuk snacking dulu sebelum ke Disneyland. Jonathan belum bisa makan banyak, tapi sudah lumayan selera dan ga ada perasaan mual. Joshua minta kokocrunch dan saya dan Joe ngabisin makanan yang udah dipesan di pesawat tapi ga jadi dimakan karena Joshua lebih memilih nasi ketan mangga daripada pasta yang kami pesan.

Setelah istirahat sekitar sejam lebih di kamar, kami memutuskan untuk mengunjungi Disneyland hari pertama. Dari Hotel ke tempat bermain disediakan shuttle. Ada 3 hotel yang bisa dipilih di Disneyland Resort, perbedaannya lebih lengkapnya dijelaskan di websitenya. Hotel yang kami pilih merupakan hotel yang termurah dan terdekat dari jalur Shuttle ke Disneyland. Naik shuttle cuma sebentar, kami liat ada tempat untuk titip koper sebelum masuk ke Disneylandnya. Di gerbang masuk mereka memeriksa tas sebelum cek tiket dan memasukkan finger print untuk orangtua. Disneyland menerapkan aturan larangan piknik di dalam lokasi Disney, tapi beberapa makanan minuman ringan yang kami bawa tetap diijinkan untuk dibawa masuk tanpa masalah. Mungkin yang ga boleh kalau kami bawa keranjang piknik besar ya hehehehe.

Waktu memesan tiket kami tidak tau kalau Disneyland sudah bersiap-siap dengan tema Haloween. Untungnya mereka haloweennya lebih ke pesta kostum dan sekedar hiasan pumpkin. Kami ga pernah ikut-ikutan acara haloween, jadi bisa dibilang anak-anak biasa aja sih dengan haloween ini. Setiba kami di dalam tempat bermain sedang ada parade. Tokoh-tokoh Disney menari-nari dan bernyanyi. Ada yang berlompat-lompatan. Anak-anak cukup terhibur melihatnya dan lagunya karena diulang-ulang, anak-anak jadi cepat bisa mengikutinya. Rasa kepanasan berjalan dari turun shuttle ke dalam terbayar sedikit. Dalam hati saya agak bertanya-tanya, mereka ga kepanasan ya pakai kostum tebal begitu. Trus kadang-kadang terpikir, kira-kira buat yang kerja di Disneyland ini ada rasa bosan ga ya, karena mereka harus tetap tersenyum walau capek keringatan menghibur tamu yang berkunjung.

Sewa stroller

Karena kami ga membawa stroller dari Chiang Mai, kami menyewa stroller di dalam Disneyland, selain supaya ga berat gendong juga supaya Joshua bisa tidur siang. Tapi ternyata strollernya agak kekecilan buat Joshua walau katanya bisa untuk anak sampai 25 kg (Joshua sekarang sekitar 21-22 kg). Awalnya Joshua gak mau duduk di stroller, tapi akhirnya dia mau juga, dan sesuai harapan dia bisa tidur di stroller. 

Disneyland HongKong menyediakan aplikasi yang bisa diinstal di HP android untuk mengetahui waktu tunggu setiap wahana permainan dan status apakah wahananya buka/tutup. Aplikasinya membutuhkan koneksi internet tentunya. Di banyak tempat di Hong Kong tersedia hotspot gratis termasuk di dalam Disneyland. Beberapa titik hotspotnya menghilang dan butuh untuk klik persetujuan lagi untuk terkoneksi ke WIFI nya. Koneksi wi-fi yang sering menghilang ini kadang agak menjengkelkan, terutama jadi ga bisa hatching telur Pokemon walau jalan sampai 14 ribu langkah.

Selesai melihat parade, kami mulai hunting ke wahana permainan. Jalanan yang pertama ditemui (Main Street, tempat parade) banyak toko-toko jualan. Saya sempat kepikir wah ini Disneyland atau pasar sih, isinya jualan semua dan mahal pula. Akhirnya kami memutuskan ke Adventure Land terlebih dahulu (ada beberapa theme di dalam Disneyland). Jalannya lumayan jauh rasanya, apalagi karena belum tau arah tujuan. Jonathan udah mengeluh karena matahari sangat terik juga. Jonathan bilang mau balik aja deh ke hotel. Karena Joshua ketiduran di stroller, saya suruh Joe dan Jonathan saja yang mencoba wahana pertama. Mereka mencoba permainan sejenis roller coaster (Big Grizzly Mountain Runaway Mine Cars) . Awalnya saya pikir Jonathan akan ketakutan, ternyata dia malah semangat cerita ke saya dan menyuruh saya mencoba juga. Jadilah gantian menjagain Joshua tidur giliran saya mencoba roller coasternya sendiri.

Setelah merasakan roller coaster, Jonathan berubah pikiran soal Disneyland, dia mulai bilang Disney is fun. Walau begitu, dia tetep komplain kalau jalannya jauh dan panas haha. Setelah naik wahana roller coaster grizzly bear, berikutnya kami naik carousel. Kali ini Joshua sudah bangun, jadi kami ber-4 naik ke carousel. 

Karena hari sangat panas, kami mencari permainan yang teduh. Selesai naik carousel kami mencoba masuk ke studio theater 4D. Awalnya anak-anak cukup bisa menikmati, Joshua malah berusaha memegang tokoh yang seolah-olah keluar dari layar. Tapi di akhir cerita ada bagian yang terlalu realistis seperti ada barang dilempar-lempar ke arah penonton dan Joshua sukses nangis hahaha. Udah bagus sih sebenernya, mengingat ada anak lain yang baru 2 menit film di mulai udah nangis dan sampai harus dibawa keluar oleh orangtuanya.

Selesai nonton theater 4D kami berputar sebentar di Fairy Tale Forest. Setelah itu kami lihat ada parade haloween di Main Street, kami nonton parade sekitar 30 menit dan tau-tau udah jam 5 sore aja. Karena merasa belum makan siang yang bener, kami memutuskan untuk makan siang dan malam di rangkap.

Starliner Diner

Di dalam Disneyland ada beberapa restoran, kami memilih makan di restoran dengan tema luar angkasa di Tomorrow Land. Selesai makan, udah sore aja dan karena udah capek kami memutuskan untuk pulang. Sebelum pulang, kami kembalikan stroller dan ambil uang lagi di ATM. Waktu tiba di Bandara, kami ga lihat ada atm, dan cuma liat money changer. Di money changer nilai tukar baht lebih jelek dibandingkan tarik tunai uang rupiah di ATM.

Kami membawa beberapa kotak susu buat Joshua, tadinya kata Joe bisa beli aja kalau kurang, eh ternyata di Disneyland kami ga menemukan sama sekali yang jual susu. Minuman botol juga cukup mahal, rata-rata 28 – 40 HKD (harga sama di semua tempat, termasuk juga di vending machine). Dari paketnya kami  dapet 4 kupon popcorn (yang cuma kami tukarkan 2 soalnya udara panas kurang enak makan popcorn, tambah haus).

Sampai hotel, ga nemu minimart yang jual susu atau minuman, adanya toko jualan cenderamata yang bergambar tokoh Disney. Tadinya mau beli untuk persediaan saja karena yang di bawa sudah mulai habis, tapi ya jadinya ga beli deh. Agak heran sebenarnya kenapa ga ada yang jual susu di Disneyland, tapi ga tahu juga mau nanya ke siapa hehehe.

Sampai hotel, kami mandi dan ganti baju tidur. Jonathan dan Joshua ga pake disuruh lama langsung tidur deh setelah main-main di bath tub. Di Disneyland hotel kita bisa pesan pembatas tempat tidur, jadi saya ga kuatir Joshua jatuh dari tempat tidur (di Chiang Mai kami gelar kasur di lantai sejak Joshua bayi.)

Berhubung ceritanya sudah panjang, sepertinya cerita Disneyland hari ke-2 harus dipost terpisah. Kesimpulan hari pertama: kalau ke Disneyland Hong Kong, siapkan perlengkapan topi, kacamata hitam dan sepatu/sendal yang nyaman untuk digunakan berjalan, karena kebanyakan tempat terbuka dan akan banyak berjalan. Kalau mau bawa payung juga bisa, tapi lebih repot dibandingkan topi dan kacamata hitam. Kalau anak masih minum susu, sebaiknya bawa daripada repot nyarinya. Oh ya, pakai lotion yang mengandung spf juga supaya kulit tidak gosong. Banyak minum/bawa botol minuman, di Hongkong Disneyland ada banyak tempat untuk minum air yang lokasinya biasanya berada dekat kamar mandi. Tapi entah kenapa di hari pertama, kami hanya ketemu 1 tempat untuk mengisi botol minum.

Text-to-Speech untuk mainan

Joshua sangat menyukai huruf dan angka. Di usianya sekarang (3 tahun) dia sangat suka alfabet. Dia bisa menyebut nama alfabet dalam bahasa Inggris dan Indonesia, bisa mengingat urutan alfabet  dari depan ke belakang dan sebaliknya, bisa menuliskan semua huruf besar dan kecil. Selain itu Joshua juga suka alfabet Thai, dalam sekitar 2 minggu dia sudah mengingat nama semua 44 konsonan dan cara menuliskannya.

Mainan ini bisa mengucapkan kata-kata tertentu, misalnya APPLE, BALL, dsb

Setelah suka alfabet, Joshua suka belajar membaca dan juga menulis, termasuk juga mengetik di komputer. Dia sangat senang dibelikan mainan tablet alfabet di atas. Mainan di atas disertai beberapa buku, di buku itu ada kata-kata yang bisa “diketikkan”, dan setelah selesai  kata itu akan diucapkan oleh tablet tersebut.

Sayangnya jumlah kata-kata yang tidak banyak dan Joshua sudah bosan dengan semuanya. Kadang dia berusaha mengeja kata tertentu tapi tidak keluar suaranya. Tadinya kepikiran untuk membongkar benda itu dan memodifikasi supaya support lebih banyak kata, tapi sepertinya repot dan akan butuh waktu lama.

Setiap kali dekat saya, Joshua akan minta ikutan ngetik di keyboard saya, dan kadang kalau saya sedang bekerja, saya biarkan dia memakai Pinebook , Raspberry Pi atau Laptop yang kebetulan ada di samping saya sekedar untuk mengetik di editor teks atau LibreOffice. Tiap kali mengetik sesuatu dia akan meminta perhatian saya sambil mengucapkan apa yang baru diketiknya: “papa, APPLE”

Supaya lebih seru, saya buatkan web app kecil  dengan JS dan PHP untuk mengucapkan kata yang baru dia ketik. Pengucapannya memakai fitur dari Google Translate. Tampilannya sangat sederhana: masukkan teks dan tekan enter, suaranya akan keluar. Joshua sudah mengerti memakai backspace untuk menghapus karakter yang sudah diketik.

Sebenarnya aplikasi ini tidak butuh server, bisa langsung tembak ke URL Google translate, tapi saya agak khawatir bisa kena rate limit atau ban temporer, atau bahkan protokolnya berubah sama sekali. Jadi saya buatkan sisi server untuk mengontak Google untuk mengucapkan kata-kata, dan menyimpan ke disk dan berikutnya jika kata yang sama diminta lagi maka akan diambil dari disk. Andaikan Google mengubah URL/protokolnya, nanti bisa diganti dengan Text-to-speech offline atau dari layanan lain.

Tampilan program

Kode program baik untuk sisi server maupun client hanya beberapa baris, tapi cukup menghibur Joshua selama beberapa bulan terakhir ini. 

Dan ini kode servernya

Kode singkat tersebut tentunya bisa ditambahi banyak fitur, tapi saat ini masih takut terlalu membingungkan untuk Joshua. Misalnya saya terpikir untuk menambahkan fitur warna pada teks karena dia suka menuliskan nama tokoh Paw Patrol dengan warna yang sama dengan warna pakaian mereka (Marshall merah, Chase biru, dst).

Untuk yang belum tahu: Google sebenarnya punya API text to speech yang resmi, tapi lebih rumit. Untuk sekedar mainan, cara “menembak” URL Google translate sudah cukup, tapi jika ingin dipakai untuk proyek serius, sebaiknya pakailah API-nya yang berbayar.