Friday, October 28, 2016

Tutorial KmPlot

KmPlot adalah tool untuk memplot (membuat grafik) berdasarkan suatu fungsi/persamaan matematika. Dengan tool ini, akan lebih cepat membuat kurva dari fungsi matematika daripada kita menggunakan GNU Octave ataupun GeoGebra. Untuk perhitungan yang lebih kompleks, analisa dengan Octave atau python tetap diperlukan. Tool ini sangat powerful untuk demo di kelas atau ketika kita menginginkan plot kasar dari suatu persamaan matematik, bisa karena belum tahu atau lupa.

Instalasi

Untuk menginstall KmPlot pada Ubuntu cukup mudah, yakni dengan perintah berikut:
sudo apt install kmplot
Untuk mengeceknya, buka dash (tekan Super) dan ketik Km, maka Kmplot akan muncul pada layar Dash. Klik ikon tersebut dan akan tampilan seperti dibawah.

Tampilan awal KmPlot

Tampilan diatas adalah tampilan defautl KmPlot. Untuk memplot sebuah fungsi, klik menu "Create", maka akan muncul 5 menu baru. Jika anda masih awam dengan tipe-tipe plot tsb, penjelasan sederhanya adalah sbb.
  1. Cartesian Plot
  2. Pada mode Cartesian Plot, fungsi yang diplot adalah fungsi eksplisit. Fungsi eksplisit artinya f(x) dan x ditulis dalam yang terpisah, f(x) disebelah kiri dan x di sebelah kanan. Contoh fungsi ini adalah, $f(x)=x^2$, $f(x)=x^2+x-6$, dsb.
  3. Parametric Plot
  4. Pada fungsi parametrik, $x$ dan $y$ tidak terhubung secara langsung, biasanya dihubungkan oleh variabel $t$. Contoh fungsi parametrik adalah $f_x(t)=10+t, f_x(t)=sin(t)$, dll.
  5. Polar Plot
  6. Polar plot adalah plot fungsi pada bidang plot/lingkaran. Fungsi yang diplot pada polar plot biasanya merupakan fungsi yang bergantung pada variabel radius (r) dan sudut ($\theta$). Contoh fungsi yang bisa diplot pada polar plot misalnya pola keterarahan sumber suara, $I=\dfrac{I_0}{r^2}$
  7. Implicit Plot
  8. Implicit plot adalah kebalikan dari eksplisit plot, yakni variabel x dan y ditulis pada ruas yang sama. Contohnya $x^2+y^2=24$
  9. Differential Plot
  10. Differential plot adalah plot turunan dari fungsi, bisa turunan pertama, turunan kedua atau ke $n$. Contoh, $f'(x)=2x$.

Saturday, September 24, 2016

Bilangan kompleks

Step-by-step:
  1. Pelajari slide berikut (beginner), pastikan anda faham tiap halaman pada slide tsb.
  2. Lihat, ikuti dan fahami video berikut (intermediate - advance)
Selamat belajar!

Saturday, September 10, 2016

Matematika dan Kalkulus

Apa bedanya Matematika dengan Kalkulus? Tentu beda, tapi tidak semua yang belajar keduanya (Mat dan Kalkulus) tahu bedanya. Bahkan, tak banyak yang belajar matematika dan kalkulus tidak tahu tentang (definisi/filosofi) Matematika dan Kalkulus itu sendiri.

Saya berharap untuk say god bye dengan matematika ketika lulus kuliah. Saat itu, dalam hati, saya ingin fokus pada bidang terapan saja, yang hanya menerapkan rumus jadi. Takdir berkata lain, saya kembali ke kampus, melakukan penelitian, dan bertemu matematika lagi. Bertemu kalulus lagi. Inin contoh kalkulus integral (tak tertentu) sederhana,
$$\int dx=\dfrac{1}{x} + C.$$

Kalkulus

