Monday 19 March 2012

Expanding Your Market!

Hai hai, saya ingin nge-share tentang pengalamanku mengeksplorasi market di internet, especially Android.

Alkisah dua orang pria yang kurang kerjaan sebut saja Gogo dan Rhesa (bukan homo-an, masih jomblo, dan masih mencari cewek cantik) memutuskan untuk merealisasikan aplikasi yang awalnya digunakan untuk tugas kuliah. Aplikasi ini disebut Sound Scheduler. In a nut shell, aplikasi ini adalah sebuah aplikasi untuk mencocokkan volume HP dengan jadwal anda. Let's say anda sedang kuliah, tentunya sudah memiliki jadwal yang jelas. Bayangkan apabila anda ditengah kelas dimana dosen anda ada adalah seorang Avatime, Avatar of Time, The Time Bender, dimana dia bisa membuat 5 menit terasa seperti 2 tahun. Anda mungkin tergoda untuk main game ditengah kelas itu (mohon jangan dipraktekkan karena bahaya nilai E). Dan saat anda mulai main game, tiba-tiba BGM anda menyala dengan sangat keras. Tet Tot Tet Tot Tet Tot. That awkward moment when you play game in the class and you forgot to turn the volume off. Aplikasi ini bertujuan untuk mencegah awkward moment tersebut. Bagaimana caranya? Ya, dengan menjadwalkannnya terlebih dahulu.

Promotion banner. Tidak terlalu menarik akibat skill Photoshop saya yang pas-pasan

Jadwal! Hal yang paling penting dalam aplikasi ini. Perhatikan bahwa UI aplikasi ini mirip sekali dengan Alarm bawaan Android yang diproduksi oleh Samsung. 

Fitur. Sangat sederhana. Kalau dihitung-hitung aplikasi ini dibuat dalam 5 hari efektif dan 1 minggu testing.

