Email sebagai platform

Menjadikan email sebagai first-class platform

Gue setiap hari cek email, dan bila ada yang bertanya aktivitas apa yang gue lakukan ketika bangun tidur, jawabannya adalah cek email.

Alamat email adalah identitas utama di internet, hampir semua setiap layanan yang ada di internet membutuhkan alamat email untuk bisa menggunakannya, dan juga untuk mengidentifikasi siapa kamu.

Di kantor yang sekarang, project management menggunakan Basecamp & Gitlab.

Thanks to them, gue bisa berinteraksi dengan aktivitas yang ada via email

Ignore the inconsistent date time

Tangkapan layar diatas adalah salah satu contoh dimana gue berinteraksi dengan Basecamp via Apple Mail. Selain Basecamp, di Gitlab (dan GitHub!) pun gue melakukan hal serupa, dan ini contoh bila di GitHub:

Link

Gue adalah fans berat asynchronous communication, gue rasa lumayan sulit ketika membuat keputusan dalam komunikasi yang singkronous kecuali bila benar-benar sudah dalam kondisi yang mantap.

Ambil contoh ketika lo lamar orang & langsung diterima di menit itu juga, bila orang yang lo lamar tersebut memang sudah benar-benar mantap lahir & batin, dan sudah memikirkan dari hal yang terkecil sampai yang terbesar.

Jika belum siap? Tinggal beri dia waktu, bukan?

Dan jika lo memaksa dia untuk memberikan keputusan pada saat itu juga—sedangkan dia belum mempersiapkan semuanya—keputusan diambil hanya karena dia memiliki tenggat waktu untuk mengambil keputusan, dan gue rasa tidak memikirkan banyak aspek karena 'kesempitan' yang ada.

Dalam konteks dunia pekerjaan, bagaimana bila ternyata ada sesuatu yang benar-benar urgent?

Meeting!

Walaupun gue kurang suka dengan meeting.

Dan gue selalu menghindari membuat meeting, jika sesuatu tersebut bisa dilakukan tanpa melakukan meeting.

Oke, sekarang mari kita kembali ke topik.

Aplikasi Web

Di zaman sekarang, siapa sih yang tidak menyediakan aplikasi web?

Iya, masih ada kok. Fuck to native-mobile-app-only application.

Platform web adalah platform terbuka, tidak dikendalikan oleh entitas manapun, dan cross-platform by design.

Masalah umum di platform web adalah terkait API, peperangan antar pengembang peramban sudah menjadi hal yang umum diikuti untuk pengembang web, karena antar peramban memiliki visi & misi yang berbeda-beda, namun pada dasarnya tetap untuk 1 tujuan: Membuat platform web menjadi lebih baik lagi, berikut terhadap penggunanya.

Namun tidak sedikit layanan-layanan yang dibuat untuk platform web hanya mendukung beberapa peramban saja. Seperti Skype Web yang hanya bisa digunakan di peramban keluarga Chromium.

Atau seperti Zoom Web yang tidak bisa menggunakan Safari ketika Join with Audio.

Dan masih banyak lagi kasus-kasus serupa yang males gue tulis semua.

Cross-platform disini menjadi terlanggar karena tidak cross browser, dan mungkin itu 2 domain yang berbeda.

Tapi intinya, sekarang aplikasi-aplikasi banyak dibuat untuk platform web, yang menurut pendapat pribadi gue karena satu: The Cloud.

Data-data disimpan di komputer orang lain cloud, di internet.

Sudah tidak disimpan di komputer lokal lagi.

Jika sebelumnya ketika kita membuat desain kita menyimpan berkas desain tersebut di perangkat kita sendiri (misal ketika pakai Adobe Illustrator), sekarang disimpan di cloud (misal ketika pakai Figma).

Yang mana, mungkin ini bagus.

Masalah penyimpanan terselesaikan: Pengguna tidak perlu melakukan instalasi, dan tidak perlu khawatir akan ruang penyimpanan yang dimiliki.

Dan juga, karena menggunakan pendekatan ini, membuat layanan yang kolaboratif bisa tercapai (dengan lebih mudah) karena sumber data yang ditunjuk berada di pihak ketiga.

Yang mana, mungkin ini bagus.

Mungkin.

Email sebagai platform

Melihat layanan-layanan yang gue lakukan (selain khusus untuk komunikasi singkronous), gue rasa beberapa bisa menggunakan email sebagai platform.

Ambil contoh yang paling sederhana, Twitter.

Tanpa membuka Twitter, gue seharusnya bisa membalas DM; Membalas tweet, membuat tweet dan sebagainya via email, yang pastinya tidak baik untuk bisnis nya Twitter yang bergantung penuh dengan iklan :)

Atau, misalnya contoh begini.

Bila kita bisa menggunakan Slack untuk melakukan deployment; Mendapatkan report, dsb, mengapa tidak bisa menggunakan email juga?

Pada dasarnya hampir sama seperti Slack (ehm, Slack yang hampir sama dengan Email), namun tanpa perlu membuat akun Slack & mengakses/menginstall aplikasi Slack.

