mongo

Di tempat kerja saya sekarang, database yang dipakai adalah MongoDB. Mongodb ini termasuk ke kategori database yang bekennya disebut NoSQL. Karakteristik database ini yang membedakannya dengan database versi relasional, seperti MySQL atau PostgreSQL, salah satunya adalah schemaless. Table (atau Collection) tidak punya skema yang tetap, sehingga tiap baris (atau document) bisa saja memiliki format kolom (atau atribut) yang berbeda.

Kelebihannya yang saya tahu, kalau tidak salah, database tipe seperti ini itu lebih mudah untuk dilakukan replikasi, sehingga lebih memudahkan untuk scaling, apalagi kalau load-nya sudah tinggi, misalkan diakses ratusan ribu kali per detik.

Setelah menggunakan beberapa saat, saya merasa lebih suka sintaks-nya dibandingkan harus menulis sintaks SQL karena lebih mirip menulis kode program seperti biasa. Kekurangannya sih paling kalau query-nya sudah kompleks maka simbol kurung kurawal (curly braces) terlalu banyak sehingga mungkin agak kurang mudah dibaca / readable.

Tapi saya juga menemukan hal-hal yang kurang mengenakkan lainnya.

Pertama, format output dari object-nya adalah BSON (Binary JSON). Mirip JSON, tapi ada tambahan tipe NumberLong untuk angka yang sangat besar. Tapi format NumberLong ini tidak bisa dilakukan komparasi, sehingga dia harus di-cast dulu ke string (“”+NumberLong(123)). Sayangnya untuk angka yang sangat besar (seperti 21 digit), ketika dilakukan cast ke string, angkanya pertama akan dibulatkan terlebih dahulu karena keterbatasan presisi.

Selain itu javascript memang bahasa yang mengesalkan. Penuh inkonsistensi. Masak fungsi getDate() nilainya dari 1 sampai 31, tapi fungsi getMonths() mulainya dari 0 sampai 11. Ini mungkin video paling terkenal untuk memamerkan kebusukan javascript.

Yah, sabar.

Tips Hidup Hemat di Stockholm

Stockholm, dan Swedia secara keseluruhan, merupakan kota dan negara yang mempunyai biaya hidup yang cukup mahal (walau mungkin belum semahal tetangganya Denmark dan Norwegia). Apalagi untuk mahasiswa yang hanya mengandalkan beasiswa dan/atau belum bekerja. Harus pintar2 mengatur pengeluaran agar cukup setiap bulannya.

Berdasarkan pengalaman pribadi saya, ada beberapa teknik yang bisa digunakan untuk hidup hemat di Stockholm. Berikut ulasannya.

1. Hemat beli barang

Terutama untuk mahasiswa yang baru datang, biasanya ada banyak barang kebutuhan hidup yang harus dibeli di awal. Biasanya salah satunya adalah barang perabotan untuk kamar, dapur, dan kamar mandi. Untuk tipe barang seperti ini, jangan lewatkan untuk singgah dan berbelanja pertama kali di IKEA. Ada 2 IKEA di Stockholm, Kungens Kurva di Selatan dan Barkarby di Utara. Silakan pilih yang terdekat.

ikea
IKEA di Stockholm dan cabangnya yang baru buka di Alam Sutra, Indonesia.

Bagaimana dengan barang-barang lain seperti jaket winter dan sepatu? Kalau itu bisa dicari di loppis, semacam garage sale versi orang Swedia, dimana orang-orang banyak menjajakan barang bekas. Meskipun bekas, kualitasnya biasanya relatif masih bagus, orang Swedia biasanya juga jualnya jujur, dan harganya tentu lebih miring dibanding toko, walau harus untung-untungan. Loppis yang digelar di luar ruangan biasanya adanya sepanjang summer, walaupun ada juga yang dilakukan indoor ketika sudah musim gugur.

loppis
Foto poster promosi loppis dan foto contoh dagangan yang dijual.

Bagaimana kalau kelewatan? Untungnya ada toko yang namanya Myrorna. Ini toko barang bekas yang buka sepanjang tahun, walau barang yang dijual biasanya juga mengikuti musim. Sama seperti loppis, di sini kita bisa membeli barang dengan harga yang lebih murah, cuma kekurangannya harga tidak bisa ditawar.

myrorna
Satu dari banyak myrorna yang tersebar di seluruh Stockholm. Saya pernah dapat 2 buah raket badminton dengan harga murah.

Sedikit peringatan, hati-hati kalau misalkan membeli barang bekas yang bersentuhan dengan kulit seperti baju atau kasur karena Stockholm dulu pernah terjadi diinvasi oleh bed bugs, serangga kecil penghisap darah.

