Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Kirim SMS OTP dengan Gammu

Project yang saat ini kita sedang tangani, memiliki fitur untuk otentikasi menggunakan OTP. Dikirim dengan SMS dan Email. Tentunya sebelum fitur OTP aktif, kita juga harus verifikasi dulu nomor handphone dan emailnya.

Fitur verifikasi dan OTP ini tentunya mengharuskan aplikasi kita untuk bisa mengirim email dan SMS. Cara untuk mengirim email sudah saya bahas pada artikel terdahulu. Jadi pada artikel ini, kita akan membahas cara mengirim SMS dari kode program kita.

Lanjut membaca ...


2 Mahzab Founder Startup

Dari sejak jaman kolonial dulu sampe milenial sekarang, bikin bisnis itu ada 2 mahzab:

Mahzab A. Bikin dari nol, besarkan sampai puluhan tahun. Ngomongnya cashflow, profitability, ROA, ROE. Retensi founder dan karyawan biasanya tinggi, turnover rendah. Orientasinya pertumbuhan organik. Yang disebut sukses adalah perusahaan jalan sustainable, founder tetap pegang saham, karyawan makmur sejahtera.

Mahzab B. Bikin seminim mungkin, pitching setinggi mungkin. Ngomongnya elevator pitch, valuation, growth hacking, burn rate, term sheet. Retensi karyawan biasanya rendah, turnover tinggi, bahkan founder pun pada akhirnya entah kemana. Orientasinya funding series. Yang disebut sukses adalah perusahaan terjual, entah ke bigger company, atau IPO.

Nah, Anda mau jadi founder pakai mahzab mana??

Founder mahzab A biasanya :

  • Kalau bisnisnya rugi dan susah diperbaiki, dijual
  • Bahagia kalau berhasil mengakuisisi

Founder mahzab B biasanya :

  • Kalau bisnisnya untung, dijual
  • Bahagia kalau berhasil diakuisisi

Contoh founder mahzab A :

  • Warren Buffet
  • Bill Gates

Contoh founder mahzab B :

  • Elon Musk
  • Jan Koum

Ada yang berpendapat bahwa Musk masuk mahzab A. Tapi menurut pendapat saya, kalau kita lihat track recordnya di Wikipedia, perusahaan-perusahaan dia masih termasuk kategori bakar-bakar duit. Sedangkan perusahaan bikinan dia yang sudah mapan, yaitu PayPal, sudah lama dijual ke eBay. Jadi ya tentu saja dia masuk kategori B.

Mahzab mana yang lebih benar? Wallahu a’lam. Tidak harus dicari siapa benar siapa salah. Tidak juga cuma boleh pilih salah satu. Bikin banyak perusahaan, sebagian dijalankan dengan mahzab A dan sebagian B juga bebas saja :D


Switch User dengan Spring Security

Alhamdulillah, aplikasi kita sudah naik production, dan digunakan oleh banyak user. Aplikasi sudah kita rancang dengan baik, sehingga data yang tampil di aplikasi sesuai dengan user yang sedang login.

Masalah timbul ketika ada pertanyaan atau laporan dari user dalam penggunaan aplikasi. Sebagai administrator, kita tidak tahu data apa yang sedang tampil di layar user, karena aplikasi hanya bisa menampilkan data user yang sedang login. Apabila kita login dengan akun administrator, kita tidak bisa melihat apa yang dilihat user, sehingga kita sulit untuk mendebug aplikasi.

Biasanya, orang-orang mengatasi isu ini dengan meminta password user. Programmer/administrator kemudian mencoba aplikasi dengan cara login sebagai user. Praktek seperti ini sangat tidak dianjurkan. Pertama karena programmer/administrator menjadi tahu password user. Mayoritas user di dunia, menggunakan password yang sama di berbagai aplikasi, sehingga password yang diberikan ke programmer/administrator ini ada kemungkinan bisa dipakai di akunnya yang lain (internet banking, online shop, dan sebagainya). Kedua, karena ini belum tentu bisa digunakan pada sistem single sign on, seperti yang kita sudah pernah buat di artikel terdahulu.

