Ketika Koding Menguasai

Semalam, pukul 1 malam (atau tepatnya pukul 1 pagi) saya terbangun. Teringat sebuah ide koding (pemrograman) LED yang saya buat beberapa waktu yang lalu. [Lihat tulisan saya tentang ini.] Saya ingin membuat sebuah kode lagi. Langsung saja saya tidak bisa tidur lagi.

Ada dua pilihan. Tetap memaksakan diri untuk tidur kembali (dengan risiko kehilangan ide dan juga tidur mungkin tidak nyenyak) atau bangun dan membuat kode, koding. Saya ambil pilihan yang terakhir. Langsung ambil laptop.

Sambil koding saya nyalakan TV. Eh, film yang sedang main adalah film horor. ha ha ha. Hmm … sudah malas saya mengubah channelnya untuk memilih film yang lain. Pikiran sedang fokus ke kode. Maka saya biarkan saja film horor itu tetap on. hiii. Koding berlanjut. Ternyata semangat koding mengalahkan seramnya film horor. Baru kali ini saya tahu. ha ha ha.

Setelah sekitar setengah jaman koding, beres. Ide terimplementasi. Untungnya tidak terlalu banyak masalah di kodenya. Saya upload kode ke akun sementara saya untuk kemudian besok saya upload ke github. Baru bisa tidur kembali. Nyenyak.

Ngoprek IoT

Kata IoT – Internet of Things – sedang ngetop sekarang. Dimana-mana saya melihat kata ini sebagai bagian dari seminar, kompetisi, startup, dan seterusnya. Pokoknya seru saja. Nah, sayapun tidak mau ketinggalan.

Saya mencoba menggunakan Arduino UNO dan board buatan DycodeX untuk kode IoT ini. (Sebetulnya saya punya banyak board lainnya, tapi itu untuk cerita terpisah.) Selain board ini saya juga menggunakan LED board buatan ProcodeCG. Berikut ini adalah beberapa video yang saya buat untuk menunjukkan demo / contoh kode dengan board-board di atas.

Dalam dunia hardware, IoT, salah satu cara memulai atau mencoba adalah membuat demo “blinking LED”. Kalau di dunia software, ini adalah “Hello World” versi hardware. Biasanya sih blinking LED-nya hanya satu LED. Kali ini saya mencoba menggunakan beberapa LED biar lebih seru.

Video di bawah ini menunjukkan demo Knight Rider, yaitu LED yang bergerak dari kiri ke kanan dan sebaliknya. Nama ini diambil dari film seri Knight Rider (jaman dahulu dan versi barunya). Dalam film tersebut ada mobil cerdas yang bernama KITT. Kalau dia aktif, maka ada LED yang bergerak-gerak seperti ini.

Dalam video di bawah ini, saya membuat Knight Rider LED juga tetapi dengan menggunakan board Arduino UNO.

Video di bawah adalah demo untuk membuat LED seperti meter yang ada di radio (equalizer). Board yang digunakan adalah DycodeX ESpectro.

Oh ya, kode-kode untuk demo di atas dapat dilihat dan diunduh dari koleksi saya di github.com yaitu di: https://github.com/rahard/BRiot-stuff. Selamat ngoprek.

Indonesia Update 2016

Perjalanan saya ke Australia ini sebetulnya dalam rangka acara “Indonesia Update 2016” yang diselenggarakan oleh Australian National University (ANU) Indonesia Project. Topik dari acara tahun ini adalah Digital Indonesia. Itulah sebabnya saya diundang menjadi salah satu pembicara. Saya akan berbicara tentang “cyber security”.

Acaranya dilangsungkan di kampus ANU, di kota Canberra, selama dua hari. Presentasi saya adalah presentasi terakhir di hari terakhir. (Ini ada keuntungan tersendiri, yaitu saya bisa suka-suka saya. Meskipun tidak bisa sebebas yang saya pikirkan. hi hi hi.) Pembicara yang lain keren-keren juga.

p_20160917_063951-01-jadwal

Peserta dari acara ini ternyata sangat banyak. Ruangan yang digunakan, sebuah teater, berukuran hampir 500 orang. Dan peserta yang datang banyak sekali. Hampir memenuhi ruangan. Berarti mendekati 500 orang.

Di hari pertama saya hanya mendengarkan. Bayu pembicara kedua mengidekan situasi politik di Indonesia seperti trilogi start wars. Dias (lupa di sesi berapa) juga menyinggung soal star wars. Akhirnya saya putuskan untuk menutup acara tema star wars; the return of the Jedi. ha ha ha.

