Solid: Memisahkan Data dari Aplikasi

Siapa yang sudah pernah dengar nama “Tim Berners-Lee”? Kalau Anda belum tahu, silahkan Google dahulu. Ya, dia adalah “penemu” – kalau dapat disebut penemu karena sebetulnya lebih cocok disebut “pengembang” – dari World Wide Web (WWW). Saya mengenal beliau sejak pertama kali WWW dikembangkan karena kebetulan. Kebetulan saya “terpaksa” menggunakan workstation NeXT dan kebetulan juga Tim Berners- Lee menggunakan NeXT workstation ketika mengembangkan WWW. (Mestinya saya cerita tentang hal ini ya? Panjang. Jadi saya tunda ya.)

Baru-baru ini Tim Berners-Lee mengusung sebuah ide baru yang disebut Solid. Apa itu Solid? Terpaksa saya membaca sana sini karena informasinya masih sangat minim. Solid adalah sebuah konsep (platform?) untuk mengembangkan aplikasi dengan memisahkan data dari aplikasi. Mengapa pemisahan ini penting?

Saat ini ketika kita menggunakan sebuah aplikasi (misalnya aplikasi untuk handphone Android kita), maka aplikasi tersebut membutuhkan informasi mengenai Anda sebagai penggunanya. Aplikasi tersebut akan meminta identitas Anda, nama, alamat email, dan seterusnya. Bahkan untuk aplikasi yang bersifat transaksional, aplikasi tersebut akan meminta nomor rekening Anda.

Ketika Anda memasang aplikasi yang lain lagi, maka proses di atas terulang kembali. Anda harus memasukkan data Anda lagi, lagi, dan lagi. Akibatnya adalah ada banyak data Anda yang tercecer dimana-mana. Di setiap aplikasi ada data Anda. Anda tidak tahu data apa saja yang disimpan di sana. Yang mengerikan lagi adalah kalau data Anda itu berada di berbagai penyedia layanan tersebut. Pokoknya kita sudah tidak dapat mengendalikan data (pribadi) kita lagi. Solid mencoba memecahkan masalah tersebut.

Pada Solid, data kita ditempatkan pada sebuah Pod (namanya itu). Aplikasi yang membutuhkan data kita akan mengakses Pod tersebut. Kita dapat memilah-milah mana yang akan kita berikan akses (atau kita cabut aksesnya). Data akan berada di satu tempat. Memudahkan kita untuk mengelolanya.

Nah, bagaimana cara mengembangkan aplikasi yang berbasis Solid ini? Itu saya juga belum tahu. Ha ha ha. Mari kita belajar bersama.

Apa Itu Internet of Things (IoT)?

Belakangan ini mungkin Anda sering mendengar kata IoT – Internet of Things. Apalagi dengan ramainya istilah industri 4.0, semakin banyak orang berbicara tentang bagaimana cara menghubungkan dunia nyata (fisik) dengan dunia siber (cyber). Apa itu IoT?

Ada dua kata dalam Internet of Things, yaitu “Internet” dan “Things”. Kita mulai dari kata keduanya dahulu, “things”. Apa itu “things”?

Terjemahan langsung dari kata “things” adalah “barang” atau “benda”. Dalam istilah ini yang dimaksudkan dengan barang adalah … ya apa saya, barang-barang. Maksud lebih spesifiknya lagi adalah barang yang dapat kita program. Kalau dahulu, barang atau benda yang dapat diprogram adalah komputer. Namun sekarang sudah banyak benda lain yang dapat diprogram. Handphone kita juga dapat diprogram. Microwave di dapur kita juga dapat diprogram. Mesin cuci juga dapat diprogram, meskipun barang-barang yang terakhir saya sebutkan di sini memiliki pemrograman yang terbatas.

Dalam istilah IoT, yang dimaksudkan barang adalah semua barang. Keberadaan komponen mikroprosesor dan mikrokontroler yang semakin kecil dan semakin murah membuat semua benda dapat diprogram.

Kata kedua adalah “internet”. Yang dimaksud dengan “internet” di sini adalah jaringan komputer. Boleh jadi jaringan komputer ini adalah “internet” yang kita kenal sekarang, tetapi boleh juga jaringan internal (misal berbasis Bluetooth).

Benda yang dapat diprogram sudah cukup menarik, tetapi mereka berdiri sendiri. Begitu mereka dapat diakses melalui sebuah jaringan maka benda tersebut dapat mengirimkan data ke tempat lain. Mereka juga dapat dikendalikan (dapat diprogram) dari jarak jauh.