Kami sudah mencoba me-research market di Android. Kita melihat aplikasi-aplikasi sejenis tidak memiliki UI yang memuaskan. Beberapa aplikasi tidak memiliki fitur ini dan beberapa aplikasi sudah kelewat kompleks. Aplikasi yang bagus harganya 2-5 USD (yang sudah kita coba dengan teknik pirating a'la Bang Google).

Dengan bekal sedikit market research dan UI dan fungsional yang straightforward, kami membuat dua model bisnis. Model pertama adalah free + ads + trial. Model ini saya anggap cukup annoying dimana anda diperbolehkan menggunakan aplikasi ini secara gratis apabila anda bersedia menerima ads yang annoying (by LeadBolt), atau anda bisa menggunakan aplikasi ini secara cuma-cuma selama 2 minggu tanpa ads. Model kedua adalah paid apps. Sebenarnya target dari dari pembuatan model ini adalah pembelajaran. Target saya adalah "Given enough customer, what's the best model to produce most income?" Bagaimana saya punya kepercayaan pada enough customer? Karena saya percaya dengan mengiklankan Sound Scheduler di Manga Mobile saya akan mendapatkan customer yang cukup. Tampaknya dugaan saya salah besar!

Hari pertama download count pada Manga Mobile berjumlah 55, dan dihari-hari selanjutnya bertambah dengan grafik yang lumayan bagus menurut saya. Download count pada Ace Core lebih mengerikan lagi, 500 pada hari pertama (Nokia memang memiliki user base yang fearsome). Namun untuk Sound Scheduler, grafik ini sangatlah tidak memuaskan. Satu download pada hari pertama, 4 download pada hari kedua dan tidak bertambah pada hari-hari selanjutnya. Terang saja hal ini sangat mengecewakan saya dan Rhesa.

Perkembangan download Manga Mobile dari masa ke masa

Saya melakukan research pribadi disela-sela waktu break ngoding dan tidur. Dulu, Android Market memiliki kategori Just In, dimana semua aplikasi yang baru di-publish di Android Market akan masuk kedalam kategori ini. Tentu saja keberadaan kategori ini mengunutngkan developer-developer cupu dan hina macam saya. Dan Manga Mobile dipublish saat kategori Just In ini masih ada. Namun kategori ini dihilangkan karena sering di-abuse oleh spammer yang memasukkan aplikasi sembarangan secara sembarangan.

Setelah mendapat fakta ini saya mulai mencari-cari: Bagaimana cara memasarkan aplikasi Android baru saya padahal saya tidak punya nama dan tidak punya uang? Apalagi saya adalah orang yang tergolong anti-sosial, not the marketing type banget lah (based on true story). Ilmu Googling dan Bing saya lakukan. Ada beberapa cara yang saya ingat:
  1. Ads: umum sekali, dengan iklan maka banyak chance dapat customer. Saya skip bagian ini karena perlu membayar.
  2. Masukkan ke review website: ada beberapa website seperti AppBrain dan AppTap yang sering dikunjungi oleh pengguna Android untuk mendapatkan aplikasi-aplikasi Android yang terbaik versi mereka. Saya menganalogikan hal ini dengan award pada dunia permusikan yang jumlahnya banyak (Grammy, MTV, dll, dsb). Bila kita di-review oleh website ini, maka kita dapat muncul di Home Page dari website mereka. Tentunya hal ini akan meningkatkan visibilitas kita terhadap customer. Saya mencoba cara ini dan sampai saat ini aplikasi saya belum mendapat review dari mereka.
  3. Post di forum: Forum-forum pengguna Android itu banyak jumlahnya. Banyak diantara pengguna forum itu juga adalah seorang developer. Mereka kadang memasarkan barang-barang mereka disana dengan membuka sebuah thread dan memberikan review singkat mengenai aplikasi mereka. Anggap sajalah kita berjualan aplikasi di Kaskus. Saya tidak menggunakan cara ini tanpa alasan khusus. Mungkin karena saya malas berkomunikai dengan manusia jadi saya tidak menggunakan cara ini.
  4. Masukkan ke banyak market: Cara ini adalah cara yang akan saya tekankan pada artikel ini. Ada banyak Android Market selain yang dimiliki oleh Google seperti Amazon Appstore, AppBrain, SlideMe, Motorola Shop4Apps, AppChina, Mobango dan lain sebagainya yang bertujuan untuk membuat market alternatif untuk developer yang mungkin merasa Android Market itu tidak memuaskan. Ada juga Android Market buatan Indonesia seperti Indosat iStore yang saya rasa belum cukup berkembang dan seolah dibuat setengah hati. Cara ini saya lakukan cukup intensif.
Sebenarnya saya sudah ditawari oleh beberapa website ini untuk memasarkan aplikasi saya di market mereka. Jadi saya memulai perjalanan saya dengan mengecek email-email terdahulu. Yang paling pertama dan paling menarik adalah AppChina.

AppChina adalah Android Market untuk China. Konon katanya Android Market milik Google tidak bisa dipasarkan di China sehingga perlu ada pihak ketiga yang memasarkan disana. Untuk memasarkan di website ini, saya tidak perlu berusaha. Ada seorang penggemar aplikasi Manga Mobile dan memutuskan untuk memasarkan aplikasi saya disana.



Apa yang menarik dari aplikasi ini. Pertama, bukan saya yang mengupload aplikasi ini di AppChina. Kedua, orang yang meng-upload aplikasi ini mentranslasikan deskripsi Manga Mobile dan menambahkan screenshot yang berbeda dari yang saya gunakan dari apa yang saya upload di Android Market. Deskripsi hasil translasi ini pun sedikit berbeda dengan apa yang saya gunakan di Android Market. Hal ini menurut saya sungguh mengejutkan, menarik dan exhilarating. Sayangnya saya tidak berhasil menghubungi AppChina untuk mencoba mengupload Sound Scheduler disana.

Kedua saya mencoba Motorola. Singkat saja, tempat ini cukup menyulitkan. Saya bahkan tidak pernah menemukan dimana itu Shop4Apps. Saya juga diwajibkan menggunakan advertisement yang disarankan Motorola dengan nama Amobee. Aplikasi yang saya berhasil upload pun tidak memiliki download satupun.

Lalu saya melirik market Android yang besar yang lain: Amazon AppStore. Disini hal yang menarik hati saya adalah fitur "New Free Apps of The Day." Dengan fitur ini developer bisa berharap untuk dapat mengupload aplikasinya dan dipromosikan oleh Amazon di home pagenya. Namun ternyata "bermain" di Amazon AppStore tidak semudah itu. Amazon AppStore memiliki sistem review yang lambat. Aplikasi Manga Mobile saya belum lulus review sampai saat ini. Sound Scheduler saya yang hanya terdiri dari dua form di-review selama satu minggu. Dan Sound Scheduler di Amazon AppStore sampai saat ini belum di-download.

Amazon AppStore dan fitur "New Apps of the Day"-nya


Kembali saya mengeksplorasi market-market yang ada. Kali ini saya tertarik dengan Mobango yang juga pernah menawari saya untuk mempromosikan aplikasi saya disana via email. Saya coba mendaftar disana dan cukup senang dengan hasilnya. Proses review aplikasi di Mobango hanya memakan waktu kurang dari 12 jam dan aplikasi anda bisa langsung live di Mobango. Mobango memiliki fitur yang memamerkan aplikasi yang baru saja dipublish disana, namun tidak eksplisit. Dan anehnya download count Manga Mobile dan Sound Scheduler bisa mencapai 9 masing-masing dalam waktu 3 hari. Saya yang sudah pesimis dengan segala macam market yang ada di internet kontan cukup senang dengan hasil ini.

Tampilan Mobango yang tidak terlalu menarik

Manga Mobile dan Sound Scheduler di Mobango

Terakhir ini, tepatnya kemarin, saya menguji satu market yang entah saya dapatkan dari mana. Nama market ini adalah SlideMe. Pada home page-nya SlideMe, aplikasi-aplikasi baru langsung dipamerkan disana. Hal ini sangat menggoda saya dan saya langsung mencoba meng-upload aplikasi saya disana. Sesuai dugaan, hasilnya memuaskan. Aplikasi saya di-review dalam 3 jam dan dalam 1 hari sudah mendapat download count sebanyak 30 untuk Sound Scheduler dan 60 untuk Manga Mobile. Hal ini sangat menarik dimana saya tidak pernah mendengar tentang SlideMe sebelumnya padahal SlideMe memfasilitasi pemasaran yang cukup bagus.

Tampilan SlideMe yang lumayan bagus

Hasil Manga Mobile dan Sound Scheduler di SlideMe

To sum it up, review saya untuk Android Market yang ada diinternet saat ini:
  1. Google Android Market: wajib! Pusat dari aplikasi Android adalah disini. Anggap saja kalau aplikasi anda belum masuk sini itu belum afdol. Market ini tidak memiliki sistem review jadi bisa dibilang adalah market termudah untuk mengupload aplikasi.
  2. AppChina: kalau bisa Bahasa Cina (cincau, bakpau, cepek, gopek, nopek, bakso) go for it. Download count dari market ini lumayan. Tapi berharap saja ada orang baik hati yang mau menguploadkan aplikasi anda kesini.
  3. Shop4Apps. definitely NO. Selain proses review yang cukup lama (sekitar 3 hari), anda harus mengupload dalam 2 format (Inggris dan Cina) yang cukup merepotkan. Hasilnya pun belum saya lihat hingga detik ini.
  4. Amazon AppStore. NO. Banyak review jelek tentang Amazon AppStore dan saya telah membuktikan bahwa hal itu ada benarnya. Saya mungkin akan mengganti opini saya apabila aplikasi saya masuk dalam  "New Free Apps of The Day" namun sampai saat ini opini saya adalah: NO.
  5. Mobango: bagus. Karena sedikitnya aplikasi yang diupload disini, maka kemungkinan aplikasi anda untuk eksis disini cukup tinggi. Walau tidak memiliki fitur new application namun Mobango membuktikan bahwa ia cukup digunakan.
  6. SlideMe: definitely. Dengan jumlah aplikasi yang sedikit, sedikit sistem review untuk mencegah spam (sotoy) dan memamerkan new application, SlideMe mendapat bintang 5 dalam hati saya.
So, what do you think? Ada saran bagaimana bisa mem-boost visibility kita dan aplikasi kita dimata pengguna Android? Mohon sarannya master :)

