Internet Cepat Untuk Programmer

Satu hal yang sangat membuang waktu sebagai programmer adalah: mengupdate software untuk development. Untuk programmer, biasanya ini berkaitan dengan SDK dan IDE yang baru. Biasa kita punya dua pilihan: mengupdate sekarang atau nanti.

Mengupdate sekarang berarti membuang waktu sekarang, dan artinya bisa menunda pekerjaan. Sementara menunda update juga kadang menimbulkan masalah: beberapa hal tidak berjalan lancar, dan kadang jika kita melompati update terlalu banyak, tiba-tiba jumlah masalah jadi meningkat atau bahkan project tidak lagi bisa berjalan.

Kebanyakan IDE hanya akan update jika kita buka. Ini sering mengesalkan buat saya: saya tidak sering memprogram satu topik untuk waktu yang cukup lama. Ketika ingin mulai membuat program: harus update dulu. Kadang hal seperti ini menghilangkan mood untuk membuat program kecil.

“Hanya” 422 Mb

Jika ingat, saya akan menjalankan IDE yang saya pakai hanya sekedar untuk mengupdate saja. Nanti kalau saya benar-benar butuh, setidaknya jumlah updatenya tidak terlalu banyak.

Ditambah lagi dengan 770 Mb

Salah satu alasan saya masih memakai Emacs dan mengcompile di command line (dengan CMake, Gradle, dsb) adalah: saya punya kontrol terhadap proses tersebut. Jika karena update IDE atau project jadi error, saya tetap bisa meneruskan kerja dengan editor dan compile dengan command line.

Ini bakal butuh waktu lama: 5.95 GB

Saya cukup suka dengan IntelliJ, ada ToolBox di toolbar yang memungkinkan kita mengupdate aplikasi cukup dengan satu klik saja. Andaikan ada yang membuatkan ini untuk semua IDE, maka hidup ini akan jauh lebih enak.

Saya beruntung Internet di sini cepat dan murah (saya ambil paket 1200 THB, 500Mbps/500Mbps). Sebelum pulang liburan ke Indonesia, saya mengupdate dulu semua software yang saya pakai, dan ketika di sana tidak mengupdate sama sekali. Saya tidak bisa membayangkan mereka yang harus mendownload bergiga-giga dengan Internet yang lambat.

Saya pake paket yang kanan

Buku Baru: Seri Secret Coders

Masih cerita soal buku yang di beli di Big Bad Wolf Desember lalu. Jonathan gak sengaja memilih 1 buku Secret Coders. Sebenarnya beli buku ini awalnya tertarik karena judulnya saja, dan saya malah gak tau isinya berupa komik. Ceritanya mengenai seorang anak usia 12 tahun yang pindah sekolah dan menemukan beberapa misteri yang ternyata bisa dipecahkan dengan pemrograman. Buku ini sejenis pengenalan pemrograman juga buat Jonathan.

Buku yang kami beli di BBW itu hanya buku nomor 2. Waktu kami kembali ke BBW lagi untuk mencari nomor lainnya, kami gak berhasil menemukannya. Akhirnya karena Jonathan sudah baca buku ke-2 itu berkali-kali, kami memutuskan untuk memnbeli buku lainnya dari Amazon.

Buku ini tersedia dalam format Kindle juga. Waktu kami mau beli akhir Februari lalu, Joe baru tahu kalau buku ke-6 baru akan terbit, dan versi kindlenya belum akan langsung ada. Setelah dibanding-bandingkan harganya, beli versi kindle 1 bukunya 7.6 USD, beli 5 buku kindle 39 USD, nah beli buku fisik 6 buku 40.84 USD, plus ongkos kirim ke Chiang Mai sekitar 10 USD totalnya 50.84 USD, jadi harga bukunya lebih mahal sedikit saja daripada versi kindlenya. Akhirnya rasanya masih tetap lebih murah beli buku fisik. Pertimbangan lainnya, baca komik itu lebih enak pakai buku fisik, jadilah kami beli complete box setnya.

Hari ini bukunya tiba, mengingat kami baru memesan sekitar 22 Februari, dan buku ke-6 nya baru terbit akhir Februari, buku ini tergolong cepat sampainya ke Chiang Mai. Sore ini Jonathan langsung menyelesaikan membaca 5 buku yang belum dia baca dalam waktu beberapa jam saja. Saya yakin, besok-besok dia masih akan mengulang-ulang baca buku ini, seperti halnya buku -buku seri lainnya yang dia punya.