cshi2hhumaa-wjv-jedi

the return of the (code) jedi

Tadinya saya mencari apa yang bisa dipakai untuk baju (dan lightsaber) untuk manggung. Gak nemu. Akhirnya saya putuskan untuk menggunakan hoodie saja. Jadilah seperti foto di atas. Lumayanlah. Tema Star Wars terjadi juga. hi hi hi.

p_20160917_130953_bf-folks-0001

Foto para pembicara sesi terakhir. Potret sebelum bubar

Di kampus ini saya menginap di University House, semacam hotel / dorm untuk tamu-tamu dari universitas. Tempatnya sangat dekat dengan ruang acara. Jadi tidak perlu transportasi. Tinggal jalan 2 menit dari kamar ke tempat presentasi. Tempatnya asyik juga. [foto-foto menyusul]

Canberra ini ternyata masih dingin juga. Harusnya sih temperaturnya sudah naik tetapi masih dingin. Setelah acara selesai, hari Minggu di kampus ini kosong banget. Sepiii. [foto2 menyusul, lagi] Canberra, meskipun ibu kota, ternyata kecil dan sepi. hi hi hi.

Judul / Topik Thesis / Penelitian

Minggu ini mulai banyak mahasiswa berdatangan untuk mencari topik penelitian & thesis S2 mereka. Berikut ini adalah beberapa topik yang saya tawarkan. Deskripsi dari masing-masing topik mungkin belum terlalu rinci, tetapi mudah-mudahan penjelasan ini masih dapat memberikan bayangan. Topik besarnya adalah security & big data.

  1. Anonimity + eVoting + Visual Cryptography ID. Topik ini melanjutkan disertasi dari I Made Ardhana (softcopy disertasi sedang saya telusuri dan akan diupload di web site). Fokus kepada implementasi ide-ide yang ada di dalam disertasi tersebut. Ada beberapa design decissions yang harus diambil dalam implementasinya beserta pembaharuan teorinya. Titik beratnya kepada programming. (Ada beberapa snippet code yang sudah saya buat sebagai proof of concept.) [Sudah ada rencana 1 mahasiswa yang memilih ini. Masih dapat ditambah khususnya untuk sisi attack-nya.] Untuk aspek teorinya, pengukuran tingkat anonimitas, juga sedang mencari mahasiswa. Namun yang ini lebih banyak aspek matematisnya. Jika menyukai matematika (atau memang mahasiswa matematika), bisa memikirkan topik ini.
  2. Stegokripto. Meneruskan thesis dari Almaarif (lihat budi.rahardjo.id bagian students). Pencarian kode yang berbeda antara data dan noise. (Coding theory. Mencari kode yang orthogonal terhadap noise. Ide on-curve dan off-curve pada Elliptic Curve juga dapat dipakai.) Pada thesis terdahulu proses pembedaan kode dan noise dilakukan dengan menggunakan marker tertentu. (Proses pendeteksian dapat dilakukan dengan sliding window, atau bahkan matriks. Belum dilihat aspek kinerjanya.) Kode terdahulu juga dapat lebih disempurnakan sehingga aplikasi menjadi lebih integrated. (Sebelumnya pecah-pecah menjadi beberap aplikasi.)
  3. Mekanisme pengamanan program chat (Signals / dahulu TextSecure, WA, dll.) dengan menggunakan Curve 25519. Thesis memahami protokol yang digunakan dan melakukan re-implementasi di program Open Whisper Systems. (Ini juga dapat menjadi topik thesis di Matematika.)
  4. Cryptocurrency. Block chain. Ini adalah konsep di belakang Bitcoin. Memahami dan membuat protototipe sebuah digital money. Mengembangkan teori uang digital.
  5. Secure phone. Beberapa komponen dari konsep secure phone, yaitu authentication module (menggunakan SAM). [Sudah ada 1 mahasiswa yang mengerjakan ini.] Ini bagian besar dari disertasi Virtual Trusted Machine (mahasiswa S3: Raidun). Beberapa kemungkinan implementasi dari ide secure phone dengan menggunakan DSP board.
  6. Proteksi DNS terhadap DoS attack. [Sudah ada 1 mahasiswa yang mengambil ini.] Fokus kepada teknis. (Sementara untuk aspek teori adanya di level S3.)
  7. Automated software security testing. Exploring several framework. [Sudah ada 1 mahasiswa yang memilih menggunakan Sully]
  8. Beberapa sub-topik dari disertasi mahasiswa saya. (Mahasiswa S3 akan memberikan beberap sub-topik dari penelitian [kesulitan] mereka saat ini yang dapat menjadi topik thesis.) Topik terkait dengan Graph-based Social Network Analysis (SNA), graph compression, big-data in SNA,  Distributed IDS (ant-colony), eLearning berbasis Jigsaw, …