Sunday 4 March 2012

Manga Mobile Coding Series : Membajak mangareader.net part 2

Asyik bisa nulis lagi. Sebelumnya kita telah membahas logika dibalik teknik pembajakan Mangareader. Kali ini saya akan membahas secara teknis bagaimana implementasinya di Android.

Kembali saya ingatkan: untuk bisa mengerti dengan sepenuhnya apa yang dibahas di artikel ini, anda perlu mengenal beberapa hal yang tidak dibahas di artikel ini:
  1. DOM (Document Object Model)
  2. Manga :)
Android dapat mengunduh isi halaman HTML dengan mudah. Tetapi hasil unduhan ini adalah sebuah string panjang. Lalu bagaimana kita bisa mengeksekusi logika "temukan anak pertama dari tag ul"? Ada beberapa cara seperti berikut:
  1. Lakukan manipulasi string. Kita membuat asumsi bahwa ul ini pasti punya anak. Sehingga kita dapat mencari karakter "<" pertama yang mengawali sebuah tag HTML dan menandai karakter tersebut menjadi karakter pertama dari anak yang kita cari. Lalu kita tinggal mencari ">" yang sesuai dan menandai karakter tersebut menjadi karakter terakhir dari anak yang kita cari. Dari sini kita dapat menyalin karakter-karakter diantara karakter yang telah kita tandai tersebut dan jadilah mereka sebagai string anak pertama yang kita cari. Ada permasalahan dari sini? Banyak: sangat rentan bug dan sangat tidak fleksibel.
  2. Gunakan XML Parser.
  3. Gunakan 3rd party library untuk membuat DOM.