Solusinya, kita harus buatkan di aplikasi kita fitur untuk administrator supaya dia bisa pindah menjadi user lain. Dengan demikian, dia bisa melihat apa yang dilihat user lain tersebut. Tentunya fitur ini harus dijaga dengan baik, jangan sampai disalahgunakan oleh administrator. Caranya bisa dengan mengimplementasikan audit log untuk mencatat aktifitas administrator selama pindah menjadi user lain.

Nah, demikian konsepnya secara garis besar, sekarang mari kita langsung ke kode program.

Lanjut membaca ...


2019 Masih Debat Database Transaction?

Beberapa waktu yang lalu, salah satu seleb programmer di Yutub bikin video yang menyatakan bahwa pengetahuan tentang database transactional itu wajib bagi senior programmer.

<grammar-police> Well, sebelumnya saya koreksi dulu, yang tepat adalah database transaction, bukan transactional. Kalopun mau pakai akhiran al, maka yang pas itu transactional database. </grammar-police>

Netijen pun bereaksi keras Maklumlah namanya juga netijen, bebas aja. Di antara komentar netijen, ada satu yang tertangkap mata saya. Itupun karena ditag. Berikut komentarnya,

Yaa kenapa gitu? Ada aja kok senior software developer gatahu dependency injection, github repo, sama continous integration tapi bikin programnya jago dan enak dibaca. Jangan main nge judge gitu lah statement nya

Sebetulnya saya tidak mau menanggapinya. Sudah pernah saya tulis masalah ini 8 tahun yang lalu di blog ini juga. Silahkan dibaca.

Tapi apa boleh buat, saya sudah ditag, dan sebagai sesama netijen jaman now sudah sepantasnya kalau kita bersikap julid, FOMO, dan YOLO.

Dan lagipula, ini blog sudah lama gak diupdate, jadi mumpung ada bahan, here we go.

Lanjut membaca ...


Hapus Partisi dengan Command Line

Meneruskan kebiasaan pada waktu menggunakan Ubuntu, kadang saya masih melakukan format ulang terhadap laptop, yang sudah 4 tahun ini menggunakan MacOS. Cara format ulangnya mirip, yaitu:

  • Unduh image installer sistem operasi. Untuk MacOs, kita harus membuatnya sendiri menggunakan laptop/komputer Mac juga :D. Caranya bisa di-google, tidak akan saya tulis karena tiap rilis perintahnya agak berbeda. Lagipula, biasanya ada yang sudah membuatkan scriptnya.

  • Tulis image tersebut ke flashdisk. Biasanya saya pakai perintah dd saja di commandline. dd if=/file/image.iso of=/dev/diskN bs=1m. Ganti nama device diskN sesuai yang terdeteksi di sistem operasi.

  • Booting dari flashdisk dengan cara menekan tombol Option (⌥) sambil menyalakan komputer.

  • Next .. next .. selesai.

Nah masalahnya adalah, flashdisk bekas menginstal tersebut agak susah dibersihkan partisinya. Sudah dihapus menggunakan aplikasi Disk Utility, diskutil command line, tetap menyisakan partisi boot.

Ini terutama disebabkan karena filesystem Mac tidak lazim ditemui di Windows dan Linux, sehingga untuk menghapusnya tidak bisa menggunakan aplikasi GUI biasa. Hal ini juga berlaku untuk filesystem yang aneh, seperti misalnya ZFS.

Untuk itu, google dan stack overflow tidak kekurangan jawaban. Ternyata kita cukup menghapus 3 blok pertama di flashdisk tersebut, karena tabel partisinya ada di situ. Bila partisi kita banyak (misalnya 10), yang harus dihapus 5 blok.

Perintahnya sebagai berikut

dd if=/dev/zero of=/dev/diskN bs=512 count=3

Demikianlah ini menjadi catatan buat saya pribadi, supaya kalau besok-besok instal ulang, tidak perlu repot lagi mencari command untuk membersihkan flashdisk. Semoga bermanfaat untuk pembaca sekalian.