HP Lama untuk IOT

Setelah membaca blognya pak Budi Raharjo yang mempertanyakan apakah HP lama bisa untuk IOT (Internet Of Things), saya ingin berkomentar , tapi karena panjang jadi saya tulis saja jadi posting blog tersendiri.

cimg1988

HP sudah ada cukup lama, saya memakainya sejak 1999, dan sekarang sudah ada banyak generasi HP. Generasi awal biasanya bisa dimanfaatkan sebagai modem SMS, baik menggunakan kabel data serial ataupun FBUS/MBUS. LCD Nokia tertentu (misalnya 5110) bisa dikanibal untuk menjadi display (bahkan sekarang LCD ini masih dijual di Aliexpress dan berbagai situs lain). Generasi berikutnya yang mendukung GPRS bisa dipakai menjadi modem.

Dulu sempat ada usaha juga membuat firmware alternatif untuk Nokia tertentu. Dengan firmware tersebut, teorinya kita bisa menggunakan ponsel sebagai “otak” sebuah benda iOT. Untuk ponsel berbasis TI Calypso (misalnya Motorolla C115/123/140/155, Sony Ericsson J100i) firmware dari OsmocomBB bisa digunakan (proyek ini masih aktif).

Sekilas ponsel yang mendukung J2ME bisa diprogram untuk mengendalikan benda lain via bluetooth/IR/Internet. Pada praktiknya ini sulit karena biasanya tiap kali akan melakukan koneksi, user akan ditanya dulu: boleh atau tidak. Jaman dulu sebuah aplikasi harus minta ijin user untuk melakukan koneksi apapun. Supaya bisa diset agar tidak minta ijin, kita perlu menandatangani secara digital (inipun tidak universal, signing dengan certificate dari pihak tertentu kadang hanya berlaku di beberapa merk HP saja).

Ponsel dengan OS Symbian, Palm OS (sempat ada beberapa smartphone berbasis PalmOS), Windows Mobile cukup terbuka untuk bisa diprogram melakukan apa saja. Saya dulu pernah memprogram driver untuk Windows Mobile dan tidak perlu code signing.

Ponsel dengan OS modern seperti Android dan iOS bisa dimanfaatkan dengan dua cara. Pertama ponsel bisa menjadi otak, dan pengendalian benda bisa dilakukan dengan bluetooth, WIFI, USB dan bahkan NFC. Koneksi Bluetooth iOS hanya bisa dilakukan di versi baru dengan BLE (Blutooth Low Energy) sedangkan bluetooth di Android bisa dikoneksikan ke modul hardware murah (sekitar 4 USD). Beberapa ponsel Android mendukung mode Host sehingga bisa dihubungkan ke device USB apa saja.

Pemanfaatan kedua adalah memanfaatkan sensor di ponsel (yang jumlahnya sangat banyak) dan datanya distream ke Raspberry atau benda lain. Bagian ini belum saya coba, tapi sudah ada saudara yang mencoba:

Using phone’s accelerometer x & y axis as controller #raspberrypi

A video posted by Andi Dinata (@mdinata) on

Sejujurnya: meskipun ponsel dan hardware lama masih bisa dimanfaatkan, saya lebih suka membeli hardware baru saja. Dokumentasi lebih banyak, harga juga relatif terjangkau, jadi saya tidak mengorbankan banyak waktu ataupun biaya. Tapi jika Anda punya banyak ponsel yang ingin dimanfaatkan, mungkin beberapa hal yang saya share ini bisa berguna.

Facebook Instant Articles dan Google Accelerated Mobile Pages

Akhir-akhir ini ketika membuka Facebook app mobile, semakin banyak berita atau artikel yang bisa dibaca secara instan. Ketika kita men-tap linknya, artikel langsung muncul instan di dalam aplikasi Facebook (bukan di browser). Artikel semacam ini memiliki versi Instant Articles yang disimpan oleh Facebook, dan ada simbol petir di kanan atas link untuk menunjukkan hal tersebut.

