Serba-serbi editor teks

Pekerjaan saya adalah programmer, dan kira-kira 90% waktu saya habiskan untuk mengedit teks, jadi wajar kalau saya ingin memakai editor terbaik. Sekitar 10 tahun yang lalu saya menulis bahwa saya hampir 100% memakai Emacs, tapi setelah itu saya mulai berganti-ganti editor walau editor utama saya tetap Emacs.

Sampai sekarang tidak ada satu editor yang cocok untuk semua hal, jadi akhirnya saya memakai dan menginstall banyak editor teks dan IDE (integrated development environment) untuk berbagai tujuan. Seringkali bermain-main dengan editor dan IDE ini saya jadikan pengisi waktu luang kalau sedang ingin membuang waktu.

Sekarang ini kombinasi Editor teks dan IDE yang saya pakai:

  • Emacs sebagai editor utama
  • Vim untuk editing cepat di sistem remote
  • Ultraedit untuk membuka file teks yang sangat besar
  • Intellij untuk refactoring Python
  • VSCode untuk platformio dan remote editing
  • Visual Studio untuk C# di Windows
  • Netbeans untuk membuat GUI Java dengan cepat

Saya tuliskan dulu apa sih fitur-fitur yang saya pakai, lalu saya sebutkan kapan saya memakai editor atau IDE di atas.

Sebagai informasi, biasanya saya mengedit file di komputer:

  • Desktop Rumah: RAM 48 GB, Intel Core i5, NVME SSD
  • Laptop: Macbook Pro 2019 (16 inch), RAM 16 GB, NVME SSD

Tapi kadang saya juga mengedit file dengan berbagai komputer lain, termasuk juga pinebook dan pinebook pro.

Berjalan di Console/Mode Teks

Saya sering perlu mengedit teks di sebuah sistem yang tidak memiliki GUI, atau jika dipaksa akan lambat sekali. Contoh: mengedit file di sistem embedded Linux dengan memori yang hanya 32 Megabyte. Banyak editor langsung keluar dari daftar. Untuk keperluan ini akhirnya saya sering memakai vim dan emacs. Editor nano dan pico juga kadang saya pakai jika terpaksa.

Startup vim jauh lebih cepat dari Emacs, tapi saya sering lupa perintah Vim karena semuanya memakai kombinasi huruf yang sulit dihapal. Sekarang saya sudah hapal perintah sederhana untuk navigasi, save, edit, shell, goto line, search replace, split screen, dan managemen tab di Vim, tapi fitur yang lebih advanced belum saya kuasai. Emacs juga bisa dikonfigurasi dengan berbagai shortcut, tapi jika kita lupa sesuatu, kita bisa mengetikkan nama perintahnya (misalnya: remove-trailing-whitespace). VSCode juga memiliki fitur search command semacam ini tapi VSCode tidak berjalan di mode teks.

Search dan Replace

Semua editor punya search dan replace, tapi kemampuannya berbeda-beda. Jika mungkin saya akan melakukan search replace text dengan menggunakan program “sed” saja di command line, tapi kadang saya perlu langsung melihat hasilnya secara interaktif. Vim bagus untuk search/replace dengan regex, tapi untuk search/replace non regex malah sulit (opsi no magic atau sno tetap menganggap karakter $ dan backslash dianggap spesial). Padahal ketika search dan replace kode program itu hampir selalu mengandung karakter spesial. Jadi bagian kecil ini sering mengesalkan.

Kadang jika ingin search replace yang case sensitive, yaitu mengganti teks tapi jika huruf kapital tetap kapital, jika bukan kapital tetap bukan kapital, dan jika diawali kapital tetap diawali kapital, misalnya semua YOHANES jadi JOE, Yohanes jadi Joe dan yohanes jadi joe. Ini sangat terpakai jika kita ingin konsisten dalam memberi nama, misalnya #define di C biasanya huruf kapital, sedangkan nama fungsi huruf kecil semua. Dengan Emacs ini mudah dilakukan (defaultnya itu) tapi ini sulit dilakukan dengan sed dan butuh plugin untuk Vim. Di VS Code, fitur ini baru mulai ada di versi 1.37 (Juli 2019).

Macro

Ini sulit dijelaskan bagi yang tidak pernah memakai fitur Macro. Jika kita ingin mengedit banyak baris teks secara interaktif tapi berulang, kita bisa memakai macro. Contohnya begini, jika kita punya teks banyak baris, seperti ini: sebuah kata diikuti definisi kata tersebut:

cinta suka sekali; sayang benar
cantik elok; molek

Dan kita ingin mengubah dafar tersebut menjadi pemetaan dictionary dengan syntax PHP:

"cinta" => "suka sekali; sayang benar",
"cantik" => "elok; molek",

Dengan mengetahui perintah Emacs dan macro, kita cukup mengetikkan Control-X (, lalu mulai melakukan apa yang harus terjadi di baris itu:

  • ke awal baris dengan Control-A (beginning of line)
  • ketik tanda petik ganda
  • pergi ke kata berikut dengan Alt-f (forward-word)
  • ketik ” => “
  • pergi ke akhir baris dengan Control-E (end-of-line)
  • ketik “,
  • pergi ke baris berikut dengan panah bawah, atau Control-N (next-line)

Lalu kita akhiri macro dengan Control-x ), dan berikutnya untuk mengulangi macronya kita tekan: Control-x e. Jika masih ada lagi berikutnya kita tekan e.

Vim juga memiliki fitur macro, dan sering juga saya gunakan, tapi karena saya tidak hapal dengan banyak perintah Vim, saya lebih sering memakai emacs ketika butuh fitur Macro.

File besar

Cukup sering saya harus berurusan dengan source code yang ukurannya besar, biasanya dihasilkan oleh tools (generated code). Ukuran filenya ratusanribu sampai jutaan baris. Berbagai editor tidak mampu menangani file sebesar ini, emacs tidak mampu, vim mampu, tapi syntax highlightingnya akan didisable secara otomatis (mengeset opsi ttyfast tidak membantu).

VS Code ketika membuka file besar

