Uncategorized

Compute Query Languange – Perkenalan

Tulisan ini adalah seri pertama dari beberapa tulisan sebagai dokumentasi pengembangan Compute Query Language yang dikembangkan oleh NoLimit Indonesia.

———–

Compute Query Language (CQL) adalah bahasa mirip-SQL yang dibangun di atas NoLimit Platform sebagai salah interface utama untuk mengkonsumsi data dari NoLimit Platform*. CQL mendefinisikan sumber data yang akan digunakan, cara pencacahan, serta hasil perhitungan yang ingin dihasilkan berdasarkan sumber data.

Kenapa membangun bahasa mirip SQL sendiri? Kenapa tidak gunakan Pig atau Hive yang sudah terbukti mampu memberikan dukungan SQL di atas Hadoop?

Ada beberapa alasan, di antaranya :

  • Keleluasaan dalam pengembangan. Dengan mendefinisikan sendiri bahasa yang digunakan, kami tidak terikat ke salah satu atau beberapa implementasi mirip-SQL yang sudah ada. Keleluasaan ini kami sadari akan menjadi benefit utama dalam pengembangan CQL, karena media sosial terus berkembang — dengan cepat — sehingga kami membutuhkan interface yang juga adaptif terhadap perubahan.
  • Fleksibel dalam pengoperasian. Salah satu alasan lahirnya CQL adalah milestone dalam evolusi NoLimit Platform sebagai pengolah data mentah dari media sosial menjadi informasi. Kami menyadari bahwa akan banyak kemungkinan pemanfaatan data yang akan dikelola oleh NoLimit Platform. Oleh karena itu, kami berusaha agar nantinya user tidak mengalami keterbatasan dalam mengolah data yang NoLimit Platform miliki. CQL dibuat agar mimpi ini tercapai.
  • Fast Data. Kami menyadari, Big Data tanpa kemampuan memberikan informasi yang relevan dengan cepat tidak akan memberikan nilai tambah yang maksimal bagi user. CQL akan dibangun sebagai implementasi dari salah satu V dari Big Data, yaitu Velocity (kecepatan).

Dalam pengembangannya, CQL nanti akan banyak dipengaruhi oleh SQL serta teknologi-teknologi pendahulu di bidang streaming processing seperti Aurora, Borealis, Storm, maupun Stratosphere. Masing-masing sudah memberikan sumbangsih kepada kemajuan teknologi di bidang Big Data dengan caranya masing-masing. Harapannya, CQL juga dapat memberikan manfaat bagi perkembangan teknologi di bidang Big Data secara khusus dan para pengguna media sosial secara umum.

Terlepas dari mimpi yang ingin diwujudkan oleh CQL, tentunya akan banyak tantangan dan hambatan yang akan kami lalui untuk mewujudkan mimpi kami. Kami sangat terbuka jika ada saran atau masukan (dan kritik tentu saja) terkait dalam pengembangan CQL. Atau, jika tertarik untuk ikut terlibat lebih dalam pengembangan CQL, bisa coba-coba kontak ke @harippe atau jobs@nolimitid.com :p.

Terima kasih atas perhatiannya, untuk tulisan mendatang akan dibahas terkait struktur dari CQL.

Advertisements
backbonejs, kodingan, Uncategorized

Backbone Publisher Subscriber Pattern

Salah satu fitur menyenangkan yang saya suka dari Backbone.js v1.0 adalah bisa digunakannya namespace Backbone itu sendiri sebagai sebuah hub terpusat untuk event-event dari module-module yang membangun aplikasi di atas Backbone tersebut. Kemampuan menjadi hub event-event inilah yang menurut saya mampu menjadi dasar dalam mengembangkan aplikasi javascript yang kompleks namun tetap modular. Salah satu pattern yang saya senangi dalam membangun aplikasi javascript ini adalah membangun beberapa module kecil yang memiliki kemampuan untuk berkomunikasi dengan module lainnya via channel yang diimplementasi menggunakan Backbone.Events. Penggunaan channel ini ditujukan untuk menghindari pemanggilan langsung module di luar dirinya. Ini dapat mengurangi drastis error ketika module yang dipanggil tidak / belum terinisialisasi. Ide penggunaan channel / event sebagai jalur komunikasi ini juga diadopsi oleh Aura.js.

