Experiencing my First Hackathon

Hackathon adalah gabungan dari kata hacking yang maksudnya untuk menyelesaikan suatu masalah secara out of the box dan marathon yang artinya kegiatan tersebut (hacking) diselesaikan dalam waktu sesingkat-singkatnya (biasanya 1-3 hari). Hackathon sendiri mulai populer di Indonesia di tahun 2014-an, at least once in a lifetime kudu coba.

Mengapa? Karena di Hackathon selain bisa meningkatkan bonding antar tim, kita juga bisa tau kemampuan masing-masing anggota tim, termasuk diri kita sendiri. Mengetahui kemampuan diri sendiri ini penting untuk meningkatkan self-confidence, bahwa kita punya lho kemampuan A, B, C, D. Selain itu, kemampuan kita untuk bertahan juga diuji, apakah kita bisa ‘bertahan’ untuk bikin prototype program yang bisa jadi problem solving in a limited time and tight deadline.

Tim Hackaton biasanya terdiri dari 3-4 orang, dengan komposisi ideal mirip formula dasar startup: ada hustler, hipster dan hacker. Hustler adalah orang yang jago presenting produk, Hipster adalah designer product dan bisa ngurusin UX/UI nya lah dan Hacker adalah orang yang ngurusin coding back-end nya. Sehingga ngga mungkin hackathon ini dilakukan oleh single fighter.

Hackathon yang saya ikutin diadakan oleh internal kantor saya di kata.ai, dimana rules nya adalah kami diwajibkan bikin bot yang bisa increase our internal productivity. Nah, bikin bot nya apakah from scratch? Nggak lah, kantor kami punya platform dan backend yang udah robust untuk bikin bot berbahasa Indonesia, namanya kataML. Sehingga untuk bikin bot udah ngga susah susah lagi, we cut your valuable time to make bot with our platform.

Nah, kemaren sih, kami bikin bot untuk handle Branding dan Customer Service di kantor kami. Emang project ini sejak dulunya pengen di bikin, tapi belum ada karena karena ga ada yang handle. Jadi ya kenapa nggak kami propose bikin bot itu di hackathon ini. Pengerjaan bot ini dibagi dalam 3 sprints dimana each sprint spend about 2 hours. Tapi, realitanya kita begadang semalam dan lanjut besok paginya untuk nyelesein bot ini. Kayak balik ke jaman kuliah, dimana ngerjain tugas bareng-bareng di 2-3 hari terakhir.

Lucunya nih, mostly virtual bots that we made in hackathon are presented as girls, nggak hanya itu, banyak virtual bot yang udah going into production juga rata-rata pake nama cewek, seperti: Jemma, Rinna, Vira, Soraya, etc. Ada sih, satu bot cowok namanya Bang Joni. Tapi ya wajar sih, the real Customer Service emang biasanya kebanyak cewek kaan hehe.

Jadi, ketagihan ikutan hackathon? Iya dan nggak. Iya ketagihan kalo udah dapet idea dan tim yang solid. Nggak ketagihan ketika harus begadang semaleman… itu ngga enak banget wkwk. Tapi sebenernya, ada solusi biar ga begadang semaleman, dengan nyicil project untuk hackathon dari jauh-jauh dari dan pas hari-H cuma menyempurnakan dan testing project aja.

Buat yang pengen bikin startup event hackathon ini nggak boleh dilewatkan, karena di event ini biasanya diadakan oleh startup besar seperti hackathon yang diadain Go-Jek di Maret 2017; selain itu ngga menutup kemungkinan ada investor yang hadir untuk liat ide-ide kreatif dari anak muda yang potensial untuk diberi suntikan dana. Produk dari hackathon ini pasti nggak sempurna dan pasti ada bug, karena ada keterbatasan waktu dan tenaga. Tapi yang valuable adalah ide kreatif dari anak muda yang bisa solve the problem.