Setelah mencoba berbagai editor, yang bisa membuka file besar dengan baik tidak banyak. Sebagian besar hanya tersedia untuk Windows. Pilihan akhirnya jatuh ke Ultra Edit (komersial) karena kebetulan mendukung berbagai bahasa yang saya pakai. Paket ultraedit yang saya beli juga memiliki Ultra Compare, yang bisa dipakai untuk file besar (WinMerge dan yang lain mengalami kesulitan dengan file ratusan megabyte). Alternatif lain yang menurut saya bagus adalah 101 Editor (juga komersial).

Shell

Sambil mengetik program, saya sering perlu menjalankan perintah tertentu. Tentunya ada banyak cara untuk menjalankan shell ini sambil menjalankan editor.

Pertama adalah di window terpisah. Ini cocok jika kita memakai tiling Window Manager

Atau di belah layarnya dengan tmux

Jika tidak butuh interaktif, kita bisa menjalankan langsung perintah dan melihat hasilnya (misalnya dengan “!” di vim).

Dengan menggunakan fitur di editor itu sendiri, misalnya vim punya perintah terminal (ini baru di versi 2017 ke atas) dan emacs punya perintah shell. Contoh editor lain yang memiliki ini adalah VSCode

Terminal di dalam Vim

Di Vim dan VSCode, shell ini tidak terasa terintegrasi menurut saya, karena di dalam shellnya, key binding editor jadi tidak berfungi. Di emacs, semua masih berfungsi (pergerakan kursor, copy paste, dsb), jadi misalnya kita ingin mencari output terminal, kita bisa menekan Control-r (reverse search) untuk mencari perintah atau outputnya.

Network Editing

Ada banyak cara mengedit file dari network, tapi pendekatannya biasanya salah satu dari ini:

  • Mount sharenya di lokal (bisa menggunakan sshfs)
  • Ambil filenya ke lokal, edit, lalu kirim kembali ke remote server
  • Jalankan editor atau proses khusus di remote server

Masing-masing pendekatan memiliki kelebihan dan kekurangannya. Jika kita mount direktori remote agar bisa diakses lokal, kadang ini jadi lambat jika diakses IDE (karena berusaha mengindeks seluruh project). Jika saya mengedit file di server, maka semua gerakan kursor jadi lambat, tapi perubahan akan disimpan instan. Sedangkan jika saya mengcopy file dulu di lokal, lalu menekan save, kadang butuh waktu sampai filenya benar-benar tersimpan di remote server.

Dulu saya suka memakai emacs TRAMP (Transparent Remote Access, Multiple Protocol), tapi sekarang saya memilih VSCode. VSCode memiliki fitur codeserver, jadi editornya berjalan di remote, tapi user interfacenya lokal (bahkan bisa via browser). Sayangnya fitur code server ini baru tersedia di x86/x86_64 dan arm/arm64, jadi kalau ingin mengedit file di router yang memakai MIPS biasanya tetap butuh SSH langsung.

Narrowing

Kadang saya ingin berkonsentrasi di satu bagian kode saja, misalnya satu fungsi atau bahkan sepotong bagian fungsi yang besar. Dari berbagai editor yang saya pakai, sepertinya hanya Emacs yang punya fitur narrowing secara default. Ada plugin VIM untuk ini, dan meski sudah ada yang menyarankan agar menjadi fitur VSCode, ini juga katanya sebaiknya menjadi plugin saja.

Ini sepertinya fitur minor, tapi sangat berguna, dengan narrowing, saya bisa melakukan editing apa saja (termasuk search replace) dan saya bisa yakin tidak akan mempengaruhi bagian lain program. Andaikan tidak ada fitur ini, bisa saja saya mengcopy paste bagian yang ingin saya kerjakan ke file baru, tapi saya harus mengcopy lagi hasil edit, jadi cukup merepotkan.

Font dan ligature

Sekarang ini ada beberapa “programming font”, yaitu font yang tujuannya untuk dipakai menampilkan kode. Dalam berbagai font ini berbagai simbol terlihat jelas bedanya, misalnya angka 0 dan huruf O berbeda jelas, demikian juga huruf kapital I, huruf kecil l dan angka 1. Beberapa font bahkan dibundel bersama editor atau IDE tertentu, misalnya IntelliJ punya “Jetbrains Mono” dan Visual Studio Code memakai “Cascadia Code”. Dan banyak juga font lain seperti Fira Code yang tidak ditujukan untuk editor tertentu.

Sebagian programming font ini mendukung ligature. Berbagai operator seperti <= akan ditampilkan cantik dengan simbol ≤. Sebagian programmer tidak suka ini, tapi menurut saya cukup enak untuk dipakai membaca source code. Dari berbagai editor yang saya pakai, saat ini hanya emacs yang tidak mendukung ligature dengan baik. Sebenarnya bisa, tapi repot sekali, tidak seperti editor lain yang mudah.

Zero Latency Typing

Saya sempat terobsesi juga dengan zero latency typing: begitu menekan tombol, karakter seharusnya langsung muncul di layar. Kebanyakan editor tidak bisa seperti ini, jadi ya sudah saya terima aja karena tidak banyak yang bisa saya lakukan. Biasanya jika komputer terlalu lambat, entah itu karena terlalu sibuk mengkompilasi kode atau memang spesifikasinya kurang cepat (misalnya Pinebook/Pinebook Pro), saya akan memakai editor yang lebih ringan.

Editor latency in Windows (text file)
Sumber: Typing with pleasure

Editor vs Integrated Development Environment (IDE)

Memprogram dengan IDE bisa banyak membantu pemrograman, tapi dari dulu saya sering menghindari IDE karena terlalu banyak menyembunyikan berbagai hal dari saya. Jika sedang bekerja baik IDE sangat nyaman dipakai, tapi jika ada error, sering sulit sekali mencari salahnya.

Kebanyakan IDE juga tidak terlalu berguna untuk bahasa C/C++ karena akan bingung ketika ketemu berbagai Macro yang aneh atau template yang kompleks. Jadi akhirnya saya hanya memakai IDE di kasus tertentu saja. Berbagai skrip singkat Python juga tidak butuh IDE, membuat script manual dengan editor lebih cepat daripada setup project IDE.