Screenshot_2016-06-15-06-53-54

Tujuan FB membuat Instant Articles adalah agar orang bisa lebih nyaman membaca artikel, dan tidak meninggalkan aplikasi FB ketika membaca artikel. Ketika Instant Articles diperkenalkan dan spesifikasinya belum dibuka untuk umum, sebagian orang sempat mengkhawatirkan bahwa ini bisa “memecah belah” web dengan artikel yang hanya bisa diakses dari FB saja. Ternyata fitur ini memakai teknologi yang terbuka.

Lanjutkan membaca “Facebook Instant Articles dan Google Accelerated Mobile Pages”

Catatan Apps: Android

Sejak jaman dulu saya suka memakai HP yang bisa diinstall aplikasi. Saya dulu bahkan membeli SL45i, HP pertama dengan J2ME. Sejak jaman dulu sudah ada banyak aplikasi saya coba baik itu di J2ME, Symbian, Blakcberry, iOS, Windows Mobile maupun Android. Tidak seperti aplikasi PC yang mudah sekali untuk kembali bernostalgia dengan DOSBox, VirtualBox dan aplikasi sejenis lainnya, agak sulit kembali mengenang aplikasi mobile yang dipakai jaman dulu. Jadi seri posting ini hanya sekedar jadi catatan aplikasi yang saya pakai sekarang untuk dikenang di masa depan.

Screenshot_2016-06-14-15-55-22

Dulu saya sangat rajin mengoprek Android, tapi sekarang lebih berfokus ke bagian securitynya (terutama pentesting, atau kadang iseng membongkar exploit seperti ini). Ngoprek yang saya maksud mulai dari mengcompile ulang kernel, mengcompile ulang aplikasi open source (dengan modifikasi saya), sampai mengcompile seluruh ROM juga (waktu dulu masih memakai Nexus).

Sekarang ini HP Android yang saya pakai ada dua: Samsung Note 4 (HP Utama), dan Android One (IQ Mobile II) untuk dioprek (misalnya bisa untuk beta test Android N). Lanjutkan membaca “Catatan Apps: Android”

Tips Android: XPosed Framework dan XPrivacy

Kalau dulu saya nulis tips soal Blackberry, gantian sekarang mau menulis soal Android. Sekarang ini saya mau tulis soal aplikasi yang menarik, tapi sepertinya nggak banyak diketahui orang.

XPosed Framework adalah framework yang memungkinkan untuk membuat (dan menjalankan) aplikasi yang bisa mengintercept API Android apapun. Ada banyak modul yang memanfaatkan framework ini, salah satunya adalah XPrivacy. Dengan XPrivacy, kita bisa memblock atau menipu aplikasi Android yang meminta akses tertentu. Aplikasi ini butuh root access, jadi Android Anda perlu bisa diroot. Perhatikan bahwa aplikasi ini hanya untuk Anda yang cukup expert bermain Android.

Saya berikan beberapa contoh kemampuan modul Xprivacy ini. Ketika sebuah aplikasi atau game meminta koneksi Internet, kita bisa bilang: sedang tidak ada koneksi internet. Ketika aplikasi berusaha mengakses SD Card, aplikasi bisa ditipu dengan menyatakan bahwa SD Card tidak dimasukkan. Aplikasi ini gratis, tapi ada fitur ekstra di Versi pro, misalnya bisa merestriksi aplikasi yang membaca contact list agar bisa membaca dari account tertentu saja. Restriksi ini bisa dilakukan permanen, atau setiap 15 detik. Misalnya kita cuma perlu akses internet sekali untuk aktivasi, kita bisa ijinkan sekali saja, lalu sisanya tidak diijinkan.

Hal yang “menyeramkan” dari Android adalah: ada banyak aplikasi yang meminta banyak permission, contohnya ini ada satu aplikasi yang “recommended” karena teman saya ada yang menginstall. Ketika tombol install ditekan:

small

(ini aplikasi game atau apaan sih?)

Dengan XPrivacy, ketika aplikasi berjalan, kita bisa memblok berbagai permintaan aplikasi tersebut. Misalnya layarnya seperti ini:

phoneid

Pertama kali kita menjalankan sebuah aplikasi, pertanyaan semacam ini akan banyak muncul, dan seminggu pertama memakai XPrivacy akan terasa mengesalkan. Tapi lama-lama jadi terbiasa juga, dan jadi tau banyak mengenai permission yang diminta oleh banyak aplikasi.

Selain untuk masalah privacy, XPrivacy ini berguna karena bisa memblok iklan. Untuk game yang jelas-jelas tidak butuh koneksi internet (misalnya game anak-anak), kita bisa blok akses internet untuk game tersebut, dan efek sampingnya adalah iklan jadi hilang (walau ada juga yang jadi menampilkan iklan default).

Banyak game yang berusaha menshare dirinya via facebook, bahkan game anak-anak. Dengan XPrivacy, kita bisa memblok aplikasi ini, sehingga jika anak tak sengaja memencet logo facebook, efeknya tidak ada.

Jonathan, PlayBook, BB10 dan Portathon

Kami mendapat PlayBook gratis pertama ketika saya mengirimkan aplikasi Contraction Counter untuk PlayBook tahun 2011. Aplikasi ini diilhami dari kesulitan menghitung kontraksi ketika Jonathan lahir (kesulitannya karena di Blackberry waktu itu belum ada aplikasinya). Ternyata dari PlayBook itu, kami menempuh perjalanan panjang bersama BlackBerry. Dengan PlayBook gratis ini saya membuat aplikasi Four Colors dan Baby Coloring Book. Baby Coloring Book-nya menang juara 2 lomba BBDevID.

Aplikasi anak-anak untuk PlayBook masih sedikit, jadi kami memutuskan membelikan Jonathan iPad. Terinspirasi dari game-game iPad, kami mulai mengembangkan game untuk anak-anak untuk Jonathan. Salah satu pendorongnya waktu itu adalah: iPad berat jadi sulit dibawa-bawa ketika keluar rumah, sementara PlayBook kecil dan ringan tapi aplikasinya kurang (ini sebelum iPad mini dirilis). Saya mulai mengembangkan aplikasi puzzle untuk Jonathan. Setelah engine utamanya selesai, Risna mulai bisa ikut membantu membuat puzzle. Sebenarnya skrip-skrip untuk membuat puzzlenya masih sulit dipakai (banyak melibatkan skrip Python, inkscape, imagemagick), tapi Risna bisa menyesuaikan diri dengan cepat.

Game anak-anak di iPad banyak yang serupa (enginenya sama), hanya beda temanya saja, dan ini sangat wajar. Misalnya untuk anak laki-laki, temanya biasanya adalah mobil, transportasi, dan untuk anak perempuan temanya adalah boneka, princess, dsb. Game yang sama juga kadang memiliki banyak edisi, misalnya edisi Natal atau Tahun Baru. Kami juga mengambil pendekatan yang sama untuk PlayBook: kami membuat banyak game dengan tema yang berbeda-beda (Construction, Fruits, Transportation, Christmas, dsb) dengan beberapa engine saja.

Ketika beberapa game sudah selesai kami buat dan terbitkan untuk PlayBook, pada saat yang tepat, RIM mengumumkan Got Game Portathon. Inti acaranya adalah: Jika kita mengirimkan aplikasi dalam kategori game untuk BB10 dalam batas waktu 36 jam yang ditentukan, maka RIM akan membayar langsung 100 USD per game. Waktu itu kami sudah memiliki game-game playbook, dan hanya perlu menyesuaikan ukuran layar BB10. Dalam event ini kami mengirimkan 12 game, dan Puji Tuhan, semuanya diterima. Setelah selesai portathon tersebut, saya ikut Blackberry Jam di Bangkok, dan pulang dari sana membawa Dev Alpha B. Device development untuk BlackBerry 10.