Saya juga jadi ikut-ikutan membaca bukunya, dan ya ternyata ceritanya cukup menarik. Buku pertama menjelaskan konsep bilangan biner dengan mengenalkan istilan buka tutup. Kalau terbuka merepresentasikan 1 dan kalau tertutup merepresentasikan 0. Selain mengenalkan konsep biner, buku pertama ini juga mengenalkan pemrograman dengan mengenalkan instruksi Forward sekian langkah, Right or Left sekian derajat, dan sampai pada instruksi Repeat untuk mengulang-ulang instruksi sebanyak angka didepan instruksi Repeat.

Oh ya, cara menjelaskan suatu konsep di buku ini dibuat dalam bentuk percakapan antara 2 orang anak sekolah. Walau dalam cerita ini tokohnya berumur 12 tahun dan Jonathan masih 8 tahun, tapi Jonathan tidak kesulitan mengerti penjelasan dalam buku ini, mungkin karea dia udah mengenal apa itu bilangan biner dan juga udah sering mengganggu papanya minta diajari beberapa dasar pemrograman. Tapi saya merasa membaca buku ini tidak seperti membaca buku pelajaran pemrograman, semuanya dijelaskan dengan cukup sederhana. Ah andaikan saya baca buku ini sebelum kuliah dulu, mungkin saya akan lebih cepat ngerti pemrograman waktu tingkat 1 dulu hahaha.

Kalau melihat Jonathan selalu senang membaca buku-buku seperti ini, rasanya senang banget membelikan dia berbagai buku. Mudah-mudahan saja dia gak bosan dengan buku-buku seperti secret coders ini dan ya siapa tahu nanti besarnya bisa lebih jago mrogram dari papanya hehhehe.

Oh ya, kalau ada yang punya rekomendasi buku lainnya seri belajar pemrograman untuk anak-anak, tuliskan di komentar ya, supaya nambah bahan bacaan Jonathan hehehe.

GPU Raspberry Pi

Salah satu kelebihan Raspberry Pi (RPI) dibandingkan Single Board Computer (SBC) lain adalah: harganya relatif murah dan memiliki GPU yang terdokumentasi resmi dan bisa dimanfaatkan dengan berbagai API low level. Beberapa SBC lain ada yang harganya lebih murah (misalnya Orange Pi) tapi dokumentasinya kurang, dan beberapa yang lain lebih powerful (misalnya NVidia Jetson) dengan dokumentasi yang cukup baik dari produsen (tapi masih kurang dari komunitas) tapi harganya 10x lipat dari RPi 3.

GPU Raspberry Pi cukup powerful, dan bisa melakukan beberapa hal menarik misalnya: tunelling dari kamera (dengan konektor CSI) langsung ke layar, colorspace conversion, video/image encoding and decoding,  resizing, dan overlay. Kita juga bisa meminta agar data dari kamera langsung dijadikan texture untuk OpenGL ES.

Secara praktis tunnelling artinya satu komponen ke komponen lain bisa bekerja langsung tanpa buffer. Contoh nyatanya begini: kita bisa membuat aplikasi yang kelihatan smooth karena data dari kamera tampil langsung di layar dengan kecepatan tinggi (30 fps) tanpa memakai CPU sama sekali. Sementara di latar belakang kita bisa mengambil gambar, memproses (misalnya face detection) dan menampilkan hasilnya.

Proses ini membypass windowing system, jadi bisa jalan bahkan tanpa X Window (mode teks sekalipun).

Video dari kamera bisa ditampilkan di mode teks

Fitur texture OpenGL ES artinya kita bisa menampilkan gambar kamera atau video (dari file atau jaringan) langsung di permukaan  misalnya kubus atau teko. Selain itu kita bisa menggunakan pixel shader untuk memproses data tanpa memakai CPU, contohnya membuat filter kamera secara real time, atau bahkan melakukan preprocessing untuk algoritma machine learning. Data yang sudah diproses bisa dibaca dan diproses lebih lanjut di CPU dengan glReadPixels. Lanjutkan membaca “GPU Raspberry Pi”

Membedah e-KTP

Posting ini sekedar membahas tentang kartu tanda penduduk elektronik (e-KTP). Sampai saat ini saya belum pulang ke Indonesia untuk mengurus e-KTP karena KTP lama masih berlaku. Waktu orang tua saya datang ke sini tahun lalu saya sudah sempat ngoprek e-KTP mereka sedikit, dan sekarang selagi mereka berkunjung saya teruskan dan tuliskan hasil eksplorasi saya.