Kasus pertama adalah jika memang bahasa atau platform target sangat bergantung pada IDE-nya. Contoh: saya memakai Android Studio untuk membuka project Android. Meski saya mengetahui langkah manual/command line untuk mengcompile, source, membuat package dan sign APK (pengetahuan berguna untuk reversing), tapi jika ingin mengedit proyek Android ya saya memakai Android Studio. Demikian juga jika ingin membuka proyek iOS, saya memakai XCode.

Kasus kedua adalah untuk refactoring. Jika saya ingin mengubah-ubah nama dan lokasi file, fitur drag/drop IDE sangat membantu. Tidak semua IDE punya fitur setara untuk hal ini. VSCode memiliki banyak plugin yang menjadikannya seperti IDE, tapi ini masih kalah dari yang sudah matang. Contoh: fitur refactoring kode Python di VSCode masih kalah jauh dibandingkan Intellij/PyCharm.

Kasus berikutnya adalah untuk membuat GUI sederhana. Sering kali saya perlu melakukan reverse engineering kode Android (Java), dan perlu mengetes kodenya. Dengan decompiler saya bisa mendapatkan kode tertentu (kode enkripsi, signing, dsb) dari APK, dan kode ini bisa ditest dengan cepat menggunakan NetBeans di desktop. Saya bisa membuat GUI sederhana untuk memanggil kode yang saya ekstrak tersebut. Membuat program command line memang mudah, tapi jika programnya menerima banyak input, dan ada yang opsional, parsingnya mulai merepotkan dan lebih mudah memakai GUI.

Kasus terakhir adalah jika saya kurang familiar dengan bahasanya. Contohnya: saya memakai Visual Studio untuk editing C# (atau Rider jika sedang memakai Linux/OS X). Pengetahuan saya tentang C# jauh lebih rendah dibandingkan pengetahuan saya mengenai Java. Dengan IDE plus plugin dari ReSharper dari IntelliJ, saya bisa membuat kode C# yang cukup bagus. Setiap kali membuat kode yang kurang bagus, plugin ReSharper bisa memberi ide yang lebih baik.

Internal Editor Teks

Sebagai programmer, dari dulu (dari sejak SMU sekitar 1997) saya tertarik bagaimana mengimplementasikan editor teks. Untuk mengimplementasikan editor teks yang baik dibutuhkan struktur data yang baik pula. Sekedar array of string akan membuat proses insert line, merge line, dsb kurang efisien. Belum lagi berbagai aksi seperti text selection, rectangular selection, undo dan redo.

Sampai sekarang pun masih, dan saya masih mengikuti berbagai perkembangan editor yang ada. Saat ini proyek open source yang menarik adalah xi-editor yang menggunakan struktur data rope. Sayangnya sampai saat ini belum ada front end xi editor ini yang saya sukai.

Penutup

Bermain-main dan mencoba-coba berbagai editor ini sering kali menjadi “kegiatan buang waktu” ketika sedang malas mulai memprogram. Tapi Andaikan hasil dari mengoprek editor ini bisa membuat saya lebih efisien 1% saja per hari (bisa mengetik/mengedit lebih cepat beberapa menit saja totalnya), maka dalam setahun, hasilnya sudah terbayar.

Beberapa contoh yang terpikir oleh saya:Pemakaian macro sudah menghemat banyak sekali waktu karena mempercepat editing berulang. Memilih teks editor Ultraedit untuk membuka file besar menghemat banyak waktu karena hasilnya instan. Dari waktu untuk membuka file saja, sudah hemat banyak waktu.

Virus Covid-19 VS Robot, Self Driving Cars, dan Tes Kit 15 menit

Setiap hari, saya berusaha untuk tidak memikirkan masalah penyebaran Covid-19. Melihat angka-angka bertambahnya pasien atau adanya pasien meninggal terkadang membuat perasaan campur aduk. Saya dan Joe berusaha melihat sisi lain dari mewabahnya Corona yang sudah dinyatakan sebagai global pandemic oleh WHO ini.

Obrolan kemarin misalnya, karena ada banyaknya pasien di Italia, semua rumah sakit penuh dan dokter sampai pusing menentukan siapa yang harus ditolong dan tidak. Atau ketika membaca berita meningkatnya jumlah pasien positif di Belanda karena ada satu daerah di mana 4% dari petugas rumahsakit di area Noord-Brabant (Eindhoven, Tilburg, Breda and Den Bosch) positif Corona.

Kami pikir, alangkah baiknya kalau ada mekanisme pengecekan positif atau tidaknya corona ini dengan cepat dan harga yang terjangkau. Lalu kami juga berandai-andai ada robot yang bisa mengecek positif tidaknya pasien, mengantarkan kebutuhan pasien seperti makanan, obat dan misalnya untuk memeriksa temperatur. Dengan adanya robot yang bisa desinfeksi, kemungkinan bisa membuat para pekerja di rumah sakit juga tidak perlu khawatir tertular.

Joe juga bilang, harusnya sekarang ini para ilmuwan berlomba untuk membuat test kit Covid-19 yang bisa diproduksi massal, harga terjangkau dan juga bisa mengetahui hasilnya dengan cepat, jadi setiap orang bisa melakukan pengecekan sendiri semudah pengecekan kehamilan di rumah. Lalu ya kalaupun positif tapi gejalanya tidak parah, bisa mengisolasi dirinya sendiri di rumah sampai merasa lebih baik dan mengecek lagi ketika merasa sehat sampai dipastikan memang bebas virus.

Ternyata, dari hasil googling hari ini, semua yang kami pikirkan itu sudah mulai dikembangkan. Kelebihan manusia dalam menghadapi krisis memang selalu menghasilkan inovasi baru atau membuat teknologi yang dibutuhkan untuk menghadapi krisis dengan cepat.

Lanjutkan membaca “Virus Covid-19 VS Robot, Self Driving Cars, dan Tes Kit 15 menit”

Bisakah Semua di Rumah Saja?