Kalkulus adalah "Matematika Perubahan". Dari blognya konsultan matematika, John D. Cook, dia mendefinisikan kalkulus sebagai mathematics of change, ilmu matematika yang mempelajari tentang perubahan, entah perubahan terhadap waktu, jarak atau variabel lainnya. Jika aljabar matematik mempelajari sesuatu secara statis, yang telah "beku" dalam ruang dan waktu. Maka kalkulus mempelajari sesuatu yang berubah terhadap waktu, bentuk yang berubah, merepresentasikannya dalam bentuk model matematik. Jika aljabar menghitung sesuatu secara eksak dan fragile (sebagai konsekuensi dari solusi eksak), maka perhitungan kalkulus lebih pada pendekatan yang lebih robust. Biasanya orang mengenal kalkulus sebagai: limit, turunan dan integral.

Friday, September 09, 2016

Membuat presentasi dengan Latex Beamer

Latex dapat digunakan untuk membuat file presentasi yang powerful. Jika anda belum menginstal latex, saya menyarankan untuk menggunakan latex dari plugin Gedit di Ubuntu yang tutorialnya bisa dibaca disini. Dengan Gedit dan Latex plugin plus embedded terminal, pekerjaan membuat file presentasi akan menjadi jauh lebih mudah. Kelebihannya, tata kelola layout pada halaman slide serta penulisan persamaan matematik didalamnya jauh menjadi cantik dan ciamik.

Tutorial beamer dengan beamer di slideshare

Membuat dokumen baru

Untuk membuat file presentasi dengan latex via Gedit, klik Tools >> Latex >> New Latex Documents. Maka, akan muncul jendela seperti dibawah. Yang perlu anda lakukan hanyalah mengganti dari Template dari default menjadi slide, mengisi nama dan direktori tempat menyimpan file .tex dan Pilih Babel Package >> Bahasa Indonesia, kemudian klik OK. Setelah itu anda dapat membuka file .tex di direktori yang telah anda pilih tadi (File >> Open).

Wednesday, September 07, 2016

Static web generator dengan Mkdocs