Ternyata RIM tidak berhenti dengan satu portathon itu saja. Mereka pun mengadakan beberapa portathon lagi (kali ini tidak hanya game): Community Portathon, Marmalade Portathon, All Aboard Portathon, Android Portathon, dan terakhir Last Chance Portathon. Kami ikut di hampir semua portathon (kecuali Android). Hasilnya lumayan, plus kami juga mendapatkan beberapa Dev Alpha lagi. Dev alpha ini akan ditukarkan dengan device BB10 versi rilis sekitar bulan Februari/Maret. Masing-masing device nilainya kira-kira 500 USD.

Kenapa RIM mengadakan portathon? Jawabannya adalah untuk meningkatkan jumlah aplikasi (kuantitas) di Blackberry World (nama baru dari Blackberry AppWorld), mereka juga mengadakan sayembara lain Blackberry 10K, garansi bahwa aplikasi yang bagus akan mendapatkan minimal 10 ribu dollar dalam setahun. Untuk BB 10K, mereka mengadakan testing ekstensif, ini untuk mengejar jumlah aplikasi berkualitas di Blackberry World. Jadi mereka berusaha meningkatkan kuantitas aplikasi dan kualitas aplikasi. Dalam portathon yang kami ikuti, kami tidak mengejar untuk ikut BB10K, karena persyaratannya cukup sulit (dan rasanya sulit diaplikasikan ke game untuk bayi).

Mungkin sebagian dari Anda mikir: RIM putus asa ya, bagi-bagi uang untuk developer?. Sebagai pengingat: dulu Google juga mengadakan lomba aplikasi terbaik untuk Android (ADC), sebelum Android diluncurkan (tepatnya ADC pertama diadakan 2 Januari 2008 sampai 14 April 2008, sementara device Android pertama diluncurkan 22 Oktober 2008), jadi pendekatan RIM ini cukup wajar untuk menambah jumlah aplikasi. Sebagai catatan juga, total hadiah yang dikeluarkan Google dalam satu acara ADC (mereka mengadakannya sudah dua kali): 5 juta dollar. Sementara RIM menghabiskan kurang dari itu (sekitar 4.2 juta dollar, total semua portathon).

Game-game saya tulis dalam Haxe (kecuali Baby Coloring Book dan Four Colors yang memakai HTML5). Karena memakai Haxe, game-game tersebut bisa dengan mudah diporting ke iOS dan Android, asalkan kami mau menyesuaikan gambar ke ukuran layarnya. Selain game, saya juga menulis beberapa aplikasi sederhana untuk BB10, yang dibuat menggunakan Cascade (C++ dengan Qt/QML). Daftar aplikasi dan game kami bisa dilihat di situs appworld.

Secara umum, development dengan BlackBerry ini sangat menyenangkan. Untuk menjadi developer tidak perlu bayar apa-apa (misalnya untuk iOS butuh 99 USD/tahun + punya Mac/Hackintosh, Android butuh 25 USD, dst), pengembangan bisa dilakukan di Mac, Windows, ataupun LInux. Orang-orang yang memakai BlackBerry umumnya mau membeli aplikasi berbayar. Walau jumlah pengguna PlayBook saat ini kurang dari sejuta orang, tapi penjualan kami di PlayBook cukup bagus. Cukup bagi Risna untuk membayar pembantu per bulan, jadi Risna bisa agak santai di rumah dan sesekali bekerja membuat aplikasi baru. Rencananya Risna tidak hanya akan merilis aplikasi game untuk anak-anak, tapi juga membuat aplikasi untuk umum (mungkin dalam 1-2 bulan ini aplikasinya akan dirilis).