Daripada nih, ngabisin waktu di mall dan ngobrol ga jelas, mending abisin waktu untuk coding, cari partner, bonding ama mereka dan eksekusi ide kamu yang siapa tau bisa diikutin hackathon :).

Kenalan dengan MapReduce, Hadoop dan AWS

Berhubung udah dari dulu saya penasaran tentang term MapReduce dan Hadoop dll. Saya memutuskan untuk baca buku dan bikin ulasan singkat di blog sebagai contekan saya sendiri jikalau besok2 ada interview pekerjaan yang nanyain tentang definisi term tersebut diatas. Hohohoho.

MapReduce adalah konsep pemrosesan data secara paralel. Adanya MapReduce berangkat dari asumsi bahwa data yang akan diolah saaaaaaangat banyak dan data ini memerlukan banyak waktu jika diproses hanya pada satu komputer. Dibutuhkan multiple komputer untuk mempersingkat waktu pemprosesan.

Salah satu contoh task yang bisa dikerjakan dengan konsep MapReduce adalah seperti statistik dari penjualan harian (misal: koran, etc.) dan user yang update status di Facebook di suatu negara dalam kurun waktu tertentu. Sesuai namanya, konsep dari MapReduce adalah Map and Reduce the tasks. Contohnya begini, semisal kita ingin tahu jumlah rata-rata user yang meng-update status di Facebook di wilayah Indonesia dalam kurun waktu 10 tahun.
1) Map : task tersebut di-break down menjadi misal 10 sub-task, dengan desktripsi masing masing sub-task untuk menghitung jumlah rata-rata user per tahun. Jadi, secara paralel, ada 10 sub-task yang berjalan bersama.
2) Reduce : setelah 10 sub-task selesai, hasil dari masing-masing sub-task di-aggregasi menjadi satu nilai sebagai summary dari 10-sub task tersebut. Proses ini dinamakan reduce.

Untuk mengimplementasikan konsep MapReduce, kita butuh framework yang mendukung distributed programming. Hadoop adalah framework yang dituliskan dalam bahasa Java yang sifatnya open source untuk memproses data dalam jumlah banyak dan mendistribusikannya pada multiple machines. Hadoop memiliki aplikasi yang memperbolehkan kita untuk running non-Java program yang dinamakan Hadoop Streaming. Melalui aplikasi ini, kita bisa running program yang mengimplemetasikan MapReduce yang ditulis dengan Python.

Biasanya yang pake MapReduce dan Hadoop ini kan para Developer. Developer juga butuh tempat untuk testing programnya apakah bisa berjalan dengan baik. Untuk menjalankan MapReduce secara real, pasti dibutuhkan infrastruktur komputer yang besar. Para developer yang tidak punya dukungan infrastruktur yang mendukung, bisa menggunakan jasa rental infrastruktur komputer secara banyak (massive infrastructur computing) yang disediakan oleh Amazon namanya Amazon Web Services (AWS). Di AWS, developer bisa membayar sewa berdasarkan berapa jam penggunaan.

Apa hubungannya dengan Machine Learning? Banyak algoritma machine learning yang bisa diimplementasikan dengan konsep MapReduce. Secara umum learning kan ada 2 jenis ya, supervised learning (classification) dan unsupervised larning (custering). Semisal, bagian manajerial ingin melihat trend sentiment user saat update status dalam 10 tahun terakhir ini. Nah, disini perlu dilakukan classification task pada data update status dari user. Algoritma yang digunakan bisa beragam mulai dari Naive Bayes hingga SVM. Namun, tidak semua algoritma tersebut bisa ditulis dengan mudah sebagai MapReduce task, dibutuhkan beberapa adjustment pada code-nya untuk bisa diaplikasikan dengan sebagai MapReduce task.

Sekian ulasan blog hari ini. Semoga besok bisa nulis lagi. Rencananya sih mo bikin ulasan tentang hal-hal techy gini tiap hari. Jangan muntah-muntah yaa para subscriber yang baca ringkasan saya.