Gabungan kedua kata tersebut – Internet of Things – bermakna benda-benda yang dapat diprogram dan terhubung melalui jaringan.

Contoh-contoh IoT ada banyak. Dalam kehidupan sehari-hari yang sudah sering kita lihat adalah smart watch, jam yang bukan hanya dapat menunjukkan waktu saja tetapi dapat juga memantau kondisi fisik kita; berapa jarak jalan kaki kita, denyut jantung, dan seterusnya. Hasilnya dapat dilaporkan melalui Bluetooth ke handphone dan dapat langsung terlihat di internet. Selain ini masih banyak contoh-contoh lainnya.

Lomba Pemrograman (IoT)

Internet of Things (IoT) sedang ramai dibicarakan. Salah satu pemanfaatan yang paling mudah dilakukan dengan IoT adalah untuk memantau temperatur, kelembaban, dan hal-hal yang terkait dengan lingkungan (cuaca? weather).

Di Bandung, kami sudah memasang beberapa (banyal) sensor yang terkait dengan cuaca ini. Weather sensors. Target awalnya adalah tersedia 150 sensor yang tersebar di kota Bandung. Data dari sensor-sensor tersebut kami kumpulkan dalam sebuah basis data. Nah, sekarang data tersebut kami buka.

Kami mengajak semua untuk mengembangkan aplikasi terkait dengan data cuaca tersebut dalam sebuah lomba. HackBDGWeather. Hackathon ini sekarang sudah dibuka dan kami menunggu proposal-proposal (ide-ide) dari Anda sekali. Silahkan kunjungi situs webnya di

https://hackathon.cbn.id


Ayo ramaikan. Kami tunggu proposalnya ya. Ditunggu sampai tanggal 15 Januari 2019.

Source Code Versioning & Security

Dalam kuliah “Software Security” yang saya ajarkan minggu lalu, kami berdiskusi mengenai topik “source code versioning” dan “security“. Apa kaitannya keduanya? Adakah kaitannya?

Source code versioning adalah sebuah kegiatan dalam pengembangan perangkat lunak. Pada awalnya pengembangan perangkat lunak dilakukan secara serampangan. Tidak ada metodologi. Pokoknya asal jadi saja. Salah satu masalah yang muncul adalah ketidakjelasan versi yang digunakan. Misal, di sistem produksi ada masalah dengan perangkat lunaknya. Dia menggunakan versi 1.1. Sementara itu di bagian pengembangan, perangkat lunaknya sudah sampai ke versi 1.7. Agak sulit menentukan masalah karena ada perbedaan versi. Masalah lain juga dapat terjadi ketika terjadi upgrade. Misal, perangkat lunak dari versi 1.1 diperbaharui menjadi versi 1.3 kemudian diperbaharui lagi ke versi 1.7. Ternyata ada masalah di versi 1.7, maka perangkat lunak harus dikembalikan ke versi sebelumnya. Tanpa menggunakan versioning, ini akan sulit dilakukan.

Saat ini ada banyak sistem source code versioning ini. Yang paling terkenal saat ini adalah Git.

Mari kita sekarang membahas topik utamanya; hubungan antara code versioning ini dengan security. Dalam diskusi yang kami lakukan, kami belum menemukan hubungan atau alasan yang dapat diterima dengan mudah bahwa code versioning itu mendukung security. Yang kami temukan adalah alur seperti ini:

Pengembangan perangkat lunak sangat disarankan (harus?) menggunakan code versioning. Karena code versioning ini digunakan, maka hal-hal yang terkait dengan itu harus aman (secure). Kendali-kendali keamanan apa saja yang sudah diterapkan?

Itu yang baru dapat kami utarakan.

Mengajar(i) Data Science

Kemarin (Senin) adalah sesi kedua dari acara “Data Science with Python”, yang kami adakan di Bandung Digital Valey (BDV). Pada acara ini kami mengajari penggunaan Python untuk Data Science.

Apa itu Data Science? Masih belum ada jawaban yang dianggap sebagai definisi formal dari “data science”. Definisi yang paling “dekat” dan yang paling banyak digunakan adalah penjelasan dari Drew Conway. Pada intinya Data Science adalah gabungan dari kemampuan komputasi (hacking skill), matematika (statistik), dan pemahaman atas masalah yang akan diteliti (domain problem).