Kali berikutnya akan saya coba tuangkan salah satu implementasi PubSub pattern ini dalam membangun sebuah aplikasi javascript di atas Backbone.

 

Cheers,

Uncategorized

Fisika Kuantum

Akhir-akhir ini lagi suka baca-baca topik tentang fisika kuantum. Pada dasarnya fisika kuantum adalah cabang fisika yang membahas fenomena fisika di ranah mikroskopis / sub-atomik. Asal kata kuantum adalah kuanta (quanta), yang berarti diskrit. Ini berawal dari fenomena bahwa beberapa karakteristik fisika dari atom hanya bisa berubah dalam jumlah yang konstan (diskrit) bukan kontinyu. Kemudian, fakta menarik bahwa cahaya dapat bersifat sebagai partikel dan gelombang sekaligus, atau dikenal sebagai wave-particle duality. Dan akhirnya, muncul sebuah teori yang mencoba menjelaskan bagaimana alam semesta ini dibangun oleh sebuah materi yang disebut “string”.

Menarik sekali. Pada dasarnya saya memang menyukai membaca mengenai fenomena alam dan penjelasannya (tapi kalau sudah berurusan dengan rumus jadi rada keok, haha). Saya ingat waktu kecil setiap sarapan pagi sebelum berangkat sekolah, saya suka mengambil buku ensiklopedia di rak dan jadi teman sarapan saya (dibaca, bukan jadi tatakan makan :p). Walaupun banyak yang akhirnya tidak saya mengerti, keingintahuan saya tentang bagaimana lingkungan sekitar saya berkerja, dan mungkin alam semesta, terpupuk. Dulu sebelum saya ingat pernah ingin mengambil kedokteran untuk kuliah karena saya senang membaca tentang fisiologis manusia. Dan sekarang, ketika ilmuwan sudah mendalami cabang dari fisika yang mencoba menjelaskan bagaimana alam semesta ini dibangun (alam semesta ini secara teori terdiri dari 11 dimensi lho).

Akhirnya, muncul ide gila : kalau memang saya diberikan kesempatan, saya ingin melanjutkan S3 di bidang fisika kuantum. Pasti akan seru sekali 😀 dan bisa dihubungkan dengan bidang utama saya sekarang, informatika, di mana cabang dari fisika kuantum sudah merambah ke pembangunan quantum computer.

Sebagai penutup, ini adalah parodi Bohemian Rhapsody menggunakan acapella oleh seorang mahasiswa S2 yang sedang tesis di bidang fisika kuantum. Enjoy 🙂

Edit : ternyata fisika kuantum hanya pengantar sampai ke M-theory. Jadi yang M-theory lebih menjelaskan secara teoritis fenomena-fenomena yang belum bisa dijelaskan oleh fisika kuantum. Thanks to Bayu yang sudah mengingatkan

Uncategorized

Bonework

Mumpung lagi semangat nulis, sekarang coba nulis dulu dikit :p

Akhir-akhir ini merhatiin banyak banget framework javascript yang didesain untuk support web skala besar namun enteng dari segi implementasi. Seinget saya dimulai dari jQuery, ExtJS, sencha, kemudian underscore, Backbone, ember, knockout, angular, dan banyak lainnya (yang saya sebutin barusan juga belum tentu urut secara kronologis terhadap kapan pertama kali rilis). 

Salah satu framework yang sudah lama saya dalami adalah Backbone. Dari salah bikin model dan view sampe baca dan ngedit source nya Backbone udah pernah saya alamin. Menurut pengalaman pribadi Backbone fiturnya sedikit, tapi cocok untuk orang yang suka bikin sesuatu dari dasar.