Kadar polusi dengan pm 2.5 yang sudah sejak Januari 2020 di atas normal dan virus Corona yang sudah ada beberapa kasus positif di Chiang Mai, membuat saya jadi berpikir, mungkinkah kita melakukan semuanya dari rumah dan meminimasi keluar rumah. Hidup dengan teknologi internet yang sudah semakin maju, bisakah kita bekerja, belajar, bermain ataupun berbelanja dari rumah saja.

Bayangkan, kalau kita tidak bisa keluar rumah. Anak-anak sekolah pakai kelas online. Bisa berupa kelas online terjadwal di jam tertentu, ataupun diberi rentang waktu tertentu di mana murid harus melihat rekaman penjelasan dari guru dan menyelesaikan soal untuk penugasannya. Semua interaksi dilakukan melalui internet. Buku-buku yang dibaca juga dalam bentuk digital, hasil pekerjaan murid juga dikumpulkan dalam bentuk digital. Pertemuan orang tua dan guru juga dilakukan melalui internet dari rumah masing-masing menggunakan video conference.

Bagaimana kalau butuh berbelanja? ya kita bisa pesan online, baik menggunakan aplikasi ataupun dengan menelpon langsung ke toko yang kita tahu menjual barang yang kita butuhkan. Barangnya dikirim ke rumah. Siapa yang mengirim? harus ada yang antar? Anggap saja mobil/kendaraan yang disetir sendiri sudah umum. Mobil yang berjalan sendiri ini sudah mulai diujicoba saat ini. Mudah-mudahan, tidak lama lagi harganya sudah terjangkau dan bisa dibeli oleh banyak orang. Barang-barang bisa dimasukkan ke dalam mobil tersebut dan diantar ke rumah kita. Setiba di rumah, ya kita bisa ambil dari mobil tersebut.

Kalau malas masak gimana? ya, kalau memang sudah ada kendaraan otomatis, bukan cuma barang yang bisa dikirim, kita bisa pesan makanan dari restoran untuk dikirim ke rumah. Kita tidak perlu keluar rumah, dan tidak perlu ada orang yang mengantarkan makanan tersebut. Pembayarannya bisa online juga toh.

Kalau orang kerja kantoran, tetap harus pergi ke kantor dong? Ya tergantung, pekerjaannya apa. Kalau dokter, mungkin harus ketemu dengan pasien. Kalau programmer, jelas bisa bekerja di rumah asal koneksi internetnya mendukung. Pekerjaan dilakukan masing-masing di rumah, kalau butuh rapat bisa menggunakan video conference. Jadi walaupun tidak pergi ke kantor, bukan berarti di rumah bisa leyeh-leyeh doang sepanjang hari.

Lanjutkan membaca “Bisakah Semua di Rumah Saja?”

KidBright32 dan KBX

Kalau United Kingdom punya Micro bit, maka Thailand punya KidBright32. KidBright32 dikembangkan oleh NECTEC (National Electronics and Computer Technology Center) organisasi pemerintah Thailand dan diproduksi oleh perusahaan lokal Thailand Gravitech). Usaha ini didukung perusahaan lain, misalnya perusahaan Maker Asia membuat extension berupa case dan peripheral tambahan yang diberi nama KBX (KidBright32 Extension).

Di posting sebelumnya saya sudah membahas Micro bit, di sini saya membahas KidBright32 dan ditutup dengan apakah mungkin Indonesia membuat board serupa.

KidBright32

KidBright32 menggunakan ESP32 sebagai prosessornya. ESP32 ini merupakan chip dari China yang pernah saya bahas di posting lain. Sedangkan Microbit memakai chip NRF52 dari Nordic Semiconductor, perusahaan Norwegia. NRF52 hanya memiliki fitur Bluetooth dan komunikasi radio proprietary, sedangkan ESP32 memiliki fitur Bluetooth dan WIFI. Harga KidBright32 sekitar 600 baht (19 USD), tidak beda dengan harga Micro Bit .

Seperti Micro bit, KidBright32 juga memiliki IDE Visual drag drop yang bernama KidBright IDE yang bisa dipakai di Linux/Windows/OSX. Berikut ini video yang dirilis oleh NECTEC untuk memperkenalkan KidBright (video bahasa Thai dengan subtitle bahasa Inggris).

Sebagian besar fitur KidBright32 ini sama dan bahkan lebih dari Micro Bit.. Memori lebih besar, bisa WIFI (bagus untuk belajar IOT), dan LED yang dipakai lebih besar (dua buah matris 8×8, jadi ada 128 led, sedangkan micro bit hanya 25).

Micro bit sudah cukup dikenal dan ada banyak aksesori tambahan, tapi KidBright32 juga tidak kalah. Berbagai sensor dan hardware tambahan sudah tersedia dan bisa dibeli di : https://www.kidbright.io/shop. Beberapa contoh sensor yang tersedia: proximity (kedekatan), detak jantung dan barometer.

KBX dan kbide

Sifat KidBright32 ini terbuka dan bisa dikembangkan lebih lanjut. Salah satu hasil pengembangannya adalah board KBX. Board ini memiliki case, LCD, Micro SD, USB host (supaya bisa memakai keyboard atau gamepad USB), dan juga tombol ekstra. Saya baru mengenal board ini ketika menemani Jonathan untuk ikut pelatihan gratis pemrograman hardware dasar di Chiang Mai Maker Club.

Selain membuat KBX, Maker Asia juga membuat kbide, versi lebih canggih dari KidBright IDE. Software kbide ini open source dan bisa berjalan di Windows, Mac, maupun Linux.

IDE-nya bukan sekedar meniru persis editor Micro Bit, banyak fungsi tambahan yang menurut saya lebih menarik. Berbagai fungsi tingkat lanjut di sediakan di mode visual, seperti:

  • Melakukan koneksi ke WIFI
  • Melakukan time synchronization dengan NTP
  • Menampilkan gambar (bahkan dari IDE-nya kita bisa mengakses kamera USB/kamera laptop, supaya kita bisa memfoto sesuatu untuk ditampilkan di device)
  • Mengucapkan kata-kata (terbatas, hanya yang ada di dalam kamus)
  • Memainkan nada (dengan editor yang bagus)
  • Memainkan MP3
  • Melakukan koneksi dengan protokol MQTT