Sementara ini daftarnya adalah seperti itu. Akan saya tambahkan dengan link-link lain agar lebih jelas lagi dalam update berikutnya.

Mainan IoT

Lagi seru-serunya topik IoT (Internet of Things). Maka saya pun tak mau ketinggalan ngoprek IoT. Pada dasarnya IoT ini adalah menghubungkan “things” ke internet. “Things” yang dimaksud di sini bisa apa saja. Biasanya sih dimulai dengan menghubungkan sensor (misal sensor temperatur) ke internet.

Beginilah konfigurasi yang saya gunakan saat ini. (Corat-coret di kertas bekas.)

14080070_10153796588911526_1526882988396792016_n

Untuk sensor, kali ini saya menggunakan SensorTag dari Texas Instrument. SensorTag ini memiliki banyak sensor; temperatur, kelembaban, akselerasi, tombol yang dapat ditekan dan seterusnya. Versi yang saya gunakan ini menggunakan Bluetooth (tepatnya BLE, Bluetooth Low Energy) untuk berkomunikasi.

Saat ini ada aplikasi bawan (untuk handphone iOS dan Android) yang dapat digunakan untuk memantau sensor-sensor tersebut. Aplikasinya bagus sekali. Nah, saya ingin membuat aplikasi serupa sehingga data dari sensor dapat saya proses sesukanya. (Misal mau dikirim ke server sendiri.) Saat ini selain dapat memantau data sensor, aplikasi ini dapat juga mengirimkan data tersebut melalui protokol MQTT ke server IBM. (Nampaknya TI ini memiliki partnership dengan IBM.) Saya mencoba menghubungkan aplikasi ini ke server MQTT lainnya tetapi belum berhasil. Ini juga salah satu alasan mengapa saya harus membuat aplikasi sendiri.

Untuk membuat aplikasi di handphone, ternyata ada tools yang menarik dari Evothings. Mereka membuat semacam interface sehingga kita dapat melakukan pemrograman di komputer desktop kita, kemudian mengirimkan kodenya ke handphone (yang dipasangi aplikasi Evothings Viewer). Maka aplikasi langsung dijalankan di handphone. Ini mengurangi kesulitan upload program ke handphone. (Sebetulnya kita bisa juga setup web server sendiri sih.)

Pemrograman di handphone tersebut ternyata menggunakan bahasa Javascript. Ada beberapa library yang perlu digunakan untuk mengakses sensor melalui BLE. Saya sudah mencoba beberapa library tersebut, belum ada yang sukses. Tidak ada error, tetapi outputnya masih kosong. (Harus melakukan debugging dulu dan saya belum terbiasa melakukan debugging dalam bahasa Javascript.)

Alternatif lain yang sedang saya pikirkan adalah menghubungkan sensor tersebut langsung dengan single board computer (SBC) semacam Raspberry Pi. Ternyata ada orang-orang yang juga sukses melakukan pendekatan itu. Saat ini saya tidak punya Raspberry Pi tetapi malah punya yang dari Getchip.com. Ini keren banget, $9 chip dan sudah bisa langsung jalan Linux di atasnya. Sudah ada Bluetooth 4.0 juga. Jadi hal lain yang ingin saya lakukan adalah melakukan pairing antara SensorTag TI ini dengan SBC dari Getchip.com ini. (Ini foto kedua benda tersebut yang saya ambil dari meja saya.)

13987404_10153796571416526_4784112517654812880_o

Saya masih belum berhasil mainan dengan getchip.com secara stabil. Entah kenapa koneksi ke benda ini via WiFi kok tidak stabil. Tersendat-sendat. Jadi malas juga koding langsung di sini. Ide lain adalah via komputer desktop saya dulu saja. Toh sama-sama Linux.

(Update: kalau saya sambungkan SBC getchip ini dengan USB ke Macbook, saya bisa akses dengan nama “chip.local”. Jadi saya bisa “ssh root@chip.local” dengan password default “chip”. Setelah itu saya bisa masuk ke console linux dengan koneksi yang lebih stabil. Saya bisa main-main dengan getchip ini seperti tutorial yang ada di sini. Misal, saya bisa sambungkan kabel ke ground untuk coba seperti switch dan dibaca via GPIO. Atau harusnya mainan dengan LED, tapi saya tidak punya breadboard dan LED.

root@chip:/sys/class/gpio# echo 415 > export
root@chip:/sys/class/gpio# cat gpio415/direction
in
root@chip:/sys/class/gpio# cat gpio415/value
1
root@chip:/sys/class/gpio# cat gpio415/value
0

)