Belakangan ini setelah punya waktu agak senggang, saya coba bongkar-bongkar implementasi Backbone di NoLimit. Saya berniat bikin framework sendiri yang dibangun di atas Backbone berdasarkan implementasi Backbone di NoLimit. Kapan ya framework ini bisa selesai? :p

Uncategorized

Di Antara Dua Sisi

Sepeninggalan Ibu membawa banyak pikiran, kenangan, serta renungan.

Ibu berpulang hari Kamis 22 Agustus 2013 kira-kira pukul 2 lebih 28 menit. Kami bertiga, Bapak, Dek Dhimas, dan saya ditelpon oleh ICU RSCM untuk segera menuju ruang ICU. Waktu itu, saya baru tidur kira-kira 1 jam. Saya tidak punya firasat apa-apa waktu itu, walaupun Bapak berpesan dalam perjalanan ke ICU (waktu itu kami bertiga menunggu di salah satu ruang RSCM yang sebelumnya digunakan sebagai ruang rawat Ibu sebelum di ICU), “Kalau ada apa-apa ikhlas ya dek”.

Menit-menit ketika kami bertiga memasuki ruang ICU merupakan saat terkelam pada hidup saya. Saya ingat, yang pertama kali saya lihat adalah indikator alat bantu yang dipasangkan ke Ibu. Dari tiga indikator yang ada,  dua di antaranya sudah menunjukan angka 0, hanya indikator pernapasan saja yang masih bertahan di angka 16. Kemudian, dokter memberikan penjelasan singkat, bahwa tim dokter sudah berusaha semaksimal mungkin, namun kondisi Ibu terus drop. Kami bertiga terdiam sejenak mendengar penjelasan dokter. Kemudian Bapak bertanya ke dokter,”Tapi Ibu masih bernapas”, melihat bahwa dada Ibu masih naik turun. Dokter menjawab, Ibu masih bernapas karena ada alat bantu pernapasan. Jika alat bantu dihentikan, maka napas Ibu juga berhenti. Akhirnya kami bertiga sepakat dalam diam, untuk menghentikan alat bantu terakhir yang menopang Ibu. Sampai ketika bunyi panjang alat bantu terdengar, otak saya tidak bisa mencerna apa-apa. Kemudian, Bapak mendekat ke Ibu dan mengusap kepala Ibu. Untuk pertama kalinya, saya menyaksikan Bapak menangis. Di saat itu pula, saya menyadari Ibu sudah berpulang.

—————————————————————————–

Banyak hal yang saya pikirkan, saya alami, dan saya rasakan sepanjang perjalanan dari RSCM ke rumah, selama persiapan pemakaman Ibu, dan sampai malam ini tulisan ini ditulis. Dari betapa menyesalnya saya belum sempat minta maaf ke Ibu, kado ulangtahun dari saya dan Nida buat Ibu yang akhirnya belum sempat dibuka Ibu, dari banyaknya dukungan moral dari teman-teman NoLimit, kampus, angkatan IF07, sanak saudara,  teman-teman Ibu, dan Nida, kenangan-kenangan bersama Ibu yang akhirnya tidak akan bisa saya rasakan kembali, wejangan-wejangan dari Ibu, rencana sekaligus keinginan terakhir Ibu sebelum Ibu berpulang, kemudian sampai bagaimana saya akan menjalani hari-hari ke depan sepeninggal Ibu, dan banyak lainnya. 

Satu hal yang saya pelajari dalam menjalani musibah ini adalah bagaimana cara saya mengenang Ibu. Yang pertama kali saya ingat adalah bagaimana tegarnya Ibu sepeninggal Mbah Bapak dan Mbah Ibu (Mbah Bapak dan Mbah Ibu adalah panggilan saya dan cucu-cucu di keluarga besar kepada orangtua Ibu). Saya bisa memilih, apakah terus-menerus meresapi kehilangan ini dengan meratapi bagaimana saya tidak bisa lagi mencium tangan Ibu sebelum saya berangkat ke Bandung, tidak bisa lagi untuk diingatkan untuk shalat, atau menyimpan kenangan-kenangan tersebut, dan lebih meresapi wejangan-wejangan serta nilai-nilai yang Ibu ajarkan selama ini kepada saya sebagai bekal ke depan.