Kalau mau lebih hemat lagi, biasanya mahasiswa yang sudah selesai meninggalkan banyak barang yang tidak bisa dibawa pulang ataupun tidak sempat dijual. Barang turunan seperti ini tentunya bisa diperoleh secara gratis. Kontak PPI di kota tinggalmu untuk mendapatkan informasi tentang barang tersebut.

2. Hemat di Swalayan

Berdasarkan hasil observasi saya selama 22 bulan, swalayan Lidl yang aslinya dari Jerman, adalah swalayan yang termurah untuk kebanyakan barang seantero Stockholm. Keluhannya biasanya variasi barang yang tidak sebanyak swalayan lain, dan jumlah dan lokasinya yang lebih jarang, jika dibanding swalayan tandingan macam ICA.

Swalayan di Swedia juga kebanyakan tidak memberikan kantong plastik secara gratis, harus tambah 1-5 kron lagi tergantung ukuran dan bahannya. Oleh karena itu sebaiknya dikumpulkan sehingga lebih hemat dan tentunya ramah lingkungan.

Selain itu, kalau belanja minuman berbotol disini biasanya dikenakan biaya tambahan 1-2 kron, tergantung ukuran dari botolnya. Nah, botol-botol tersebut dikumpulkan, kemudian dimasukkan ke mesin bisa ditukar dengan voucher yang nantinya bisa dipakai belanja di swalayan yang bersangkutan. Lumayan kan.

bottle
Botol-botol sebanyak 1 kantong tersebut dimasukkan ke mesin di tengah, hasilnya 26 kron. Lumayan buat nambah belanja.

3. Hemat makan

Nah, kalau ini memang keuntungan tinggal di kota yang ada KBRI-nya. Ada acara hari besar apapun, Idul Fitri, Natal, HUT RI, biasanya KBRI mengadakan acara dan tentunya ada acara makan-makannya yang jumlahya berlimpah. Bisa buat makan untuk satu hari, apa lagi kalau boleh bungkus. Lebih awet lagi.

Demikian cara yang saya tahu. Apakah dari teman2 pembaca punya teknik lainnya?

Salam.

Beamforming with Kinect

Kinect adalah perangkat pendeteksi gerakan (motion sensing) buatan Microsoft yang awalnya dijual bersama perangkat konsol game, Xbox 360 dan Xbox One, walaupun kini juga sudah dijual terpisah. Kalau melihat sejarahnya, Kinect ini kalau tidak salah dibuat untuk melawan konsol Nintendo zaman dulu, Wii, yang juga support motion sensing tapi menggunakan remote.

Tapi menurut pengamatan saya Kinect ini ternyata kurang laku di pasaran. Buktinya dulu paket ini diwajibkan untuk Xbox One. Tapi sekarang sudah ada paket yang tanpa Kinect dengan harga 100 dollar lebih murah karena orang kurang minat pakai Kinect. Saya sudah coba dua game yang menggunakan Kinect, Kinect sport dan Kinect Star Wars, dan memang agak pegal kalau harus main sambil gerak-gerakin tangan  terus-terusan. Lebih nyaman pakai controller sambil duduk anteng.

Kinect kalau saya bilang malah lebih disambut antusias oleh kalangan akademik yang memakainya untuk berbagai topik riset. Alasannya adalah fitur depth camera dari Kinect yang memang powerful serta harganya yang relatif murah karena diproduksi masal. Misalkan untuk problem localization pada robot, daripada memakai Lidar seperti yang ada di atas Google self-driving car yang mahal, lebih murah jika menggunakan Kinect. Dulu di lab tempat saya jadi asisten di Fasilkom sendiri Kinect dipakai untuk pengenalan bahasa isyarat. Yang tertarik bisa membaca lebih lanjut paper berikut: Spectral domain cross correlation and generalized learning vector quantization for recognizing and classifying Indonesian Sign and Language dan Combining depth image and skeleton data from Kinect for recognizing words in the sign system for Indonesian language (SIBI [Sistem Isyarat Bahasa Indonesia]).

Tapi post kali ini tidak akan membahas lebih lanjut fitur depth kamera dari Kinect, melainkan microphone array untuk melakukan beamforming untuk speech recognition.

Beamforming sendiri adalah teknik untuk mengetahui arah datangnya suara dengan menggunakan lebih dari satu microphone. Harapannya dengan mengetahui arah tersebut, mic dapat difokuskan ke arah tersebut sehingga mengurangi noise yang datang dari arah yang lain. Nah, suara yang lebih bersih dari noise inilah yang kemudian diharapkan akan memberikan performa pengenalan yang lebih baik pada speech recognition.