Saya akan membahas cara terakhir (yang kebetulan saya gunakan). Dan perlu diketahui, sebenarnya membuat DOM tidak perlu menggunakan 3rd party library karena sepertinya Android sudah memilikinya. Namun saya terlanjur menggunakan 3rd party library dan malas untuk menggantinya (maaf).

Perkenalkan Jsoup (halo Jsoup, saya Gogo), library pembuat DOM yang saya gunakan. Fitur-fitur yang bisa dilakukan oleh library ini silakan dilihat di website nya. Yang penting, si Jsoup ini menyediakan beberapa hal yang berguna untuk saya:
  1. kemampuan untuk membuat DOM
  2. kemampuan untuk memanipulasi dan mencari elemen dalam DOM
  3. kemampuan untuk mencari elemen spesifik berdasarkan tag, class, id, name, dan href atribut lainnya.
  4. kemampuan untuk mencari bapak dan anak dari suatu elemen.
Sebenarnya fungsi 2 hingga 4 adalah fitur yang wajib ada untuk sebuah library yang mengaku bisa membuat DOM, jadi fungsi utama library ini sebenarnya hanya 1.

Jadi tanpa banyak cakap, inilah kodenya:


public ArrayList downloadMangaList() {
    ArrayList mangaList = new ArrayList();
    String url = Utilities.MANGAREADER_URL + "/alphabetical";

    boolean gagal = true;
    int attempt = 0;

    while (gagal && attempt < Utilities.DOWNLOAD_ATTEMPT) {
        try {
            Log.i("Manga", "trying to connect to " + url);
            Document soup = Jsoup.connect(url).get();
            gagal = false;

            // lewat sini means berhasil konek
            Elements links = soup.select("ul[class=series_alpha]");

            for (Element link : links){
                Elements mangaLinks = link.getElementsByTag("a");
                for (Element manga : mangaLinks){
                    mangaList.add(new Manga(manga.text(), Utilities.MANGAREADER_URL + manga.attr("href")));
                }
            }

        } catch (IOException ex){
            Log.i("Manga", "" + ex.getMessage());
            ++attempt;
        }
    }

    return mangaList;
}