Sebagai produk Thailand, salah satu kelebihannya adalah support terhadap bahasa Thai. Contoh paling sederhana adalah pada fungsi teks yang bisa menampilkan teks bahasa Thai dan disertakan juga berbagai font Thai.

Dengan hardware ekstra, harga KBX tentunya lebih mahal dari harga KidBright biasa, tepatnya harganya sekitar 60 USD (1990 THB). Dengan adanya koneksi Wifi dan sinkronisasi waktu dari NTP serta fitur buzzer, Jonathan bisa dengan cepat membuat Jam meja dengan alarm. Di malam hari jamnya diletakkan di samping tempat tidurnya.

Dari hasil mencoba-coba hardware dan softwarenya, saya merasa cukup kagum. Ini proyek yang serius, bukan sekedar meniru BBC Micro bit. Design hardwarenya bagus dan softwarenya juga dibuat dengan serius. Softwarenya masih terus dikembangkan (ini bisa dilihat di aktivitas github Maker Asia).

Bisakah Indonesia membuat hal serupa?

Membuat development board yang ditujukan untuk anak-anak butuh diperlukan pengembangan hardware dan software. Kenapa kita tidak mengimpor saja benda ini? ada beberapa alasan kenapa kita perlu membuat sendiri:

  • Harga barang jadi biasanya lebih mahal, apalagi jika ditambah dengan berbagai aksesorinya
  • Kita tetap perlu membuat dokumentasi dan manual dalam bahasa Indonesia dan juga menerjemahkan softwarenya dalam bahasa Indonesia (di Thailand masalah bahasa sangat penting, bahkan semua film didub dalam bahasa Thai)
  • Kita bisa menyesuaikan dengan kondisi Indonesia, misalnya menambahkan sensor yang berguna untuk otomasi pertanian atau mungkin memakai panel surya karena sinar matahari melimpah di Indonesia

Board populer pertama yang ditujukan untuk belajar pemrograman hardware adalah Arduino. Dulu Arduino bisa dirakit sendiri karena komponennya sedikit dan jenis komponennya through hole. Dengan teknologi through hole, komponen dimasukkan menembus lubang PCB dan disolder di sisi lain.

Memakai komponen dengan teknologi through-hole

Tapi sekarang jumlah komponen through hole semakin sedikit, dan kebanyakan komponen sekarang memakai teknologi surface mounted (SMT). Dalam teknologi SMT, komponen elektronik diletakkan di atas PCB dan diberi pasta solder, lalu dipanaskan. Untuk memanaskan ini bisa memakai oven (oven kue juga bisa, tapi sebaiknya khusus, jangan dipakai lagi untuk masak kue karena walau sudah bebas timbal, masih ada kemungkinan ada uap berbahaya) atau memakai hot air soldering station. Pada produksi masal, biasanya ini dilakukan secara otomatis dengan mesin.

Contoh board dengan teknologi SMT, chip hanya “menempel” di atas PCB

Karena sulitnya merakit board modern, sebaiknya ini dilakukan oleh perusahaan khusus, sehingga anak-anak bisa langsung memakainya. Harga berbagai komponen (chip, resistor, dsb) sudah relatif murah, tapi kebanyakan masih perlu impor. Indonesia sudah mampu membuat PCB sendiri dan merakit komponennya.

Alternatif lainnya adalah kita menyusun berbagai modul, jadi tidak menyusun chip dan berbagai komponen pasif. Saat ini sudah ada banyak modul kecil dengan berbagai fungsionalitas (sensor udara, transmitter dan receiver infrared, LED, dsb) yang harganya murah (beberapa USD, bahkan ada yang hanya beberapa sen). Modul modul ini bisa disolder ke sebuah board besar.

Software untuk memprogram boardnya bisa dibuat dengan relatif mudah dengan menggunakan berbagai library yang sudah ada, atau melakukan forking terhadap IDE lain yang sifatnya open source. Bagian sulitnya adalah membuat hardware dan software yang bisa berjalan mulus. Hal lain yang penting adalah dokumentasinya.

Jadi sebenarnya bisa saja Indonesia membuat board serupa dengan BBC atau KidBright. Kesulitan pengembangan hardware dan softwarenya tidak terlalu tinggi. Pertanyaannya adalah: apakah kita memang sudah memfokuskan ke sana atau belum.

BBC micro:bit

BBC Micro Bit (kadang ditulis “micro:bit”) adalah hardware open source yang dibuat oleh BBC (British Broadcasting Corporation) untuk mengajarkan pelajaran komputer di United Kingdom. Board ini sudah dirilis tahun 2016 dan sudah saya beli tidak lama setelah diluncurkan. Baru sekarangsaya tulis karena Jonathan baru mulai tertarik belajar ini.

Case kittenbot dan micro:bit

Micro bit ini ditargetkan untuk umur 11 tahun ke atas (walau lebih muda juga bisa), jadi sebenarnya memang baru cocok untuk usia Jonathan yang sekarang 9 tahun. Micro bit ini ukurannya sekitar setengah kartu kredit, ada dua tombol (plus satu tombol reset), konektor micro USB, dan 25 LED. Ada accelerometer (bisa jadi input dengan gerakan) dan juga magnetometer (bisa menjadi kompas), ada juga sensor temperatur (tapi kurang akurat karena built in).

img
Sumber gambar: https://tech.microbit.org/hardware/

Micro bit juga bisa dihubungkan ke handphone dengan Bluetooth Low Energy (BLE). Dua micro bit juga bisa berkomunikasi dengan radio (yang ini protokolnya proprietary, berdasarkan Gazell dari Nordic). Micro bit bisa dihubungkan ke banyak hardware, tapi sebelumnya saya jelaskan dulu tentang sisi softwarenya.

Micro bit dalam case Kittenbot

Software dan pemrograman

Resminya Micro bit bisa diprogram dengan browser memakai editor blok atau menggunakan Micropython dengan mengunjungi https://microbit.org/code/ . Tapi benda ini juga bisa diprogram dengan C, C++, BASIC, ADA, Rust, Swift, Forth dan mungkin masih banyak lagi.