Untuk menguji hipotesis tersebut, di-settinglah eksperimen dimana suara diambil dari 6 lokasi berbeda dengan menggunakan dan tidak menggunakan fitur beamforming dari kinect. Suara ini kemudian akan dicoba dikenali. Fitur yang dipakai adalah Mel Frequency Coefficient Cepstrum (MFCC) dengan menggunakan Hidden Markov Model (HMM) yang sebelumnya sudah dilatih memakai software HTK.

Hasilnya? ada peningkatan akurasi apabila membandingkan pengenalan kata pada posisi tidak tepat di depan Kinect apabila menggunakan beamforming. Tentunya hasil ini bukan definitif karena eksperimen yang dilakukan masih berskala kecil. Eksperimen dengan skala lebih besar harus dilakukan lagi untuk memverifikasinya. Tapi untuk hasil awal, lumayanlah.

Untuk lebih lengkapnya silakan lihat poster presentasi berikut.

poster_snip

Semoga berguna. Salam.

thrashing

Pernahkah Anda memiliki terlalu banyak pekerjaan yang harus dikerjakan pada satu waktu, terus bingung mau mengerjakan yang mana dulu, dan akhirnya tidak ada yang selesai?

Di komputer, fenomena serupa juga terjadi. Namanya thrashing.

Hal ini terjadi ketika ada terlalu banyak thread yang aktif pada CPU, misalkan karena membuka terlalu banyak aplikasi, sehingga CPU lebih banyak menghabiskan waktunya untuk gonta-ganti proses ketimbang menjalankan instruksi proses itu sendiri. Efeknya yang terasa mungkin adanya lagging ketika menggunakan komputer tersebut. (Oke, definisi aslinya sebenarnya adalah tentang utilisasi CPU dan paging memori, tapi pesan moralnya sama).

Solusinya, ya, jangan membuka aplikasi terlalu banyak atau tambah ukuran RAM.

Begitu juga untuk kasus manusia, kerjakan tugasnya satu per satu karena manusia memang tidak bisa efektif bekerja secara multitasking.

Sekian celotehan malam2.

whitelines

Post kali ini saya mau promosi buku tulis whitelines. Perbedaan mendasar buku tulis buatan Swedia ini dengan buku tulis lain pada umumnya adalah warna garisnya. Kalau buku tulis lain garisnya biasanya berwarna hitam, maka whitelines, surprise surprise, garisnya berwarna putih.

WL72_web_produkt20150515_15305220150515_153130

Hal ini ternyata mempunyai keunggulan tidak mengganggu tulisan. Begitu di-fotokopi atau di-scan, garisnya tidak akan terlihat sehingga tulisan kita lebih bersih dan tetap lurus. Ini juga memudahkan ketika misalkan kita mau menjalankan OCR (Optical Character Recognition) ke tulisan kita nanti. Kombinasi garis putih dan warna kertas yang agak abu-abu ini ternyata lebih tidak melelahkan mata berdasarkan hasil penelitian.

Selain itu, kelebihan lainnya adalah kertasnya cukup tebal sehingga tidak tembus dengan pulpen gel, ada garis putus-putus di pinggir kertas agar gampang dirobek (tapi ini hampir ada di semua buku tulis di Swedia). Selain itu buku ini eco-friendly karena proses produksinya menghasilkan 0 emisi karbon. Cuma kekurangannya adalah harganya yang relatif mahal (60 kr untuk buku ukuran A5, isi 70 lembar).

Ada juga variannya yang punya kemampuan untuk bisa di-scan otomatis menggunakan apps di smartphone, whitelines link.

Bisa jadi oleh-oleh kalau ada yang teman atau saudara yang berkunjung ke Swedia.

Sekian iklan tidak dibayar.

matlab

Dulu saya enggak suka pakai matlab. Menurut saya matlab lambat, editornya tampilannya jelek, sintaksnya aneh, dan harus bayar. Saya juga baca blog https://abandonmatlab.wordpress.com/ untuk cari alasan-alasan tambahan untuk tidak pakai matlab. Malah pernah untuk kuliah S1 kelas analisis numerik, saya nekat pakai Java, tambah package JAMA untuk operasi matriks, untuk mengerjakan tugas lab-nya, walaupun disuruh pakai matlab sama asisten. Sebegitu tidak sukanya saya dengan matlab.

Tapi kini semua berubah.

Di KTH, matlab tersedia gratis untuk semua mahasiswa dan banyak tugas lab yang didesain untuk diselesaikan menggunakan matlab. Selain itu untuk thesis saya karena library pendukung banyak di matlab, mau tak mau saya juga harus pakai matlab. Setelah berkutat dengan cukup intens selama beberapa waktu, akhirnya saya menoleransi pemakaiannya dan kini cukup fasih menggunakannya.