Saya kadang membayangkan, dengan berpulangnya Ibu, seakan memberikan tongkat estafet kepada saya untuk melanjutkan kehidupan ini dengan bekal yang telah Ibu berikan selama ini, serta melanjutkan apa yang telah Ibu rintis. Menjadi tantangan tersendiri bagi saya sebagai cucu tertua di keluarga besar Ibu untuk terus menyambung silaturahmi dengan kerabat, baik yang dekat maupun yang jauh, baik ke keluarga besar Ibu maupun keluarga besar Bapak, kepada teman-teman Ibu, baik itu teman-teman semasa sekolah, kuliah, kantor, serta di tempat-tempat lain di mana Ibu yang seringkali tidak saya sadari, sudah menjadi bagian tersendiri di sana. Menjadi tantangan pula bagi saya untuk terus melanjutkan kebiasaan Ibu untuk terus menyantuni anak yatim, di mana saya yang sekarang ini masih belum punya apa-apa. 

Kalau saja Ibu berumur panjang, saya ingin ngobrol panjang dengan Ibu, tentang apapun. Ah, tapi pengandaian seperti ini yang seringkali melunturkan keikhlasan dan kesedihan menjadi berlarut-larut.

Kalau dibilang untuk mengucapkan selamat jalan Ibu, saya masih merasa Ibu hanya pergi sebentar. Saya berharap di akhirat nanti, saya bisa bertemu dengan Ibu lagi di tempat terindah yang bisa diterima manusia dari Allah SWT. Saya sadar saya masih jauh dari anak yang berbakti, tapi saya terus berharap bisa mewujudkan doa ini.

Akhir kata, terima kasih Ibu atas segala ajaran dan wejangan yang telah Ibu berikan. Semoga Ibu mendapat tempat terbaik di sisi Allah SWT, amalan-amalan Ibu diterima Allah SWT dan dosa-dosa Ibu digugurkan oleh Allah SWT.

Uncategorized

Letting Go

Beberapa waktu lalu di sela-sela kesibukan ngoding, teman-teman sekantor mengajak nonton film Life of P (filmnya lumayan bagus, cocok untuk menenangkan hati – dan efek grafisnya juga bagus). Di situ sang tokoh utama berkata :

I suppose in the end, the whole of life becomes an act of letting go, but what always hurts the most is not taking a moment to say goodbye.

Memang betul. Ketika ada awal pasti ada akhir. Penulis akhir-akhir ini menyadari, setiap ada awal pasti akan ada akhir – perpisahan. Ketika perpisahan sudah menjadi keniscayaan, pertanyaan selanjutnya adalah perpisahan seperti apa yang akan kita rasakan?

Uncategorized

Ketika Btrfs Crash – oh god why

B-tree filesystem, atau dikenal sebagai btrfs, merupakan tipe filesystem terbaru di Linux yang menggunakan sistem binary tree. Lebih lengkap dan detail mengenai btrfs bisa dilihat di https://btrfs.wiki.kernel.org/index.php/Main_Page. Secara ringkas btrfs ini menawarkan fitur yang lebih canggih dalam hal penanganan error, administrasi, dan performa operasi standar.

Namun isi dari postingan ini bukan ingin membahas mengenai btrfs, tapi pengalaman terkait btrfs itu sendiri. Tepatnya ketika btrfs crash.

Jadi, sudah seharusnya filesystem yang stabil selain mampu berfungsi dengan baik, juga memiliki kemampuan untuk memperbaiki dirinya ketika terjadi kerusakan (error, corrupt, dll). Kalau untuk filesystem ext3, atau ext4, biasanya tersedia fsck sebagai alat untuk mendeteksi sekaligus memperbaiki kerusakan.

Tapi btrfs belum memiliki alat yang semumpuni ext3 atau ext4 untuk fsck. Memang sudah tersedia btrfsck, namun btrfsck hanya mampu mendeteksi kerusakan saja tanpa mampu memperbaikinya.