Sebagian isi tulisan ini didapat dari reverse engineering, dan sebagian lagi dari berbagai informasi yang tersebar di Internet. Ada juga bagian yang merupakan spekulasi saya dari informasi yang ada.

Security sebuah smart card

Sebuah smart card adalah sebuah komputer kecil, di dalamnya ada CPU, RAM, dan juga storage. Smart card diakses menggunakan reader, secara umum ada dua jenis: contact (menggunakan konektor fisik seperti SIM card) dan contactless (tanpa konektor fisik seperti kartu e-Money berbagai bank saat ini). Dari sisi programming keduanya sama saja. Kartu smart card yang baru umumnya juga sudah tahan (immune) terhadap side channel attack (DPA/SPA/FI dsb). Lanjutkan membaca “Membedah e-KTP”

Lulusan Kuliah IT seharusnya bisa apa?

Tahun lalu saya membaca mengenai skill yang seharusnya dimiliki lulusan SMK. Entah kenapa tulisan ini beredar lagi di timeline saya tahun ini. Ketika saya baca lagi mengenai skill yang diharapkan, kebanyakan skill ini bahkan tidak dimiliki oleh lulusan Sarjana Informatika/Ilmu Komputer/Teknologi Informasi (berikutnya akan saya singkat jadi: lulusan/sarjana IT).

Sudah menjadi fakta bahwa banyak lulusan IT yang tidak bisa memprogram (silakan baca artikel: Why can’t programmers.. program?). Separah ini:

Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all. I repeat: they can’t write any code whatsoever.

Sebelum diskusi masuk ke masalah pekerjaan, kesuksesan, jiwa entrepreneur, dsb saya ingin menekankan dulu: lulusan apapun dengan skill bagaimanapun bisa bekerja di berbagai bidang yang tidak sesuai jurusan yang diambilnya. Tapi jika sebuah negara ingin bisa maju di bidang tertentu, ya tentunya yang diharapkan adalah lulusan dari bidang tersebut memiliki skill yang baik dan berkontribusi di bidangnya. Lanjutkan membaca “Lulusan Kuliah IT seharusnya bisa apa?”

Seri Buku Micro Adventure

Ini cuma kisah singkat mengenai seri buku cerita yang saat ini mulai disukai Jonathan: Micro Adventure. Seri ini diterbitkan di tahun 1980-an  oleh Scholastic dan cukup terkenal pada masanya.  Satu hal yang menarik dari buku-buku ini adalah: di dalamnya ada program dalam bahasa BASIC yang bisa diketikkan dan merupakan bagian dari cerita.

Jonathan sedang menyalin kode dari buku ke QBasic di Dosbox
Jonathan sedang menyalink kode dari buku ke QBasic di Dosbox

Buku pertama yang selesai dibaca Jonathan adalah Space Attack, buku ini terbit tahun 1984.

Di awal cerita buku pertama ada pesan rahasia yang harus didekrip. Sebenarnya bisa didekrip manual (caesar cipher), tapi lebih menarik jika didekrip dengan program. Lanjutkan membaca “Seri Buku Micro Adventure”

Kisah sebuah bug kecil

Saya mau cerita tentang sebuah bug yang saya perbaiki dan dapat bounty 200 USD plus kerjaan ekstra yang menyusul dari ini. Meski secara nilai ini kecil dibandingkan banyak proyek lain, tapi ada banyak hal yang membuat gembira dari satu bug kecil ini sehingga ingin saya ceritakan.

Maaf, ini bukan cerita tentang serangga, tapi bug software

Cerita singkatnya: teman saya memakai software open source QZ, sebuah library untuk printing via web browser. Jadi jika client menginstall software ini di PC-nya maka web app yang memakai library QZ bisa mengakses langsung printer lokal. Langsung di sini artinya bisa mengirimkan kode mentah, sehingga printing bisa cepat dan mendukung berbagai fitur spesifik printer. Fitur semacam ini dibutuhkan untuk software Point Of Sales, aplikasi bank atau sejenisnya yang butuh langsung mencetak ke printer yang tidak standar (misalnya printer thermal, printer buku tabungan, dsb). Lanjutkan membaca “Kisah sebuah bug kecil”