Pada pertemuan pertama, Senin sebelumnya, kami melakukan persiapan-persiapan dahulu yaitu memasang Python beserta modul-modul (library) terkait. Ternyata ini tidak mudah karena ada banyak versi dan konfigurasi. Python sendiri ada versi 2 dan 3. Kali ini kami fokus ke versi 3 (meskipun saya pribadi masih banyak mengunakan versi 2). Sistem operasi yang digunakan peserta juga bervariasi; Mac OS X, Linux, dan Windows. Masing-masing juga konfigurasinya beda-beda. Jadi intinya adalah … pusing.

Selain tools, kami mulai menggunakan tools tersebut untuk melakukan sedikit operasi statistik, yaitu linear regression. Ini kemudian menjadi pekerjaan rumah karena waktunya yang tidak cukup.

Nah, kemarin topik ini dilanjutkan. Setelah membahas PR tentang linear regression, kami kemudian maju lagi ke topik baru. Kali ini yang kami lakukan adalah memproses data log dari web server dan mengambil data yang ada dalam request kepada web server tersebut. Data ini harus diproses (parsing) dan kemudian akhirnya dimasukkan ke Pandas, sebuah kumpulan tools Python untuk pemrosesan data.

Cerita teknisnya menyusul ya.

Mencari Developer Software

Beberapa waktu yang lalu saya menghadiri acara Bekraf yang diorganisir oleh Dicoding di Bandung. Acara ini mengumpulkan developer software (pengembang aplikasi) di kota Bandung dan diberikan berbagai pengetahuan (seminar, training). Berikut ini adalah contoh foto yang hadir. Banyak! Lebih dari 1000 orang!

DSC_0217_0001

Namun yang menjadi masalah adalah ketika saya mencari developer, ternyata kesulitan. Sebetulnya mereka ada dimana? Ini adalah sebuah paradoks; katanya banyak SDM yang mencari pekerjaan tetapi ada banyak perusahaan yang kesulitan mencari SDM.

Saya mendapat permintaan untuk programmer dan support (untuk berbagai jenis software baik yang sudah kadaluwarsa maupun yang masih baru). Akhir-akhir ini malahan dapat permintaan tiap minggu! Nah, apakah perlu saya tanggapi permintaan-permintaan ini dengan lebih serius? Dahulu kami memang pernah memiliki perusahaan outsourcing seperti yang dimaksudkan, tetapi sekarang para pengembangnya sudah tersebar. (Ada yang pindah ke luar kota, mengambil kuliah di luar negeri, menjadi freelancer, membuat perusahaan sendiri, atau menjadi bagian dari perusahaan kami lainnya.) Nah, perlukah kami membuat kembali perusahaan ini?

Potensi Aplikasi Mobile di Indonesia

Banyaknya pengguna handphone di Indonesia merupakan kesempatan untuk mengembangkan aplikasi-aplikasi mobile. Namun jika kita lihat, kesempatan ini belum dimanfaatkan oleh pengembang aplikasi mobile di Indonesia. Coba kita lihat daftar aplikasi yang paling populer.

  1. Daftar aplikasi terpopuler di Indonesia dari Google Playstore
  2. Daftar aplikasi terpopuler di Indonesia dari Apple Store

Dari daftar tersebut dapat kita lihat bahwa aplikasi mobile yang populer kebanyakan (hampir semua malahan) tidak dikembangkan oleh pengembang dari Indonesia. Walah.

Jika kita teliti lebih lanjut, aplikasi-aplikasi yang populer dari pengembang Indonesia biasanya terkait dengan bisnis pemilik aplikasi tersebut. Sebagai contoh, aplikasi Tokopedia merupakan pendukung dari market place Tokopedia. Demikian pula dengan Bukalapak, Go-jek, MyTelkomsel, dan seterusnya. Tidak ada aplikasi yang berdiri sendiri sebagai aplikasi.

Hal yang menarik lainnya adalah pasar aplikasi mobile di luar negeri didominasi oleh Games. Di Indonesia, meskipun sudah banyak yang berusaha, pasar ini malah belum barhasil dikuasai.

Hasil berbincang-bincang dengan berbagai pengembang aplikasi mobile, kebanyakan mereka mengembangkan aplikasi sesuai dengan kebutuhan klien. Misal ada klien yang berupa sebuah perusahaan yang minta dibuatkan aplikasi, maka aplikasinya ya memang khas untuk perusahaan tersebut, bukan untuk umum.

Jadi bagaimana masa depan pengembang aplikasi mobile di Indonesia?