Oke, jadi pilihannya ketika btrfs rusak : menyerah atau berjuang. Yah mengingat kejadian btrfs rusak ini bakal mempengaruhi kemaslahatan orang banyak, pilihan yang ada mau g mau berjuang 😀

Beruntung, di pelosok internet di sana ada seseorang yang membangun sebuah alat deteksi error sekaligus recovery btrfs yang rusak (bagi pengguna Debian. Jika tersedia untuk non-Debian bisa mencantumkan sumbernya sebagai komentar :D, itung-itung membantu pengguna non-Debian). Perlu diingat bahwa alat ini tidak termasuk ke dalam package resmi btrfs, jadi bisa dianggap penggunaannya keberhasilannya 50:50.

Alat ini tersedia di dalam package btrfs-tools, yang membungkus dua aplikasi, btrfs-restore dan find-root.

Package btrfs-tools tersedia di dalam ppa:yofel/btrfs. Sesuai namanya, package ini dikelolal secara personal.

Cara mendapatkannya :

  1. sudo apt-get install python-software-properties. Ini untuk menginstall aplikasi add-apt-repository.
  2. setelah #1 selesai, lanjutkan dengan sudo add-apt-repository ppa:yofel/btrfs.
  3. sudo apt-get update
  4. sudo apt-get install btrfs-tools

Langkah 1 dan 2 bisa diganti dengan metode penambahan source package lain.

Setelah diinstal, mulai dulu dengan btrfs-restore. Langkah-langkah di bawah sudah tercantum lebih rinci di dalam https://btrfs.wiki.kernel.org/index.php/Restore.

  1. Misal hard disk yang berisi btrfs berada di /dev/sdb3 dan ingin kita mount ke /home/test/data. Panggil btrfs-restore seperti berikut : btrfs-restore /dev/sdb3 /home/test/data/.
  2. Jika proses pemanggilan berhasil, btrfs-restore akan mendapatkan root objectid dari filesystem kita dan mulai meng-scan filesystem ke bawah.
  3. Dalam prosesnya, akan muncul beberapa pesan, seperti :
  • btrfs-restore sudah looping terlalu lama di /some/path/blabla. Apakah ingin dilanjutkan? Jika pertanyaan ini keluar, kemungkinan karena sebuah directory memiliki terlalu banyak node. Di kasus yang penulis alami, beberapa directory dilewat untuk menghemat waktu, yang lainnya dibiarkan untuk looping terus karena datanya krusial.
  • btrfs-restore gagal memperbaiki directory karena sudah terlalu lama looping. Ini bagaikan vonis mati :p relakan saja dan fokus di data-data yang berhasil diselamatkan.

Ketika proses perbaikan selesai, seharusnya muncul folder @ dan @home (atau sejenisnya) di dalam /home/test/data/. Pada umumnya folder @ berisi seluruh data di filesystem. Kalau sudah muncul, ambil minum dan nikmatilah udara segar, karena data-data Anda tidak 100% hilang 🙂

Bagaimana jika btrfs-restore gagal? Untuk ini penulis belum berpengalaman, namun petunjuk berada di 2 link di atas sebagai titik start.

Beberapa link yang bisa menjadi petunjuk juga :

  1. http://permalink.gmane.org/gmane.comp.file-systems.btrfs/16408
  2. http://unix.stackexchange.com/questions/32440/how-do-i-fix-btrfs
  3. http://askubuntu.com/questions/157917/how-do-i-recover-a-btrfs-partition-that-will-not-mount
  4. http://ubuntuforums.org/showthread.php?t=1931910
  5. http://askubuntu.com/questions/158793/how-do-i-install-the-btrfs-restore-utility-on-12-04

Moral cerita : selalu punya strategi darurat ketika ‘things get worse’. Dalam kasus ini, selau punya mekanisme darurat untuk setiap tipe filesystem yang dipilih.

Semoga membantu, jika ada yang salah dengan senang hati menerima masukan 🙂