Rasanya tentram membuat aplikasi untuk mobile device karena kita tidak berurusan dengan berbagai proyek (yang rawan korupsi di pemerintahan), tidak berurusan dengan client yang bawel, bisa mengatur sendiri kapan akan merilis dan mengupdate produk, dan jam kerjanya bisa kapan saja dan di mana saja.

Satu hal yang kami sayangkan adalah ketika ada orang-orang yang berniat jahat pada kami, misalnya sengaja membuat review jelek, dan ini dilakukan dengan sangat niat, misalnya ada yang mencoba menulis review jelek beberapa kali untuk game Natal, tapi berkali-kali ditolak appworld karena menggunakan kata-kata kotor, dan tiap kali dia mengedit lagi kalimatnya sedikit sampai reviewnya diterima. Kejadian semacam ini sudah terjadi cukup lama (sejak saya merilis BiblePlus juga sudah terjadi), tapi baru saya tuliskan sekarang ini. Harapannya: semoga sebagian orang-orang itu membaca dan sadar. Kami kasihan pada orang-orang itu, karena mereka sangat pathetic, menyedihkan, tidak bisa membuat apa-apa tapi berusaha merusak kerja orang lain. Biasanya orang yang bisa membuat sesuatu, tidak akan menghabiskan waktu untuk menjelek-jelekkan karya orang lain, cukup menunjukkan bahwa karya mereka lebih baik.

Saya tidak merasa software kami sempurna, tapi kami sangat senang kalau ada yang mereview jujur, atau memberi kritik membangun. Misalnya jika ada software versi lite, dan dideskripsinya ditulis: hanya 5 puzzle yang free, dan ada yang memberi satu bintang sambil bilang “jelek, cuma 5 yang gratis”, maka jelas-jelas yang mereview adalah orang yang bodoh dan patut dikasihani. Atau jika ada software puzzle untuk toddler (gratis, dalam kategori game anak-anak), dan dibilang “jelek, terlalu sederhana”, maka review semacam itu juga sama sekali tidak berguna. Oh iya, saya katakan bahwa memberi review jelek (tanpa alasan jelas) itu hal yang jahat karena biasanya pengguna akan menghindari aplikasi dengan review rendah, mereka masih lebih mencari aplikasi yang belum ada reviewnya sama sekali. Tapi lama-lama kami maklum: orang-orang itu mungkin iri karena tidak bisa membuat sesuatu sendiri, dan mungkin juga pengangguran, menghabiskan bermenit-menit sekedar untuk menyusahkan orang lain.

Sesekali saya merasa kesal kalau baru membaca review jelek seperti yang saya ceritakan di atas, tapi kadang ada juga orang yang berniat sangat baik: orang-orang itu mengemail saya dulu, menanyakan pada saya masalah yang mereka hadapi (dan setelah selesai saya bantu menyelesaikan masalahnya, mereka memberi review 5 bintang). Senang rasanya kalau menemui pengguna seperti itu.

BlackBerry 10 belum pasti sukses, tapi dari uang yang dihasilkan (plus dari portathon), cukup untuk memodali kami untuk melirik platform lain. Jika BlackBerry 10 sukses, maka kami sangat senang, jika tidak sukses, kami tetap bisa memporting aplikasi kami ke platform lain (dan sudah ada modalnya).

Menulis program Alkitab, dulu dan sekarang

Di posting ini saya ingin sedikit bernostalgia membuat program Alkitab di device Nokia 3650 yang sangat terbatas, sampai device terbaru Blackberry 10 yang sangat mudah. Isinya kebanyakan teknis pemrograman mengenai betapa sulitnya dulu membuat program Alkitab, dan betapa mudahnya sekarang membuat program Alkitab.

Warning: posting ini panjang sekali. Dan jika Anda bukan programmer, mungkin bisa dibaca singkat saja ke bagian akhir (penutup).

Lanjutkan membaca “Menulis program Alkitab, dulu dan sekarang”

Game Puzzle Mesin Konstruksi