Yah, kalau mau adil, di luar kekurangannya yang saya sebut di atas, Matlab memiliki bagian-bagian yang bersinar. Seperti kata peribahasa, “kalau alat yang kita punya cuma palu, maka semua permasalahan akan terlihat seperti paku“. Selain itu, Alan Perlis pernah bilang, “A language that doesn’t affect the way you think about programming is not worth knowing“. Matlab, secara paradigma memang cukup berbeda dibanding bahasa lain, untuk beberapa hal bisa terlihat deklaratif, walau tidak semurni bahasa seperti Haskell. Berikut kelebihan dari matlab dan contoh kasus dimana penggunaannya bisa dijustifikasi.

  • Natural dan cepat untuk masalah operasi matriks.

Misalkan matrix A dengan ukuran mxn akan dikalikan dengan matrix B dengan ukuran nxk, dengan hasilnya matriks C dengan ukuran mxk.

C = A * B;

jauh lebih ringkas dan sederhana dibanding memakai 2 for-loop. Selain itu, jauh lebih cepat juga. Yah, namanya juga matlab (matrix laboratory). Karena itu, untuk tugas yang banyak menggunakan operasi matriks, seperti pengolahan citra, matlab bisa diandalkan.

  • Debugging support

Namanya manusia pasti berbuat salah. dan kesalahan dalam menulis kode ini keluar dalam bentuk bug. Cukup klik sebelah kiri nomor baris di text editor untuk mengeset breakpoint, sehingga ketika di-run, program akan berhenti tepat sebelum baris itu dieksekusi. Dalam debugging, kita bisa menjalankan kode baris per baris sekaligus mengecek nilai variabel pada saat itu.

breakpoint
Breakpoint itu bulatan yang warna merah.
  • Built-in profiler

IDE matlab juga punya built-in profiling yang bisa digunakan untuk mengetahui bottleneck di dalam kode kita sehingga bagian yang lambat bisa dioptimisasi agar bisa berjalan lebih kencang. Cukup klik Run & Time atau ketik profile on, jalankan kodenya yang ingin di-profile, lalu ketik profile viewer.

profile
Contoh hasil profiling. Ternyata paling lama adalah fungsi ApplyDetector2.

 

Jangan gunakan matlab untuk misalkan string processing, atau interfacing dengan hardware. Bisa sih, tapi akan agak menyakitkan dan ada alat lain yang lebih cocok dan tepat untuk tugas tersebut.

Tutorial dan tips triks mempercepat matlab lebih lengkap bisa dilihat di http://www.matlabtips.com/

Bajakan

Saya baru dikasih tahu kalau ternyata KTH sudah berlangganan Office 365, sehingga mahasiswanya seperti saya bisa menggunakan produk Microsoft Office seperti Word, Excel, dan PowerPoint secara gratis dan legal, selama saya masih menjadi mahasiswa di sana.

Wah ini tentunya asyik sekali. Walau saya pendukung gerakan open source, saya rasa Microsoft Office adalah program office paling bagus untuk dipakai dibandingkan alternatif lainnya seperti Open Office, Libre Office, atau Google Docs.

Dengan ini berkuranglah produk bajakan yang saya pakai. Setelah OS Microsoft Windows dapat dari MSDN AA, video game beli di Steam, musik dengar di Spotify, dan nonton film di Netflix. Sekarang yang saya bajak tinggal produk hiburan dari Jepang.

Mengapa harus pakai produk asli? Pertama, kita mendapatkan ketenangan secaral moral dan legal. Secara moral karena pembajakan itu sama seperti mencuri, dan secara legal karena tidak perlu takut pintu rumah digedor oleh polisi. Selain itu memakai software asli tentunya lebih aman dibandingkan software bajakan yang didapat entah dari mana yang mungkin sudah disusupi virus atau malware lainnya.

Saya setuju dengan kata Gabe Newell, salah satu pendiri Valve, yang punya Steam. Katanya, “Piracy is a service problem”. Kalau kita bisa mendapatkan produk asli dengan lebih mudah dibandingkan produk bajakan (apalagi murah atau gratis), pasti orang akan lebih memilih yang asli.

Bagaimana dengan Indonesia, yang katanya tingkat pembajakan software nomor 2 tertinggi di dunia, apakah bisa mengurai konsumsi bajakan? Menurut saya bisa. Contoh nyatanya orang beberapa tahun lalu mau membayar beberapa puluh ribu untuk memasang ringtone atau ring back tone (ketik reg spasi blablabla) dengan cara memotong pulsa. Hal yang sama bisa diterapkan untuk pembelian produk atau software asli.

Demikian celotehan malam2…