Editor blok resmi memiiliki simulator, sehingga kita bisa langsung mencoba bahkan tanpa perlu hardwarenya. Perhatikan gambar board micro bit di kiri, gambar tersebut interaktif, kita bisa menekan tombol A, tombol B, atau keduanya.

Editor block bisa menerjemahkan kode langsung ke JavaScript. Kita juga bisa menulis kode Javascript dan jika tidak terlalu kompleks akan bisa otomatis diterjemahkan jadi bentuk blok. Javascript yang terlalu rumit akan muncul sebagai blok teks. Berikut ini contoh terjemahan otomatis dari blok ke Javascript.

Memprogram dengan browser sangat mudah: tidak perlu instalasi apapun, cukup memakai browser Chrome terbaru (jadi perlu punya komputer/laptop, bisa Windows/Linux/Mac). Transfer program ke Micro bit juga langsung dari browser.

Khusus untuk Micro bit yang dibeli beberapa tahun lalu, firmwarenya perlu diupdate dulu agar bisa diprogram via web. Cara updatenya cukup mudah, cukup colok ke komputer dan micro bit akan terdeteksi sebagai USB disk, kita cukup drag drop firmware terbaru agar berikutnya Micro bit bisa diprogram via browser.

Browser tidak harus di PC, browser ponsel juga bisa dipakai. Untuk transfer kode dari ponsel ke Micro bit, disediakan juga companion app untuk iOS dan Android. Transfer kode dilakukan via bluetooth. Jika memakai PC, kabel USB juga merupakan sumber daya listrik bagi micro bit, jika memakai HP, kita butuh kabel USB atau batere.

Tanpa hardware tambahan

Tanpa hardware tambahan apapun, sudah ada beberapa program yang bisa kita buat dengan Micro bit, misalnya:

  • kompas
  • animasi LED
  • game sederhana (bisa memakai tombol dan atau accelerometer)

Jika kita memiliki dua Micro bit, keduanya bisa berkomunikasi dengan mudah, jadi bisa dibuat berbagai aplikasi misalnya:

  • Mengirimkan pesan (misalnya kode morse)
  • game multiplayer

Kurang ide? ada banyak contoh yang diberikan di website Micro bit

Hardware Tambahan

Micro bit bisa dihubungkan ke device lain dengan alligator clip, device sederhana misalnya: LED, tombol, sensor, dsb. Selain device sederhana, sudah ada beberapa kit yang dirancang agar gampang dihubungkan ke Micro bit, di antaranya:

  • Sensor cuaca
  • Mobil-mobilan
  • Robot

Jadi Micro bit berfungsi sebagai otak untuk benda-benda tersebut. Editor blok memiliki fitur Extensions, sehingga berbagai benda tersebut bisa diprogram tetap menggunakan editor blok yang resmi tanpa perlu instalasi software tambahan.

Benda yang sudah saya belikan untuk Jonathan adalah Ring bit car v2. Mobil ini cukup mudah disusun, walau agak susah membuat kedua rodanya supaya tepat lurus. Di bawah mobil ada 2 LED Neopixel yang bisa diprogram warnanya. Dengan menggunakan dua micro bit, mobilnya bisa dijadikan mobil remote control dengan satu micro bit lain sebagai controllernya. Kita juga bisa menempelkan spidol ke mobilnya supaya mobilnya bisa “menggambar”.

Perbandingan dengan board lain

Ketika membandingkan dengan board lain, kita harus memperhatikan tujuannya. Untuk tujuan mengajari anak-anak board ini sangat bagus. Untuk mengajari orang dewasa atau mahasiswa, board lain akan lebih bagus.

Harga Micro bit sekitar 250 ribu rupiah (sekitar 18 USD). Menurut saya ini tidak terlalu murah, tapi juga tidak terlalu mahal. Jika memikirkan alternatif lain, maka ada dua hal yang bisa dibandingkan:

  • Kemudahan development (termasuk juga ketersediaan library)
  • Kelengkapan hardware dan kitnya

Alternatif yang lebih murah biasanya perlu ditambah dengan banyak modul. Contoh: board Arduino UNO bisa didapat dengan sekitar 3.5 USD, ESP8266 harganya mulai 2.5 USD dan ESP32 mulai 4 USD. Tapi semua board tersebut belum ada accelerometer, magnetometer, output LED dan tombol.

Jika ingin berhemat, maka kita harus menghabiskan waktu untuk:

  • membeli modul (accelerometer + magnetometer + led) dan kabel, serta breadboard
  • menyambungkan modul
  • mencari library yang cocok untuk modul tersebut

Untuk anak-anak yang baru belajar, micro bit ini menurut saya sudah sangat bagus. Design hardware Micro bit ini open source, siapapun boleh membuat versinya sendiri. Jika ini cukup populer, maka ada kemungkinan akan ada clone yang lebih murah (seperti Arduino UNO yang banyak clone murahnya dari China).

Untuk Anda yang tidak punya PC/Laptop, mungkin Raspberry Pi lebih cocok karena sebenarnya itu merupakan komputer mini, jadi tidak butuh komputer kecuali saat instalasi. Tapi harganya Raspberry Pi lebih mahal, dan Anda perlu mempersiapkan keyboard, mouse, SD Card, dan juga layar monitor untuk dihubungkan ke Raspberry Pi.

Sebagai informasi, Raspberry juga punya versi murah yang namanya Raspberry Pi Zero (tanpa Wifi) dan Zero W (dengan Wifi). Teorinya ini harganya sangat murah (5 USD untuk Pi Zero, 10 USD untuk Pi Zero W), tapi kenyataannya ini sulit sekali dicari. Di banyak tempat hanya membolehkan kita membeli satu saja dengan harga 5 USD (jadi jika ditambah ongkos kirim, akhirnya jadi lebih mahal). Sedangkan di tempat lain, harganya dimarkup jadi sampai 20 USD.

Penutup

