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.

Lanjutkan membaca “Tips Android: XPosed Framework dan XPrivacy”

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.

Aplikasi Mobile (untuk developer)

Ada beberapa yang baru mulai akan belajar mobile development, dan bertanya ke saya: saya harus belajar teknologi yang mana? Sayangnya pertanyaan ini sulit dijawab, karena menurut saya jawabannya adalah “tergantung”. Tergantung waktu Anda, dana Anda, dan risiko yang ingin Anda ambil. Saya akan coba enumerasi satu persatu teknologi yang ada. Saat ini ada teknologi yang “common” bagi semua, yaitu HTML, ini akan saya bahas terakhir.

Pertama Anda bisa belajar Objective C untuk memprogram iOS (iPod Touch, iPhone, iPad). Ini adalah OS mobile yang paling menjanjikan (dalam hal keuntungan materi). Ratusan orang sudah mendapatkan jutaan dollar, ribuan developer mendapatkan ratusan ribu dollar. Tapi perlu dicatat juga: puluhan ribu developer lain tidak mendapat apa-apa, atau mendapat uang yang sedikit sekali. Anda perlu investasi hardware yang cukup mahal, dan jika ingin aplikasinya selalu teruji di hardware terbaru, Anda perlu membeli hardware baru setiap kali ada versi iPhone/iPad yang muncul. Pemrograman harus dilakukan di OS X. Artinya harus berinvestasi uang untuk membeli MacBook atau iMac (atau investasi waktu mengoprek Hackintosh sampai berjalan dengan baik).

Jika Anda menguasai objective C, ilmunya (sebagian) bisa dipakai untuk mengembangkan aplikasi desktop di OS X juga, tapi secara umum, pasar untuk aplikasi desktop Apple jauh dibawah aplikasi mobile Apple. Sebenarnya selain Objective C, ada yang namanya MonoTouch, Anda bisa memprogram iOS menggunakan .NET (aplikasi ini berbayar, jadi investasi ekstra lagi).
Lanjutkan membaca “Aplikasi Mobile (untuk developer)”

Aplikasi Mobile

Saya bukan expert dalam hal aplikasi mobile, walaupun sudah membuat beberapa aplikasi untuk J2ME, Symbian, BlackBerry, dan Android. Karena banyak teman-teman yang bertanya mengenai dunia mobile, saya akan mencoba menceritakan situasi dunia mobile saat ini. Biasanya pertanyaannya adalah “HP yang mana yang harus saya beli” (ini biasanya end user), dan “teknologi mana yang harus saya pelajari” (ini developer).

Saya tidak akan bercerita panjang lebar mengenai sejarah mobile, langsung lompat ke saat ini. Posting ini juga hanya berisi informasi untuk end-user, rencananya saya akan membuat posting lagi untuk developer (bahasa apa yang dipakai, bagimana marketnya, dsb).

Lanjutkan membaca “Aplikasi Mobile”