Contoh Workflow:

  • Sistem mengirim email dari alamat (deployment+fad3b76@ops.myapp.tld) terkait laporan CI yang berhasil
  • Pengguna bisa balas email dengan "deploy" dan sistem melakukan apa yang harus dilakukan

Selain itu yang lebih sederhana, misal, sesederhana converter. Gue kirim email ke convert@someapp.tld dengan judul "MP4 to WEBM" plus menyematkan video yang ingin gue kirim, lalu setelah beberapa detik (atau menit) gue mendapatkan apa yang ingin gue dapatkan.

Contoh kasus

Oke, mungkin tidak semua layanan bisa menjadikan email sebagai platform, namun bila aplikasi kamu hanyalah adalah tentang sistem informasi, gue rasa itu pasti bisa.

Gue fans berat RSS reader, dan gue pakai Readkit di laptop gue.

Alasannya: Dia dukung Instapaper, dan gue menggunakan Instapaper walau tidak premium.

Readkit hanya berada di Mac, dan untuk di Android, gue pakai Instapaper for Android dengan catatan gue tidak mendapatkan kabar akan tulisan baru yang diterbitkan & yang gue subscribe RSS feed nya.

...kecuali kebutuhan gue tersebut gue bagi menjadi dua, yang artinya, gue harus memasang aplikasi RSS Reader yang ada di Android.

Sekarang begini, anggap gue membuat aplikasi bernama Instaread yang mana gabungan dari 2 layanan tersebut (Readkit & Instapaper). Bedanya: Instaread tidak hanya berada di Mac, dan yang paling penting, email adalah platform utamanya.

Mari kita ambil contoh kasusnya:

  • Ketika ada tulisan baru dari RSS feed yang gue subscribe, gue mendapatkan email akan tulisan tersebut (full atau summary) — Fitur inti dari Readkit
  • Ketika gue melakukan "Read it later" terhadap tulisan yang gue pilih, tulisan tersebut dikirim ke email gue — Fitur inti dari Instapaper

Yang sederhananya, gue bahkan enggak perlu memasang 2 aplikasi tersebut di perangkat gue.

Weekend ini gue sedang bereksperimen dengan itu.

Begini contoh workflow nya:

Setiap pengguna, mendapatkan email unik, misal cf178bb@relay.something.tld yang bisa disimpan di kontak, dengan nama, misalnya, "News Feed".

Email tersebut hanya boleh diketahui oleh pengguna, karena bila ada email masuk ke alamat tersebut, by default akan mengirim versi "readable" (remember readability?) akan link yang masuk ke alamat email pengguna yang digunakan ketika mendaftar.

Lalu di level email, kita bisa membuat filter: Bila ada email masuk dari situ (cf178bb@...), berikan label "Read later", lalu skip inbox.

Dan kita bisa melakukan "snoozing" ketika kita tidak ada waktu untuk membacanya pada saat itu juga.

POC menggunakan Apple Mail — Read Later untuk halaman ini

Dan ini contoh di mobile menggunakan Gmail™

OK for now we don't use TLS yet

Sebagai POC, ini udah mantap dengan workflow gue.

Mengapa email?

Banyak banget keuntungannya, tapi akan gue highlight yang menjadi favorit gue:

  • Truly cross-platform. Karena yang dibutuhkan hanyalah email client nya saja
  • Very lightweight. No JS, no tracking, just plain text & some images
  • Hampir semua orang menggunakan email
  • Bisa berjalan ketika offline
  • Sesuai dengan workflow gue

Mungkin tidak semua aplikasi/layanan yang cocok dengan yang telah gue bahas disini, namun sebagai contoh-contoh (yang mungkin belum & bisa diimplementasikan):

Topup starbucks/insert-any-brand-here balance

Dalam konteks starbucks, untuk mengisi saldo, hal yang harus gue lakuin adalah:

  1. Login (dan tunggu sistem mengirim OTP ke email gue)
  2. Ketik manual kode OTP tersebut
  3. Klik tombol Topup
  4. Pilih saldo (100k, 200k, 500k, other)
  5. Check I agree with the ToS
  6. Klik tombol Confirm Payment
  7. Muncul popup, klik Continue
  8. Pilih daftar ATM/Bank Transfer
  9. Gue pilih BCA
  10. Muncul instruksi, klik tombol Set Account Number (VA)
  11. Muncul account number (VA) beserta tombol Please Complete Payment

Dengan email, mungkin gue bisa mengirim email ke alamat yang sudah disediakan dengan judul "TOPUP 100k BCA", dan akan dibalas dengan sedikit instruksi beserta dengan nomor VA nya.

Bila sudah ditransfer sama gue, kirim email konfirmasi ke gue bila ingin.

Kalau ada gagal, kirim email gagal. Entah itu gagal karena salah format, nominal saldo topup tidak tersedia, bank tidak terdaftar, dsb.

Hemat 10 langkah!