Micro bit ini menurut saya cukup menarik untuk mengajarkan pemrograman dasar. Dengan micro bit, programmer bisa melihat efek langsung di dunia nyata, bukan cuma di layar komputer. Harga Micro bit ini memang tidak terlalu murah, tapi alternatif lainnya juga harganya serupa atau lebih mahal.

Sebenarnya masih terbuka kesempatan membuat board yang lebih baik dan atau lebih murah. Minggu lalu saya sempat datang ke Chiang Mai Maker Club dan di sana ada pelatihan memakai board mereka, yang tidak lebih murah tapi lebih baik. Informasi mengenai board dari Thailand ini akan saya bahas di posting berikutnya.

Warna warni Mi Band 4

Bulan Maret 2019 saya mencoba dan menuliskan tentang Mi Band 3. Tadinya saya pikir saya tidak akan ganti jam lagi sampai mi bandnya rusak, tapi ternyata beberapa bulan lalu ada versi Mi Band 4 yang di release dengan beberapa fitur tambahan dari Mi Band 3, di antaranya layar berwarna dan bisa tracking untuk berenang dan dengan harga yang sama dengan harga release Mi Band 3 fiturnya juga lebih baik.

Setelah menunda-nunda dan tetap mau bertahan dengan mi band 3 saja, akhirnya jadi juga beli Mi Band 4 nya bulan September lalu karena Joe juga mau pakai Mi Band 3 nya. Setelah pemakaian beberapa bulan dengan Mi Band 4, baru deh ingat kalau belum nulis soal Mi Band 4 ini.

jadi juga beli tali warna warni

Dengan adanya display berwarna di Mi Band 4, kita bisa memilih berbagai tampilan wajah jam nya. Nah daripada cuma wajahnya yang berubah, saya akhirnya jadi juga beli tali jam warna warni nya. Tali jamnya juga gak mahal dan kebetulan kompatibel untuk Mi Band 3 dan Mi Band 4 ( jadi Joe juga bisa ganti-ganti warna tali kalau iseng). Karena ongkos kirimnya 30 baht dan harga talinya 9 baht, akhirnya kami beli 5 warna sekaligus (ongkos kirimnya sama saja kirim 1 dan 5).

Selain jadi iseng ganti-ganti warna tali dan display, kelebihan Mi Band 4 dari versi Mi Band 3 yang paling terasa itu di bagian batere tahan lebih lama beberapa hari. Klaimnya memang bisa untuk 20 hari, tapi karena saya mengaktifkan sleep tracking dan heart rate monitor, paling lama saya harus mencharge Mi Band ini sekitar 12 hari (rata-rata 10 hari kalau ingat sudah saya charge). Daya tahan batere berkurang kalau kita aktifkansleep monitoring dan heart rate monitornya.

seminggu batere masih di atas 50 persen

Heart rate detection bisa di set setiap menit sampai per 30 menit. Semakin kecil interval pengecekan, semakin cepat batere berkurang. Saya sekarang set jarak pengecekan heart rate setiap 5 menit.

Kadang-kadang punya device dengan banyak fitur, tidak selalu semua fiturnya kita aktifkan. Fitur yang paling sering saya gunakan dari mi band 4 ini antara lain:

  • memperhatikan apakah target jumlah langkah per hari sudah tercapai atau belum
  • memperhatikan pola tidur (berapa jam tidur, berapa jam tidur lelapnya)
  • memperhatikan denyut jantung rata-rata harian dan ketika tidur
  • notifikasi kalau ada panggilan masuk (karena hp saya selalu silent)
  • notifikasi message dari Joe (yang lain notifikasinya saya matikan hahaha)
  • notifikasi alarm dan calendar

Saya tahu ada banyak jenis smart band beredar sekarang ini dan masing-masing punya fitur andalannya. Saya pilih Mi Band 4 ini karena harganya tidak lebih dari 1500 baht dan fiturnya cukup untuk saya. Fitur olahraga belum pernah saya pakai. Rencananya mau kembali berolahraga sebelum 2019 berakhir hehehehe.

Mempermudah Ganti HP Android

Jaman dulu, kalau kita ganti HP, biasanya kita perlu memindahkan daftar kontak kita secara manual. Setelah HP semakin pintar, ganti HP bisa lebih mudah apalagi bila kita sudah membiasakan diri membackup berbagai data kita. Kebiasaan membuat salinan data ini merupakan kebiasaan yang baik, apalagi kalau kita mempunyai koneksi internet yang cukup cepat.

Saya sering mendapat cerita teman yang HP nya error lalu harus di reset dan semua daftar kontak hilang. Kisah lainnya teman yang pakai iphone/ipad dan mengijinkan anaknya menggunakan gadgetnya sering tanpa sengaja foto-foto di HP terhapus karena anaknya berusaha masuk dengan paksa dan otomatis menghapus data padahal belum pernah di backup. Atau aplikasi chat WA yang lupa di backup waktu ganti HP ataupun hang dan harus reinstal paksa dan mengakibatkan percakapan sebelumnya hilang.

Jaman sekarang ini, hal-hal itu sudah bisa dihindari kalau kita sinkronisasi data kita atau back up di berbagai layanan yang ada di internet, termasuk nantinya mempermudah ketika kita ganti HP. Apalagi kalau kita punya internet koneksi 24 jam, tentunya bisa kita set sinkronisasi data dilakukan ketika kita tidur misalnya.

Ada yang bilang simpan data di Internet tidak aman dan rawan kebocoran privasi. Untuk ini, ya semuanya ada plus minusnya ya, tentunya kita perlu mengamankan semua account yang kita punya. Kalau saya, karena semua foto dan notes saya gak ada konten yang sensitif, kalau cuma ketauan jadwal tiap minggu ngapain aja sih masih gak apa-apa hehehee.