Jonathan suka sekali bermain puzzle di iPad dan Android. iPad ukurannya besar, dan  tablet Android yang kami miliki (Asus Transformer) juga sama besarnya. Biasanya kami membawa-bawa Playbook ke mana-mana untuk hiburan Jonathan, tapi mainan puzzle anak-anak kurang banyak di Playbook. Jadi saya memutuskan untuk membuatkan game puzzle untuk Jonathan sekaligus aplikasinya dijual.

Tema yang dipilih untuk puzzle pertama ini adalah mesin konstruksi (construction machines). Salah satu alasannya karena Jonathan suka dengan mobil-mobil mainan konstruksinya yang berwarna kuning.

Game ini sudah dirilis di Blackberry Appworld. Mungkin di masa depan akan dirilis di Ipad dan Android. Versi lite (5 Puzzle) bisa di dapat di sini dan versi fullnya (20 Puzzle) bisa dibeli di sini.

Untuk Anda yang memakai desktop dengan browser yang mendukung Flash, Anda bisa melihat demonya (versi lite di): http://yohan.es/demo/construction-puzzle/ Harap sedikit sabar, karena file SWF utamanya 3 mb.

Sebelum membahas mengenai detail implementasinya, saya berikan dulu gambaran mengenai aplikasinya. Berikut ini halaman awalnya. Di sini pengguna bisa langsung menunjuk gambar puzzle yang ingin diselesaikan.

IMG_00000130

Puzzlenya beberapa jenis. Misalnya yang standar seperti puzzle biasa seperti ini:

IMG_00000145

Sebagian sedikit lebih sulit karena tidak menampilkan garis:

IMG_00000148

 

Sebagian hanya melengkapi bagian kendaraan saja:

IMG_00000112

 

Dan sebagian melengkapi bentuk dalam sebuah scene:

IMG_00000136

Gambar-gambar puzzle ini dibeli dari VectorStock. Harga sebuah vektor di VectorStock bervariasi. Untuk standard license, sebagian besar biayanya 1 USD per file (satu file bisa cuma satu gambar, bisa juga banyak gambar), dan tidak boleh digunakan di aplikasi yang dijual (aplikasi gratis boleh, website boleh). Untuk expanded license yang mengijinkan penggunaan gambar untuk produk komersial, harganya mulai dari 25 USD per file.

Saya membeli dua file expanded license untuk aplikasi ini. Biaya VectorStock ini sangat murah dibandingkan situs lain dan hal ini membuat sebagian designer/artist kesal karena VectorStock ini membuat mereka sulit bersaing dengan situs lain. Sebagai developer, saya merasa harga ini cukup fair. File yang rumit dihargai lebih mahal di VectorStock.

Untuk masalah kode program, saya menggunakan haxenme yang baru saya pelajari baru-baru ini. Haxe memungkinkan pembuatan program cross platform dari satu source code. Game ini sebenarnya jalan di Android dan iPad (juga di browser), tapi masih butuh sedikit polesan supaya sesuai dengan ukuran layar Android  dan iPad.

Secara algoritma, game puzzle yang dibuat ini sangat sederhana, yang memakan waktu adalah membuat konten puzzlenya. Puzzle dirancang menggunakan inkscape oleh saya dan Risna. Untuk memudahkan pemotongan gambar, saya menulis program dalam Python yang akan melakukan pemotongan gambar secara otomatis (berdasarkan properti objek di inkscape). Dengan tools yang sudah saya rancang, rencananya kami akan merilis lagi beberapa aplikasi puzzle dengan tema yang berbeda-beda.

Jonathan menjadi tester utama kami. Dia sudah sangat lancar memainkan berbagai jenis puzzle di tablet lain dan semua puzzle ini bisa dimainkan oleh Jonathan. Jonathan juga menemukan beberapa bug kecil yang sudah saya perbaiki. Namanya saya cantumkan di bagian about sebagai tester Smile

register

Semoga puzzle-puzzle berikutnya bisa segera menyusul.