Tadi saya pasang Bluetooth dongle yang 4.0 di komputer desktop saya (running Linux Mint). Kemudian menggunakan berbagai tools (bluez, dll.) untuk mencoba pairing dengan SensorTag ini. Belum berhasil. (Saya menggunakan panduan dari sini dan membaca data di sini. Saya lihat ada juga yang mencoba menggunakan python untuk ini.)

[To Do: Javascript vs Python. Pilih bahasa apa untuk kodingnya?]

Jika data sudah sampai di server MQTT – ini di cloud – maka saya akan dapat membuat berbagai aplikasi sendiri. Jadi tujuan akhirnya adalah saya dapat memantau sensor dari internet.

Nah, sekarang belum ada yang jalan … ha ha ha. Jadi masih ada banyak yang harus dikerjakan. Saya akan pilah-pilah dulu. (Divide and conquer.)

Selain itu dalam 2 atau 3 minggu ke dapan saya akan dapat IoT board lain dengan sensor yang langsung dihubungkan dengan boardnya. (Lihat board Espresso di smkholding.com dan DycodeX.)  Ini akan jadi thread yang berbeda. Asyik. Banyak oprekan.

Kewarganegaraan 1.0

Setiap bercerita di depan kelas, atau memulai presentasi, sering saya bercerita tentang perjalanan hidup saya. Saat ini saya sedang dalam versi “3.3”. Ha ha ha. Kayak software saja. Tapi begitulah. Penomoran ini sebetulnya terinsipirasi dari buku karangan Thomas Friedman. (Dia mengarang banyak buku, seperti “The World is Flat” and “The Lexus and Olive Tree”. Tentang globalisasi.)

Friedman bercerita bahwa globalisasi memiliki versi. Pada versi 1.0, globalisasi ditandai dengan keinginan orang untuk menjadi warga negara lain, yaitu warga negera besar seperti Amerika Serikat, Inggris, dan seterusnya. Ini jaman dahulu kala. Kalau kita baca sejarah Indonesia, ada banyak orang Indonesia yang ingin bergabung menjadi bangsa penjajah (“Londo”) karena sangat menyedihkan kalau kita menjadi warga negara terjajah. Ini kewarganegaraan 1.0.

Globalisasi 2.0 terjadi dan kewarganegaraan tidak penting lagi. Yang penting adalah tempat kita bekerja, yaitu multinational companies. Maka banyak mahasiswa yang ditanya kalau lulus mau kerja dimana, jawabannya adalah perusahaan besar seperti Schlumberger, IBM, Citibank, Microsoft, General Electric, dan seterusnya. Dalam perusahaan besar tersebut kewarganegaraan tidak penting lagi. Menjadi “warga negara” perusahaan besar menjadi lebih penting.

Globalisasi 3.0 terjadi karena adanya internet dan pemanfaatan teknologi informasi. Batas fisik dunia tidak ada lagi. Maka tidak penting lagi kewarganegaraan dan perusahaan tempat bekerja, tetapi yang penting adalah diri kita sendiri. You! Maknanya adalah yang lebih penting lagi adalah apa kontribusi Anda ke dunia. What’s your contribution to society.

Maka kalau sekarang kita masih meributkan tentang kewarganegaraan maka sebetulnya kita masih berada pada globalisasi 1.0. Sudah ketinggalan jaman.

CodeMeetUp()

Di Bandung, setiap Senin siang kami mengadakan CodeMeetUp(). Isi diskusinya macem-macem. Tadi siang di Telkomsel Digilife Dago Bandung (depan hotel Holiday Inn) yang mengisi adalah Didit dari Labtek Indie. Topiknya adalah “Developing VR in Unity”. Didit ini salah satu certified Unity Developers. Keren.

DSC_6314 0001

Yang diceritakan adalah tentang apa saja yang tersedia saat ini untuk membuat (aplikasi) VR (Virtual Reality) dengan Unity. Pro dan kontra teknologi yang tersedia dan beberapa hal yang perlu dicermati. Termasuk masalah-masalah yang dihadapi ketika membuat aplikasi VR.

Senangnya mengikuti acara-acara CodeMeetUp() ini adalah kita bisa belajar terus. Dari yang memang jagoan pula di bidang itu. Asyiiik.