Beberapa hal yang perlu diingat sebelum ganti HP Android adalah:

  • salin kontak lokal semua ke google contacts, dengan cara ini waktu kita ganti HP, kita tidak perlu mencatat ulang nomor-nomor kontak kita
  • kalau terbiasa mencatat jadwal di HP, sinkronisasi ke google Calendar. Waktu ganti HP, otomatis jadwalnya kebawa juga.
  • backup foto ke Google Photos setiap kali HP terhubung WiFi dan atau terhubung WiFi dan dicharge. Dengan cara ini kita juga bisa mengosongkan storage lokal kita ketika foto sudah di backup. Kalau mau punya backup dengan ukuran asli, bisa juga dilakukan dengan kabel data ketika terhubung ke komputer/laptop.
  • backup percakapan WhatsApp ke google drive setiap harinya. Kalau saya, saya set proses backup setiap jam 2 malam, dengan asumsi jam segitu saya lagi tidur. Kalau di backup ketika kita aktif menggunakan HP, pastinya HP akan terasa lambat sekali.
  • percakapan Telegram, semua data otomatis tersimpan di server, jadi tidak perlu di backup.
  • percakapan LINE tidak saya back up karena jarang pakai.
  • biasakan gunakan layanan yang ada loginnya dan ada fasilitas sinkronisasi data ke server, misalnya untuk notes saya gunakan color notes, ketika pindah HP, semua notes saya otomatis terbawa.
  • untuk tulisan yang lebih panjang, saya sudah terbiasa menggunakan google docs, google spreadsheet dengan menyimpan salinan lokalnya untuk mempercepat akses ketika tidak terhubung ke internet, dan nantinya akan disinkronisasi ketika terhubung ke internet.
  • untuk FB, kalau dirasa penting kita bisa juga mendownload semua data kita sesekali. Tapi saat ini saya tidak banyak mengupdate FB dan tidak merasa ada yang penting untuk dibackup, mungkin nanti dibackup kalau ada niat deaktivasi
  • berbagai aplikasi saya login menggunakan FB atau google dan datanya tersimpan di server, kalau lupa password, selalu bisa reset password hehehe
  • untuk keamanan FB dan Google account, saya pakai pengaman tambahan (google authenticator), nah untuk pengecekan pengaman tambahan ini saya perlu pindahkan secara khusus (ini saya minta tolong Joe hehehe)
  • berbagai file lain yang bukan foto dan tidak masuk kategori manapun bisa juga disimpan di dropbox

Dengan mempunyai salinan terhadap semua data kita, seandainya HP saya hilangpun (aduh jangan sampai deh), data saya semua tetap bisa dikembalikan ke HP yang baru. Mungkin akan ada yang bilang: aduh harus langganan berapa banyak tuh untuk simpan data doang. Coba aja hitung-hitung lagi, lebih penting mana kehilangan data atau langganan yang kalau dirata-ratakan perharinya gak seberapa.

Berikut ini proses menyalin data dari HP android lama ke yang baru. Ketika nyalakan HP, setelah setting bahasa dan region akan sampai ke bagian ini

copy apps dan data ketika HP baru beli di nyalakan

Selanjutnya ikuti saja langkah-langkahnya

Saya pilih yang pertama: A backup from and android phone.

Dari gambar, kalau kita tidak ingin menyalin data dari HP lama, kita bisa juga memilih “Don’t Copy”.

akan ada petunjuk membuka google app di hp lama
kita akan di minta untuk memberi perintah”set up my device”

Di HP lama, kita bisa gunakan perintah suara atau ketikkan di google search box “set up my device”, nantinya HP baru akan otomatis mengenali melalui koneksi dengan jaringan Bluetooth dan WiFi.

tekan next di hp lama dan baru
kita akan diminta mengecek apakah bentuknya sama dan klik next di hp lama

Kalau ada beberapa HP android di dekat kita, ketika kita memberi perintah suara, bisa saja HP lain menangkap perintah kita. Untuk meyakinkan kita gak salah menyalin HP, maka kita harus memberi perintah lanjut/next di HP lama yang memang kita ingin salin datanya ke HP baru.

masukkan login akun google kita

Di HP yang baru tentunya kita akan diminta untuk login menggunakan google account kita. Lalu proses menyalin aplikasi dan data dari HP lama pun dimulai.

proses menyalin data di mulai ke Hp baru
kita bisa memilih apa saja yang ingin kita salin

Proses menyalin data ini bisa dipilih, tapi karena saya ingin memindahkan semuanya, maka saya pilih semua. Dengan memilih ini bahkan sejarah telepon keluar masuk juga akan pindah. Calendar, contacts dan photo tentunya juga nantinya tidak perlu diinput ulang. Setting wifi yang sudah pernah kita simpan passwordnya juga akan otomatis terbawa.

Kalau proses ini selesai, apakah HP baru kita sudah 100 persen sama dengan HP baru? sayangnya belum, masih ada tahapan berikut yang harus dilakukan, antara lain:

  • login ulang aplikasi seperti FB, Dropbox, Telegram, Amazon, Apple Music, Grab, Coursera, Duo Lingo, Memrise dan aplikasi lainnya. Beberapa aplikasi yang login menggunakan akun google otomatis sudah bisa langsung di pakai.
  • Memindahkan WhatsApp: backup ke google drive di HP lama, lalu buka dan restore di HP baru. Hapus aplikasi WA di HP lama supaya tidak konflik lagi.
  • Memindahkan file-file di folder “download” secara manual kalau memang masih ada yang penting. Untuk hal ini bisa juga diakali menggunakan dropbox (tapi sekarang ini saya tidak menggunakan dropbox tapi simpan di chat telegram).
  • untuk aplikasi banking dan yang butuh security lebih, Joe pernah menuliskannya di sini.

Biasanya, setelah yakin aplikasi yang dipindahkan berjalan baik di HP baru, saya akan hapus aplikasinya di HP lama. Setelah 1 bulan memakai HP baru dan tidak pernah merasa butuh sesuatu dari HP lama, baru deh saya bolehkan Joe factory reset atau terserah mau dioprek apalagi hehehe. Biasanya HP lama akan dipakai Joe untuk keperluan pentest atau ya untuk cadangan kalau ada HP yang butuh di service.

Walaupun sudah dipermudah begini, saya masih merasa malas proses ganti HP. Prosesnya hanya beberapa jam, tapi ya harus dikerjakan juga untuk pemakaian beberapa tahun ke depan. Ok, semoga lain kali ganti HP jangan sampai kehilangan data penting ya.