Kode diatas adalah contoh bagaimana saya mendapatkan kumpulan manga yang ada di Manga Reader. Yang pertama saya lakukan adalah mengunduh page www.mangareader.net/alphabetical dimana pada page itu, semua manga yang ada di Manga Reader dituliskan. Saya mengunduhnya menggunakan Jsoup.connect(url).get()agar HTML yang diunduh ini sudah terformat dengan baik oleh JSoup. Hal ini saya lakukan berkali-kali in case pengguna menggunakan koneksi yang abal-abal sehingga page HTML-nya jadi tidak terunduh.

Langkah kedua adalah pattern matching. Ya, dengan sedikit pengamatan kita dapat melihat bahwa page HTML yang dibuat oleh Manga Reader ini cukup ber-pola. Tiap manga selalu dibungkus dalam alphabet yang mengawalinya (Naruto berarti N). Dan tiap alphabet itu dibungkus dalam satu elemen HTML yaitu 
<ul> , dan selalu memiliki class=series_alpha. Gambar berikut mungkin bisa lebih menjelaskan.

      HTML dari www.mangareader.net/alphabetical
Dari sini kita tinggal mengambil semua elemen yang memiliki class=series_alpha, lalu mencari semua URL yang ada didalamnya. Cara ini tidak foolproof, tapi cukup untuk mendapatkan apa yang kita butuhkan.

That's it! Semudah itu kita "membajak" Manga Reader. Tinggal melakukan hal yang sama pada page-page yang lain dan kita dapat membuat software untuk pengunduh manga dengan mudah. Cara ini juga dapat diaplikasikan pada manga source lain seperti GoodManga, MangaHere, AnimeA dan lain-lain. Namun beberapa manga source seperti MangaStream dan Batoto sering mengganti pola menampilkan halamannya dan membuat mereka susah di-scrapping.

What do you think? Ada yang mau membantu saya membuat manga downloader dengan membuat pola-pola seperti ini?

Who inspired me the most?

Just read a random tweet by my friend about "Who make me who I'm now?". So I narrow down to a question: were I to be asked "Who inspired you the most?", who are they? Hey to my surprise, I can answer that!

  1. Father: "A father is every son first hero" And for me he's still one.
  2. Mom: A mom will always be a supermom for her children. Her endurance when  faced with problems, is most remarkable.
  3. My  : His willpower, his concentration and his knowledge used to be by far if not the most, greatest of any people I've ever known. And I would like to emphasize the "used to" part.
  4. My  : could say a copy of my mother. She always complain but always did what she must,  remarkably. A real-life manifestation of tsundere? Though I never saw her "dere" side.
  5. Dhiksta Olya Widyasmara: His kindness is one of those you can only see in fairy tale. I used to tease my sister (he's my step-brother-to-be) about him being a being from a fairy tale. And apparently, that might not be too far away from the truth.
  6. Yosua Michael Maranatha: Only one word describe him. Genius. I always thought he's a being from the future as he's too awesome to be true.
  7. Arif Ramasiwi: "Wise" is a not-so-exaggerating-word to describe him. His wisdom and words were the one who made me realize the importance of friends.
  8. Ayasaki Hayate: Sleeping for only 2 hours a day and dedicate the rest of his time for others inspires me the most. I know he's fictional character. But hey, I know of someone who's quite fictional himself!
I think this list will always increase in time since I have this ability of knowing-someone-good-points-no-matter-what-shitty-broken-person-he-is I learned from Arif Ramasiwi. Well just like Einstein said, basically everyone is a genius in their own way. We just have to see the fish while swimming in the water, not while climbing a tree.

And why bother making the list? Maybe so I don't lose my track in life? And everyone who know me and know them and read this blog entry can remind me who should I become and what I'm lacking.

Who inspires you the most? Don't forget to thank them as they might be the one who make you who you are right now :)