Silahkan ganti balance tersebut dengan pulsa, token listrik, tagihan lain, dsb.

Transfer duit via Jenius/insert-any-brand-here

Pokoknya hampir sama deh upacara-upacara nya, dan mungkin bisa disederhanakan dengan mengirim email seperti ini: "SEND 100k $cashtag/account-number" atau "SEND 100k BCA insert-bca-acc-num-here"

Biaya

Akan selalu ada biaya yang harus dibayar terkait keputusan.

Kebanyakan kita menggunakan layanan pihak ketiga untuk mengirim (transaction) email seperti Sendgrid, Mailgun, Postmark, dsb untuk mendapatkan fitur-fitur seperti isu "Trust" biar ga masuk ke spam, segmentasi pengguna, status pengiriman, dan yang paling jelas: Analitik.

Jika melihat kebutuhan disini (khususnya kebutuhan gue) sepertinya tidak perlu, dan tantangannya hanya di "deliverability", apakah email tersebut berhasil terkirim atau tidak, yang pastinya kita tau caranya (berikut dengan solusinya) tanpa harus menggunakan layanan pihak ketiga ;)

Iklan

Tadi gue udah bahas seputar PoC, benar?

Buat sekalian eksplor-eksplor, di akhir pekan, gue lanjut ngembangin aplikasi tersebut sebagai pengganti Instapaper + RSS Reader yang sudah gue gunakan.

Layanannya sederhana: Mengirim tulisan yang ingin gue baca nanti ke email, dan mendapatkan pemberitahuan (tergantung konfigurasi RSS nya) akan tulisan baru dari RSS Feed yang gue subscribe dengan cara mengirim email.

Fitur-fitur tambahan yang sudah gue rencanakan antara lain:

  • Built-in snooze. Hanya boleh mengirim meng-forward email di hari & jam tertentu
  • Hal-hal terkait retensi. Misal, setelah 7 hari (ber-variasi), hapus link dari daftar bacaan. Ini sejujurnya buat gue, dengan prinsip: "Karena setelah 7 hari gue masih hidup meskipun gue gak baca tulisan tersebut, jadi, mari lupakan dan move on", meskipun tulisan tersebut sudah ada di email kamu :))
  • Reminder. Misal, tiap pagi, kirim gue email akan 2 tulisan (yang memiliki estimasi baca < 7 menit) dari reading list gue, atau tiap weekend, untuk yang memiliki estimasi baca < 15 menit
  • Web App. Hanya untuk keperluan akses hal-hal terkait arsip & konfigurasi.
  • No ads. No tracking. Gambar yang ada di request via service-level proxy, dan pastinya akan di cache oleh email client kamu

Dan pastinya Open Source.

Teknis

Jika tertarik berkontribusi untuk hal teknis, kita akan berhadapan dengan:

  • Parser & Formatter. Sebelumnya (pas PoC) pakai solusi in-house, dan kemungkinan akan menggunakan Mercury Parser nya Postlight, Readability nya Mozilla atau apapun itu termasuk diluar ekosistem JavaScript sekalipun
  • Postfix. Untuk memproses email masuk dan keluar. Misal (untuk inbound email) untuk kasus subsribe RSS nya faultable.dev dengan cara mengirim email ke 82ae9fc@relay.something.tld dengan format "RSS faultable.dev"
  • Proxy. Ini cuma untuk nge-proxy gambar aja. Setiap gambar yang ada, di ganti dengan URL gambar baru yang mana itu adalah hasil proxy/cache dari si proxy ini.

Tertarik mencoba?

Mumpung lagi long weekend, sepertinya gue punya banyak waktu untuk fokus ngembangin ini karena weekday ku penuh dengan meeting dan coding huhu.

Anyway. Bila tertarik untuk menggunakan, bisa kirim aku email ke halofariz+9de8147@gmail.com. Semua email yang masuk kesitu, akan ada di inbox gue dengan label Read later app dan akan gue balas satu-satu (yang tentu saja dengan cara copas) setelah aplikasi ini sudah dirilis ke GitHub karena gue ga tertarik bikin milis-milis-an.

Penutup

Biasanya, layanan membuat aplikasi sendiri adalah untuk keperluan analitik.

Fingerprinting.

Optimasi penjualan.

Menyebar promo dan iklan—dengan relevan.

Padahal yang ingin gue lakukan disini adalah menyimpan link yang ingin gue baca nanti dan mendapatkan tulisan baru dari RSS feed yang udah gue subscribe.

Ingin melakukan topup saldo ke starbucks card gue yang udah jelas nominalnya berapa dan dari akun bank apa.

Ingin mengirim uang dari rekening gue ke rekening temen yang udah jelas gue punya nomor rekeningnya beserta bank yang dia gunakan dan nominal saldo yang ingin gue kirim.

Dan mengapa gue harus meng-install aplikasi lagi bila yang gue butuhkan hanyalah email client yang ringan itu?

Sebagai penutup, tulisan ini pada dasarnya hanyalah iklan.

Terima kasih, selamat berakhir pekan!