Untuk membuat static web generator (web statis, yang isinya biasanya hanya informasi saja) cukup mudah menggunakan mkdocs. Dengan Ubuntu langkah-langkahnya adalah sebagai berikut:
    1. sudo apt-get install mkdocs
    2. mkdocs new website
    3. cd website
    4. mkdocs serve (buka http://127.0.0.1:8000 untuk melihat, ctrl-c di terminal untuk mematikannya)
    5. mkdocs build
Hanya dengan empat langkah di atas kita sudah bisa membuat static web dengan mkdocs. Buka sub folder "site" dalam folder "website" (sebagai contoh pada langkah kedua diatas) dan buka file index.html didalamnya. Jika anda sudah mempunyai hosting, anda cukup mengcopy seluruh file dalam folder site ke hosting anda, biasanya dalam folder "www".

Mengganti tema/theme

Konsep dari mkdocs adalah membuat static website dari makrdown alih-alih menggunakan pure html, wordpress, joomla atau bootstrap. Mkdocs akan membuat file html untuk anda berdasarkan markdown dan file konfigurasi mkdocs.yml. Untuk mengganti tema website dari default mkdocs, kita perlu mengedit file mkdocs.yml sebagai berikut
site_name: website
pages:
- Home: index.md
- About: about.md
theme: alabaster
Sebelum mem-build ulang, buat file about.md dalam folder docs. Tutorial singkat markdown bisa dibaca disini. Setelah membuat file about.md anda bisa membersihkan hasil build sebelumnya dan mem-build ulang,
mkdocs build --clean
mkdocs build
Nah, dengan perintah tersebut anda sudah bisa mengedit dan mengganti tema web anda. Setiap kali anda mengedit konfigurasi dan isi web anda, jangan lupa untuk meng-clean anda mem-build ulang dengan dua perintah di atas. Berikut contoh tampilan static web yang dibangun dengan Mkdocs.

Halaman web yg dibangun dengan mkdocs (http://vibrastic.ep.its.ac.id/simpanfile/)

Tuesday, August 30, 2016

Ten years blogging: Statistics and keep writing!

Actually, this year is the ninth year after I started to blog in 2007. But, if 2007 is counted, this year is the tenth. You can see the difference after nine-year with my somewhat seven years old blog. For a comparison, you can read the review and statistics of my seven-year blogging here (for this blog, in Indonesian language).

Writing, in my current life, is just a hobby to get benefit in my spare time. Although working in manufacturing industry, I keep writing to keep my mind open to the world. I write for fun, at least till now. I write on wide area, from engineering as my basic to the social theme. In engineering, I wrote about computer science and open-source projects. Tweaking my laptop is another activity to get done on holiday. When I found a problem with my laptop, I tried to solve it. Breaking it repeatedly till I got the solution. Then, when I got it, I write it in my blog from the scratch. That is interesting. That makes me feel lively in this life.

Statistic of pageviews until August 2016

Saturday, August 27, 2016

Membaca file partisi EXT di MacOS

Setelah dua-tiga kali mencoba, akhirnya tahun lalu saya berhasil membaca (dan menulis) partisi EXT (ext4) di Mac OSX 10.8.5 Mountain Lion. Ext adalah partisi default dan standar pada sistem operasi berbasis Linux dan saat ini ext4 adalah default file partisi Ubuntu. Langkah-langkah membaca file partisi ext pada MacOS adalah sbb:
  1. Install OSXFuse
  2. Install Fuse-ext
  3. Enable read-write via script/terminal
OSXFuse dan fuse-ext pada preference MacOS

Wednesday, August 24, 2016

Speech enhancement on smartphone Voice Recording

Abstract

Speech enhancement is a challenging task in audio signal processing to enhance the quality of targeted speech signal while suppressing other noises. In the beginning, the speech enhancement algorithm growth rapidly from spectral subtraction, Wiener filtering, spectral amplitude MMSE estimator to Non-negative Matrix Factorization (NMF). Smartphone as a revolutionary device now is being used in all aspect of life including journalism; personally and professionally. Although many smartphones have two microphones (main and rear) the only main microphone is widely used for voice recording. This is why the NMF algorithm widely used for this purpose of speech enhancement. This paper evaluates speech enhancement on smartphone voice recording by using some algorithms mentioned previously. We also extend the NMF algorithm to Kulback-Leibler NMF with supervised separation. The last algorithm shows improved result compared to others by spectrogram and PESQ score evaluation.

For full paper please download here (submitted to ICOPIA 2016). For Octave code (obtained from single source separation: mini tutorial), and latex code please refer to this link.


Tuesday, July 26, 2016

Tutorial Rsync

Rsync adalah tool sinkronisasi terbaik. Dengan rsync anda tidak perlu copy-paste, tidak perlu tool back-up lain, hanya rsync saja. Begitu anda menguasainya, manajemen file terasa mudah.

Perintah dasar:

rsync fileSumber FolderTujuan
rsync -avz FolderSumber/ FolderTujuan/   
Perintah pertama akan mengcopy file 'fileSumber' kedalam 'FolderTujuan', sedang perintah kedua akan mensinkronkan file-file didalam 'FolderSumber' kedalam 'FolderTujuan'. Jika tidak ada slash di argumen pertama ('FolderSumber') maka 'FolderSumber' akan dicopy (bukan hanya file-filenya, tapi foldernya) didalam 'FolderTujuan'. Jika ada slash ('FolderSumber/') maka yang dicopy hanya file-filenya saja (bukan foldernya). Opsi -avz adalah archieve, verbose dan compress artinya rsync dilakukan secara rekursif (isi folder), menampilkan informasi sinkronisasi dan mengkompress saat pengiriman.

Skenario 1: Anda punya dua direktori/folder/drive yang akan anda sinkron-kan, misal namanya adalah tes1 dan tes2. Di dalam tes1 ada beberapa file, sedang tes2 masih kosong. Simply speaking, anda ingin memback-up atau mengcopy paste isi file didalam folder tes1 ke dalam folder tes2.

Kondisi 0:
tes1
+--- file1
+--- file2
+--- file3
tes2
Perintah:
Buat folder dan file1..3 dalam folder tes1
$ cd /tmp
$ mkdir -p tes1 && cd $_
$ touch file{1..3}
$ mkdir ../tes2
Dengan perintah diatas skenario kondisi 0 tercapai, kita mempunyai tiga file dalam folder tes1 dan nol file dalam tes2. Sekarang saatnya memback-up atau copy paste dengan rsync,
$ pwd
tes1
$ rsync -avz --update ./ ../tes2

Sunday, June 05, 2016

Todo List dan Bacaan Ramadhan 1437 H

Sekitar 3 tahun yang lalu, saya membuat daftar-untuk-dilakukan, todo list, untuk Ramadhan saat masih berada di Jepang. I think, I style need that kind of resolution and time management to manage my activity in this Ramadhan 1437 H. Here are my list:
  1. Read the Holy Quran
  2. Read the kitab: Wasiatul Mushtofa
  3. Write the Book: Engineering Math
  4. Packaging recitation of Al-Mathrood for Zekr (and KSU Ayat?)
Mengkhatamkan Quran
Saat ini saya punya 4 buah Quran yang tiap hari saya baca: 2 Quran ada di Rumah, 1 Quran di Kampus dan 1 Quran yang selalu berada di dalam tas untuk mengaji. Dua Quran yang di rumah saya baca secara bergiliran, keduanya saat ini berada di juz 22 dan 23. Satu Quran sudah lebih dari separuh saya baca, kira-kira sampai pada Juz 16. Dan satu Quran terakhir berada di juz 13 yang biasanya saya baca sambil menunggu pengajian dimulai. Jadi saya ingin mengkhatamkan keempat Quran tersebut, atau hampir dua khataman.

Ada tips menarik untuk mengkhatamkan Al-Quran dalam sebulan: tiap selesai sholat fardhu kita baca dua lembar, maka dalam sehari kita mendapatkan satu juz, khatam dalam sebulan. Teknik ini juga di-encourage productive muslim seperti pada gambar dibawah.

Sumber: Productive Muslim

Saturday, June 04, 2016

How to: Setup freely full custom domain from blogspot with Freenom

Blogger is free and Freenom is also free (at least for one year and can be extended continuously). Instead of using url forwarding which cannot show the full domain (like url of blog pages), we can setup fully custom domain with blogspot and Freenom (previously known as dot.tk).
Here is how:
  1. Login to your blogger blogspot 
  2. Go to Setting 
  3. In Basic >> Publishing >> Blog address, click "setup third party for your blog". Hold on... 
  4. Source: Tipsvstricks.com

Friday, March 25, 2016

Parallel programming pada Bash shell

Sejak tahun 2005, perkembangan processor komputer telah berganti paradigma, dari peningkatan clock CPU menjadi peningkatan jumlah core (Cek Wikipedia: Intel CPU Trends). Namun, pemrograman komputer yang banyak dipakai sekarang masih serial yang hanya mengandalkan single core. Artinya, kita belum banyak mengeksplorasi kemampuan komputer yang memiliki banyak core tersebut. Sebagai contoh, laptop saya memikil 4 physical core, jika saya hanya mengandalkan pemrograman serial, maka tiga core lainnya tak terpakai. Bagaimana cara memprogram secara parallel? Materi berikut saya peroleh dari workshop computational infrastructure dan scientific computing.

Screenshot workload 4 CPU (hyperthread) saat running parallel programming, keempat CPU menunjukkan beban kerja yang hampir 100% (baik pada "top" maupun system setting CPU history)

Instalasi

Cara termudah untuk parallel programming adalah dengan dengan menggunakan OS berbasis Linux. Saya menggunakan Ubuntu OS dengan library openmpi. Cara menginstallnya adalah sebagai berikut:
 sudo apt-get install openmpi-bin
Untuk mengeceknya, silakan ketik di terminal "mpirun" dan enter, Jika ada keterangan dan pesan "Report bugs to http://www.open-mpi.org/community/help/" berarti library openmpi sudah terinstall di Ubuntu.

Program Pertama

Program pertama yang bisa kita tes dengan mpirun adalah sebagai berikut,
 mpirun -np 12 /bin/hostname 
Program diatas artinya mencetak nama hostname (nama komputer) kita melalui 12 processor (-np 12). Meski jumlah processor kita hanya 4, namun kita bisa memerintahkan pada PC untuk me-run lebih dari jumlah CPU/processor. Sisa process (12-4=8) akan diluar setelah 4 process pertama, namun karena program diatas sangat ringan maka duabelas outputnya pun dapat ditampilkan bebarengan. Jika anda mendapat ouput 12 nama hostname, itu adalah hasil pemrograman parallel pertama anda. Hello world!

Sunday, March 20, 2016

Tutorial HG Mercurial SCM dengan Bitbucket

Mercurial merupakan sistem kontrol terdistribusi (mostly digunakan untuk source code management) yang "pintar". Mercurial adalah source code management (SCM) serupa dengan git yang digunakan untuk revision control system. Secara sejarah, Mercurial juga dibuat untuk menangani ketidakpuasan atas layanan Bitkeeper sebagaimana Linus membuat Git. Mercurial dibuat Matt Mackall, seorang open source developer yang saat ini bekerja di Facebook. Mercurial hanya "kalah waktu" beberapa saat setelah Git diluncurkan, dan Linux kernel community memilih menggunakan Git daripada Mercurial. Namun, banyak komunitas opensource lebih memilih mercurial seperti GNU Octave dan Herwig.

Secara konsep, mercurial berbasis python yang menjadikannya lebih "lambat" sedikit daripada Git yang berbasis C/C++. Sebaliknya, Mercurial lebih pintar daripada Git stupid content tracker dalam hal mememasukkan file ke repository (hg add), sedangkan git memasukkan file (git add) ke "stage". Impactnya, kita cuma perlu sekali saja meng- "hg add" sebuah file dalam repo. Git perlu "git add" setiap kali ada perubahan.

Instalasi
Pertama kita perlu tahu apakah Mercurial sudah terinstall atau belum pada komputer (Ubuntu) kita. Cek dengan,
$ hg --version

Jika tidak ada nomor versinya maka belum terinstall. Mercurial bisa diinstall melalui apt-get ataupun pip install.
 $ sudo apt-get install mercurial

atau
$ sudo pip install mercurial

Ya, seharusnya dengan salah satu perintah di atas, mercurial sudah bekerja di komputer kita. Saya lebih prefer dengan cara pertama (apt-get) daripada instalasi melalui python (pip). Cek lagi dengan "hg --version" untuk mengetahui berhasil tidaknya instalasi mercurial.

Repository setup
Siapkan beberapa file yang akan ditambahkan pada repository
$ mkdir nama-repo
$ cd nama-repo

Buat beberapa text untuk diimport pada repository. Misal buat tiga text file sebagai berikut
$ echo "foo" >> foo.txt
$ echo "bar" >> bar.txt
$ echo "baz" >> baz.txt

Untuk menghost repository di internet, kita menggunakan bitbucket.org yang menyediakan layanan hg mercurial free unlimited (really!). Ada dua cara untuk membuat repo baru, bisa dari bitbucket.org secara langsung, atau membuat secara local di PC kita kemudian mengimportnya.

Cara I

Thursday, March 17, 2016

Learn Python the Hardway : The work flow

Really, I want to say; I hate python programming. But, when I said something bad, the bad will come to me again and again. So, let's to to stop it. Python is interpreter language or scripted language. It doesn't need to compile like C or C++. It seems the easiest (programming) language to learn. How to learn it? How to master it? what is the hard way to learn as fast as possible? Here the work flow:

Tutorial:
  1. Do all exercise in Learn Python The Hardway by hand (type, not copy paste), from Exercise 1 to Exercise 39.
  2. Solve the Project Euler Problem, Problem number 1, 2, 3, 14, 17, 57, 79 and 102 with Python.
  3. Learn the basic concept of python and advanced it with python object oriented programming. 
  4. Learn Tutorial-python.
  5. Learn from software carpentry python lesson.
Free online MOOC (interactive coding, RECOMMENDED):
  1. Datacamp's intro to Python for Data Science
  2. EdX Intro to Python for Data Science (Connected to DataCamp)
  3. EdX introdution to Programming Using Python
  4. MITx 6.00.1x Introduction to Computer Science and Prorgramming Using Python
  5. EdX Using Python for Research

That's all, do it. You'll master the python on the hard way method. That is one of the most important thing that I got from the workshop of scientific computing.

Wednesday, December 16, 2015

Forensik Suara di Indonesia: Past, Present and Future

Berikut adalah resume singkat saya saat mengikuti "Workshop Forensik Suara Ucap di Indonesia: Pas, Present and Future" yang diorganisir oleh Kelompok Keahlian Instrumentasi dan Kontrol, Teknik Fisika ITB. Workshop ini dibagi menjadi tiga sesi, sesi dari Komisi Pemberantasan Korupsi, sesi dari Puslabfor POLRI, dan sesi dari akademisi ITB.

Kebutuhan Penyidik akan Forensik Suara Ucap

Forensik suara ucap → Proses untuk menentukan apakah contoh dari suara seseorang (known sample) merupakan sumber dari suara yang diselidiki (unknown sample). Jenis alat bukti forensik suara ucap adalah sbb:
  • Rekaman suara 
  • Laporan forensik suara 
  • Pendapat ahli
Dari ketiga jenis alat bukti forensik suara diatas, jelas peran forensik sangat vital untuk bisa dijadikan referensi dalam menuntut tersangka/terdakwa dengan hukuman semaksimal mungkin. Didukung dengan barang bukti yang sah (real evidence), maka tugas KPK untuk menjerat koruptor akan semakin realistis. Dalam KUHAP Pasal 184 alat bukti yang sah adalah: keterangan saksi, keterangan ahli, surat, petunjuk dan keterangan terdakwa. Perluasan alat bukti (forms of evidence) ini mencakup alat bukti elektronik yang mencangkup rekaman suara maupun data pendukungnya. Trend penggunaan forensik suara dalam hukum semakin meningkat seiring berkembangnya teknologi. Dalam film-film spy Hollywood, penggunaan teknologi suara sudah di-imajinasikan sangat canggih sehingga kita bisa mengetahui posisi seseorang hanya dari suaranya saja, misal dalam film Bourne, Mission Impossible atau 007.

Thursday, December 10, 2015

Particle Tracking: Least square fitting berbasis konvolusi

Ini adalah interpretasi bebas saya atas tutorial MDS di halaman granular material labs-nya. Idenya sederhana: menggunakan least square fitting berbasis konvolusi untuk menge-track pergerakan suatu partikel/image.

Least Square Fitting

Least square fitting adalah teknik kesesuaian atau kecocokan (godness fit) untuk mencari nilai terbaik yang paling mirip antara data observasi dengan data estimasi atau function fit. Jika data observasi dimisalkan dengan $y_i$ dan fungsi estimasi disimbolkan dengan $f(x_i)$ maka "least square fit" adalah jumlahan selisih nilai observasi dengan fitting function,

$$\sum\limits_{i=1}^n \left( {{y_i}-f ({x_i})}^2 \right)$$

Jika jika memiliki data dengan rentang error bar atau variansi, maka chi-square didefinisikan sebagai least square diatas dibagi dengan "error bar"nya, yakni, $\sigma$.

$$ \chi^2=\sum\limits_{i=1}^n \left( \dfrac{{y_i}-f({x_i})}{\sigma} \right)^2 $$

Nilai chi-square (χ2) berkisar antara 0 sampai dengan tak hingga (~), semakin kecil nilai chi-squared maka semakin mirip nilai observasi dengan nilai ekspektasi, dalam hal particle tracking, maka gambar bulatan particle akan semakin tipis sehingga semakin mudah dibedakan antar satu dengan yang lainnya. Pada tutorial kali ini, least square fitting yang digunakan adalah berbasis konvolusi yang akan dijabarkan pada tulisan dibawah.

Fungsi Partikel Ideal

Misalkan partikel yang ingin kita track posisinya memiliki fungsi ideal sebagai berikut, $$I_c(\vec{x})=\sum_{n=1}^{N} I_p(\vec{x}-\vec{x}_n(t);D,...),\;\;\;\;\;\;[1]$$ dengan $N$ adalah jumlah partikel dan $$I_p(\vec{x};D,...)$$ fungsi tersebut menggambarkan bentuk partikel ideal yang berada di tengah. Partikel ideal bergantung pada variabel diameter dan variabel lain yang digunakan dalam teknik pengolahan citra. Untuk demo ini kita menggunakan fungsi partikel ideal sbb,

$$I_p(\vec{x};D,w)= \dfrac{\bigl[1-tanh(\frac{|\vec{x}|-D/2}{w})\bigr]}{2}$$

Sunday, November 29, 2015

Public Lecture on Hearing Technology

On Thursday and Friday, 26-27 November 2015, we held public lecture on Hearing Technology. The first day, Prof. Jenkins from Colorado University shares about technology that helping world to better hearing. The following presentation is Prof. Jenkins' slide. While on the second day, Prof. Barajas, the president of International Association of Physician in Audiology (IAPA) teach us about the brain and electrical response in our auditory system. Enjoy it.