• adukan.id : Laporkan konten negatif di dunia maya dengan lebih mudah

    Beberapa waktu lalu saya merilis sebuah website bernama adukan.id, website yang akan membantu masyarakat untuk melaporkan segala macam bentuk konten negatif yang ada di dunia maya. Tadinya adukan.id saya buat karena ingin melaporkan penipuan via SMS yang begitu marak, beberapa memiliki website yang membuat beberapa orang mungkin mempercayainya. Pada pengembangannya, saya berpikir untuk tidak sampai…

    Beberapa waktu lalu saya merilis sebuah website bernama adukan.id, website yang akan membantu masyarakat untuk melaporkan segala macam bentuk konten negatif yang ada di dunia maya. Tadinya adukan.id saya buat karena ingin melaporkan penipuan via SMS yang begitu marak, beberapa memiliki website yang membuat beberapa orang mungkin mempercayainya. Pada pengembangannya, saya berpikir untuk tidak sampai disitu, tapi juga bisa menjadi tempat aduan “konten negatif” lainnya seperti Hoax, Pornografi dan berbagai macam postingan / foto / website / blog yang mungkin merugikan atau bahkan membahayakan orang lain.

    Prosedur pelaporan konten negatif seperti ini sebenarnnya sudah ada, hanya saja agak ribet dan membingungkan. Dengan googling sebentar, akan ada banyak blog yang memberikan cara untuk melaporkan hal tersebut, sebagian besar memberikan saran membuat laporan di Diskominfo, Trust+ Internet Postif, Cyber Crime POLRI, OJK, Operator Layanan Selular bahkan pihak Bank, Ribet!. Dengan adanya adukan.id, prosedur untuk membuat laporan menjadi jauh lebih mudah, karena ya kalau mau buat laporan saja susah, ribet dan bingung bisa jadi makin sedikit orang yang ingin melaporkan sebuah masalah.

    Adukan.id membantu prosedur pembuatan laporan menjadi lebih mudah, para pelapor cukup buka website adukan.id, isi form yang tersedia, kelar. Di belakang layar, by system adukan.id akan mengecek, memverifikasi dan memfilter laporan tersebut lalu mengirimkan laporan kepada pihak-pihak yang terkait secara sekaligus! misal untuk sebuah SMS penipuan, maka secara otomatis nomor yang digunakan penipu akan dikirimkan ke Operator Layanan Selular, URL / Website yang ada di SMS bisa di forward ke Internet Positif, dan kalau ada nomor rekening yang digunakan bisa dikirimkan ke pihak OJK dan Bank terkait, dan kalau memang level yang berbahaya, bisa di teruskan juga ke Cyber Crime Polri, semuanya dilakukan secara otomatis.

    Tentu saja ada banyak celah prosedur di sini, paling kerasa adalah menentukan sebuah “konten negatif”. Kalau untuk scammer / penipuan, semua pasti sepakat bahwa hal tersebut masuk ke “konten negatif” yang perlu ditindaklanjuti. Permasalahnya adalah pada “konten negatif” seperti hoax, ujaran kebencian, pornografi, dan “hal negatif” lainnya, untuk beberapa orang mungkin sebuah konten masuk kategori negatif, tapi untuk orang lain bisa saja hal yang biasa atau masih bisa dimaklumi. Ini adalah PR buat saya pribadi untuk menentukan sistem verifikasi ini, beberapa masukkan yang paling bisa dieksekusi adalah dengan sistem verifikasi secara crowdsourcing, alias masyarakat juga bisa membantu memberikan verifikasi dan pendapat apakah sebuah konten bersifat negatif atau tidak.

    Masalah lain adalah bagaimana memastikan sebuah laporan tersebut sudah diterima atau malah diproses oleh pihak terkait, karena gak sedikit yang menanyakan apa yang terjadi setelah laporan? apakah sudah gitu aja? apakah pasti sampai? apakah pasti diproses? sesungguhnya ini adalah diluar kemampuan adukan.id karena adukan.id hanya melaporkan saja, pihak-pihak terkaitlah yang punya kuasa untuk memproses. Walaupun begitu tetap saja ini menjadi konsen bagi saya maupun pengguna adukan.id

    Masih ada banyak hal yang bisa dilakukan untuk adukan.id, tapi untuk saat ini fokus utamanya adalah bagaimana membuat laporan secara lebih mudah, untuk 2 masalah tadi sepertinya akan dihandle di versi berikutnya.

    So kalau kamu mendapatkan atau melihat sebuah konten negatif yang bisa merugikan atau membahayakan orang lain, jangan diam saja, adukan!

    buka adukan.id

  • Membuat plugin wordpress untuk mengirim notifikasi komentar

    Saya baru sadar bahwa ternyata WordPress tidak mengirimkan notifikasi ketika seseorang membalas komentar pada suatu artikel. Admin websitenya sih dapat email notifikasi bahwa ada komentar baru masuk, tapi si pemberi komentar sebelumnya bakal tidak tau kalau ada yang memberikan balasan atau respons pada komentarnya, walaupun yang memberikan balasan adalah si admin website. Jadi saya buat plugin sederhana…

    Saya baru sadar bahwa ternyata WordPress tidak mengirimkan notifikasi ketika seseorang membalas komentar pada suatu artikel. Admin websitenya sih dapat email notifikasi bahwa ada komentar baru masuk, tapi si pemberi komentar sebelumnya bakal tidak tau kalau ada yang memberikan balasan atau respons pada komentarnya, walaupun yang memberikan balasan adalah si admin website.

    Jadi saya buat plugin sederhana yang punya tugas sangat sederhana,  mengecek kalau ada komentar baru masuk yang berupa balasan pada sebuah komentar, maka akan dikirim email notifikasi ke pemilik komentar sebelumnya.

    (lebih…)

  • Ngulik WordPress

    Beberapa bulan terakhir saya lebih sering dapet project terkait dengan WordPress Development. Mulai dari pembuatan theme simple untuk keperluan re-design suatu instansi sampai pembuatan plugin yang cukup unik dan “menantang” dari sisi development. Saya sendiri gak asing sebenarnya dengan WordPress karena pekerjaan saya di kantor sebelumnya juga full WordPress theme developer. Walaupun ada banyaak bad-mouth tentang WordPress, tapi…

    Beberapa bulan terakhir saya lebih sering dapet project terkait dengan WordPress Development. Mulai dari pembuatan theme simple untuk keperluan re-design suatu instansi sampai pembuatan plugin yang cukup unik dan “menantang” dari sisi development. Saya sendiri gak asing sebenarnya dengan WordPress karena pekerjaan saya di kantor sebelumnya juga full WordPress theme developer. Walaupun ada banyaak bad-mouth tentang WordPress, tapi ya pasar gak bohong, 25% web di dunia pakai WordPress 😉

    Salah satu yang lagi saya kerjakan kali ini adalah project yang skala nya cukup besar, atau bisa dibilang yang terbesar yang pernah saya handle pada platform WordPress. Salah satu toko online yang menjual pakaian anak yang cukup famous dengan sales sampai 250 ribu pcs per 3 bulannya (semoga gak salah info), sedang melakukan migrasi dari sistem mereka yang lama (magento) ke WordPress (dengan woocommerce), dan saya bersyukur dapat terlibat langsung pada projek ini. Projek ini bukan sekedar bikin theme, tapi juga meliputi sistem back office, membership, stock inventory dan beberapa hal lainnya yang semuanya dilakukan diatas platform WordPress.  Kebayang bakal dapet pengalaman handling WordPress untuk very high traffic.

    (lebih…)

  • Mengirim dan Tracking email newsletter dengan laravel dan mailgun

    Salah satu project terbaru saya adalah membuat sebuah newsletter engine, yang secara garis besar tujuannya adalah memberikan kemudahan untuk para sales / internet marketing untuk mengirim email newsletter kepada para konsumen (ataupun target konsumennya). Konten dari newsletter sendiri akan diambil secara otomatis dari berbagai sosial media. Salah satu fitur utamanya adalah tentu saja, mengirim email…

    Salah satu project terbaru saya adalah membuat sebuah newsletter engine, yang secara garis besar tujuannya adalah memberikan kemudahan untuk para sales / internet marketing untuk mengirim email newsletter kepada para konsumen (ataupun target konsumennya). Konten dari newsletter sendiri akan diambil secara otomatis dari berbagai sosial media.

    Salah satu fitur utamanya adalah tentu saja, mengirim email newsletter, dan kemudian melakukan tracking untuk mengetahui berapa email yang terkirim, berapa email yang dibuka atau berapa email yang melakukan klik pada link yang ingin di promoin, ataupun klik link unsubscribe dan juga ‘mark as spam’. Saya menggunakan mailgun untuk email engine nya karena secara out of the box, sudah menyediakan fitur tersebut, dan juga lebih efisien di banding membangun email engine sendiri yang bakal lebih banyak makan waktu dan kemungkinan bakal di tandai sebagai spam oleh provider layanan email adalah sangat besar. Selain itu, mailgun juga sangat di support oleh laravel, PHP Framework yang saya gunakan untuk membangun projek ini. Laravel menyediakan driver untuk mailgun sehingga hanya dengan sedikit konfigurasi, mailgun akan terintegrasi dengan baik pada laravel.

    Tentang Mailgun

    Mailgun adalah penyedia layanan email as services dimana intinya sih kamu bisa mengirim email menggunakan server mereka. Dengan adanya mailgun, developer gak perlu bikin email server sendiri, atau kuatir email yang dikirim akan masuk ke spam, atau juga menjaga server agar tetap ‘sehat’ sehingga para email provider (gmail, yahoo, etc) tidak menganggap server kamu sebagai server yang mencurigakan dan memasukkan semua email dari server mu ke folder spam. Ada banyak fitur lain dari mailgun yang bisa di lihat di website mereka

    Mailgun dan Laravel

    Seperti yang sudah saya singgung diatas, laravel menyediakan driver untuk menggunakan mailgun sebagai email engine. Sebenarnya sih mailgun sendiri punya PHP SDK sendiri yang bakal bantuin kamu berinteraksi dengan API nya secara mudah, tapi kalau projek mu menggunakan laravel, maka akan lebih bijak kalau menggunakan “laravel way” nya, karena… ya emang itu kan salah satu fungsi menggunakan framework? 😃 Supaya kamu dan rekan-rekan mu sesama developer punya bahasa yang sama untuk melakukan beberapa macam kegiatan yang sudah di sediakan oleh framework.

    Untuk setting mailgun di laravel, kamu bisa di dokumentasi laravel, thanks to dotenv, karena kamu bisa setup secara mudah dengan cara edit file .env pada root folder laravel. dan masukkan parameter berikut

    MAIL_DRIVER=
    MAIL_HOST=
    MAIL_USERNAME=
    MAIL_PASSWORD=
    MAIL_DOMAIN= 
    MAIL_SECRET=

    Data untuk mengisi masing-masing parameter diatas bisa dilakukan setelah melakukan registrasi di web mailgun, kalau hanya untuk keperluan testing, kamu bisa pakai fitur free dengan batasan 10.000 email per bulan. lumayan tuh 🙂

    Setelah registrasi selesai, disana ada sandbox domain yang bisa dipakai, atau mau menggunakan custom domain sendiri juga boleh, saat ini saya masih menggunakan sandbox karena memang masih tahap development. Nah, di halaman detail domain, akan terdapat informasi untuk mengisi file .env diatas tadi.

    Mengirim Email

    Untuk mengirim email, karena menggunakan fitur built-in laravel, kamu bisa tinggal ikut dokumentasi laravel mail.

    Mail::send(
        'campaign/templates/newsletter',
        $data,
        function ( $message ) use ( $args ) {
            $message->from( "[email protected]" )
                    ->subject( 'Example Newsletter' )
                    ->to( $args[ 'sendto' ] );
        }
    );

    Anyway, Sampai sekarang saya masih takjub dengan betapa laravel membuat mengirim email menjadi lebih mudah dan eksplisit seperti ini (sebelumnya saya menggunakan codeigniter dan juga raw PHP, ribet dan gak elegan)

    Memberi Tagging

    Mailgun memang memberikan fitur data analitik untuk email yang terkirim, tapi data analitik ini secara global, bukan untuk masing-masing email yang terkirim. Namun mailgun menyediakan juga fitur tagging, atau bahasa gampangnya penanda email setiap melakukan pengiriman email. Sebagai contoh untuk kasus saya, sebelum mengirim email, setiap email yang akan dikirim akan disimpan di database dan memiliki field ID masing-masing. Lalu saya gunakan ID ini untuk menjadi tagging pada email yang dikirim, sehingga setiap email akan memiliki ID / Tagging yang unik.

    Sebelumnya saya sempet ribet untuk memberi tagging ini pada laravel karena fitur mail pada laravel hanya support untuk general purpose untuk beragam driver, jadi kalau mengikuti dokumentasi tagging pada mailgun dimana mailgun membutuhkan parameter “o:tag” yang tentu saja gak bisa di implementasiin di laravel.

    Setelah googling dan membaca dokumentasi swiftmailer (mail engine yang digunakan laravel) akhirnya saya berhasil menambahkan tagging pada email dengan menambahkan 2 baris kode baru pada kode pengirim email diatas tadi.

    Mail::send(
        'campaign/templates/newsletter',
        $data,
        function ( $message ) use ( $args ) {
            $message->from( "[email protected]" )
                    ->subject( 'newsletter' )
                    ->to( $args[ 'sendto' ] );
    
            // adding tagging to email
            $headers = $message->getHeaders();
            $headers->addTextHeader( 'X-Mailgun-Tag', 'campaign-' . $args[ 'ID' ] );
        }
    );

    berhasil! 💯

    Mendapatkan Statistik Email

    Untuk mendapatkan statistik email dari mailgun cara paling mudah adalah menggunakan PHP SDK dari mailgun sendiri.

    Lah, tadi katanya gak pake PHP SDK nya mailgun?

    Iya, untuk keperluan yang sudah disediakan oleh framework mah lebih baik menggunakan yang sudah ada, namun untuk keperluan lain yang gak disediain ya mending buat sendiri atau pake library lain yang sudah ada. Dalam hal ini mailgun cukup keren karena punya banyak SDK untuk beberapa macam bahasa pemprograman, termasuk PHP.

    Nah berikut adalah potongan kode untuk pengambilan statistik email berdasarkan tagging nya dari dokumentasi mailgun.

    $mail   = new Mailgun( env( 'MAILGUN_SECRET' ) );
    $domain = env( 'MAILGUN_DOMAIN' );
    $tags   = "campaign-17";
    $events = "opened";
    
    try {
        $data = $mail->get(
            $domain . "/tags/" . $tags . "/stats",
            array(
                'event' => $events
            )
        );
    
        return $data->http_response_body;
    } catch ( \Exception $e ) {
        return array();
    }

    Berdasarkan dokumentasi itu juga, terdapat beberapa event yang bisa di tracking.

    Dengan info selengkap ini, para user bisa mengetahui statistik dari setiap newsletter yang dikirim kepada konsumen nya yang tentunya akan berpengaruh pada strategi marketing berikutnya.

  • 1 Tahun bersama PHPStorm

    11 februari kemarin lisensi PHPStorm saya telah expired yang berarti sudah 1 tahun saya menggunakan PHPStorm untuk menemani saya bekerja. Saya masih ingat ketika itu masih menggunakan PHPStorm 8 sampai sekarang yang terbaru versi 10 dan sepertinya versi 11 akan keluar 1-2 bulan kedepan. Sebelumnya saya menggunakan sublime text dan sempet mencoba atom namun waktu…

    11 februari kemarin lisensi PHPStorm saya telah expired yang berarti sudah 1 tahun saya menggunakan PHPStorm untuk menemani saya bekerja. Saya masih ingat ketika itu masih menggunakan PHPStorm 8 sampai sekarang yang terbaru versi 10 dan sepertinya versi 11 akan keluar 1-2 bulan kedepan.

    Sebelumnya saya menggunakan sublime text dan sempet mencoba atom namun waktu itu atom masih buggy banget, saya memang agak pesimis dengan aplikasi yang berbasis HTML, CSS, dan JS lalu di package jadi aplikasi desktop. Sampai akhirnya atas pertimbangan produktifitas saya beralih ke IDE, netbeans dan aptana gak bisa dibilang baik dari sisi tampilan dan performa (agak jadi lambat, typikal aplikasi desktop berbasis java) dan pilihannya waktu itu PHPStorm. Saya putuskan mencoba trial selama 30 hari, yang kemudian tertarik untuk melanjutkan ke full version.

    (lebih…)