Showing posts with label Information Technology. Show all posts
Showing posts with label Information Technology. Show all posts
Thursday, September 1, 2016

Ketika DIA Bilang Tidak

Berbeda dari orang-orang pada umumnya yang galau pilih jurusan saat kelas 3 SMA akhir, gw sudah memutuskan ambil Teknik Informatika (IT) sejak kelas 1 SMA.

Saat itu, belum ada gadget ataupun smartphone. Komputer, dengan monitor segede gaban, masih dianggap barang mewah. Apalagi di kota kecil seperti Cirebon, IT belum booming seperti sekarang ini. Terbukti dengan pertanyaan papa gw, saat gw bilang gw mau masuk IT.


Jurusan apa itu? Kok Papa ga pernah denger? Cari yang lain aja kaya 'Bisnis' atau 'Akuntansi'. Kaya Koko (yang mengambil jurusan akuntansi) gitu.
Beberapa menit selanjutnya, gw  bersusah payah menjelaskan IT itu apaan. Iya, bersusah payah. Agak bingung juga gimana jelasin apa itu IT, ke orang yang tinggal di kota sebagian besar prosesnya masih manual dan pake komputer aja belum pernah. Berhubung penjelasan gw terdengar keren meyakinkan, mereka pun akhirnya ok.

Pertanyaan selanjutnya adalah, mau kuliah di mana? Lagi-lagi, dengan mantap gw jawab: Institut Teknologi Bandung (ITB), yang lagi-lagi, menuai protes.

Kenapa ga di Jakarta aja sama Koko? Di Bandung nanti ga ada yang ngawasin. Di Jakarta kan, ada Binus. Denger-denger jurusan komputernya bagus juga.

Ah, rupanya mereka sudah melakukan riset tentang kampus IT. Tapi Jakarta? Biar ada yang ngawasin? Justru alasan itulah yang membuat gw enggan kuliah di Jakarta, mengingat saat itu, hubungan gw dengan koko gw kurang baik.

Gw pun tetap pada pendirian gw: IT di ITB, Bandung. Satu keluarga memang sudah tahu kalo gw keras kepala. Kalo sudah maunya A, harus A. Kecuali ada alasan yang cukup kuat atau cukup ilmiah untuk mengubah pandangan gw. Dan berhubung alasan mereka gw nilai kurang kuat, gw ga ambil pusing.

---

Biar dapet biaya lebih murah, gw ga mau masuk lewat jalur PMDK (berdasar nilai rapor). Walau gw yakin seyakin-yakinnya kalo nilai rapor gw sangat memenuhi syarat dan pasti diterima. Namun, gw sengaja memilih jalur SNMPTN (Seleksi Nasional Masuk Perguruan Tinggi Negeri), yang biayanya bakalan jauh lebih murah, plus ga perlu pake 'uang gedung'.

Singkat cerita, gw mendaftar SNMPTN dan harus mengikuti 2 ujian. Ujian pertama mencakup Bahasa Indonesia, Bahasa Inggris, dan Matematika. Ujian kedua, Mafia (Matematika - Fisika - Kimia).

SNMPTN biasanya diselenggarakan di pertengahan tahun, setelah ujian nasional. Saat di mana teman-teman gw yang lain udah tenang keterima di salah satu universitas. Bahkan ada yang sudah mulai kuliah. Sementara gw, sama sekali belum daftar ke mana-mana. Malah, lagi sibuk belajar buat ujian seleksi yang saingannya berjumlah ratusan (atau mungkin ribuan).

Gw sama sekali ga punya back-up plan, tepatnya ga bisa punya. Beberapa bulan sebelumnya, kampus-kampus biasanya sudah pada minta down payment (DP). Jumlahnya tidak kecil. Kalo ga bayar DP, otomatis dinyatakan mengundurkan diri. Sedangkan kalo bayar DP dan keterima SNMPTN, DP tidak bisa dikembalikan. Ah, universitas-universitas itu benar-benar otak bisnis!

Takutkah gw? Tentu saja gw takut. Deg-deg an. Ini penting banget, masa depan gw. Tapi gw ga punya back up plan. Setiap malam gw berdoa, memasrahkan semua yang di luar kemampuan gw. Kata-kata yang sama, yang selalu gw panjatkan di kala bimbang. Doa yang tidak memaksa.

Guru (gw memanggil Tuhan gw dengan sebutan Guru), kalo memang ini yang terbaik, mohon dimudahkan. Kalo bukan, mohon dibimbing ke mana aku harus melangkah. Apapun itu, aku percaya Guru selalu memberikan yang terbaik.

Hari pertama, segalanya lancar. Setiap soal gw jawab dengan penuh percaya diri. Ini gampang banget, 90 % pasti bener, pikir gw saat itu. Sore dan malamnya, gw menjalani aktivitas seperti biasa. Makan, main PS, baca novel, nulis ga jelas, gangguin anjing gw, nonton TV sebelum tidur, dan akhirnya terlelap sekitar pukul 11 malam.

---

Pukul 3 pagi dini hari, kejadian yang luar biasa terjadi. Perut mules membangunkan gw yang lagi tertidur lelap. Gw buru-buru ke toilet. Keringet dingin mengalir. 'Ah, mules doank. Abis dibuang juga biasanya sembuh', gw mencoba menghibur diri.

Ternyata gw salah besar.

Gw ga bisa tidur lagi sampai tiga jam kemudian, pukul 6 pagi. Gw udah bolak-balik ke toilet tidak terhitung berapa kali. Sempat muntah juga saking mualnya.

Tapi tenang, Saudara-saudara. Bukan Stef namanya, kalo ga bandel. Hihihi. Dalam kondisi seperti itu, gw tetap sarapan ala kadarnya, dan nekat berangkat mengikuti tes hari kedua. Saat itu gw percaya, badan boleh sakit, tapi otak gw tetap jalan. Walaupun sakit, gw pasti tetep bisa ngerjain ujian dengan baik. Ehem!

Sepuluh menit berlalu, para peserta baru selesai mengisi data diri dan nomer peserta ujian yang harus dibulet-bulet pake pensil 2B. Oh no, ini belum apa-apa, tapi gw udah ngerasa mules lagi. Lima belas menit berikutnya, gw bolak balik ke toilet 4-5x. Sesuai aturan, kalo mau meninggalkan ruang ujian, ke toilet misalnya, gw harus diantar, diikuti, dan ditungguin oleh pengawas ujian. Berasa kaya orang penting juga sih, ke mana-mana ada bodyguard-nya.

Gara-gara buang air melulu, dan mungkin saking lemesnya, gw jadi ga bisa konsentrasi ngerjain soal ujian. BLANK total. Pas gw baca kalimat kedua, gw udah ga inget kalimat yang pertama. Gw mengeluarkan seluruh tenaga untuk mencoba berkonsentrasi, tapi tetap ga bisa. Kira-kira di menit ke 30, gw menyerah, memutuskan untuk pulang.

Setelah berunding, para pengawas ujian mengijinkan gw pulang jauh lebih awal. Pengawas yang ngikutin gw bolak-balik ke toilet bilang kalo muka gw pucet banget. Gw ga tau sepucet apa gw waktu itu. Cuma gw inget sebelum pulang, gw dibikinin teh manis hangat. Biar ga pingsan di jalan, katanya. Dia bahkan nganterin gw ke luar, manggilin becak, menanyakan alamat gw, dan berpesan pada tukang becak agar mengantarkan gw sampai ke depan rumah dengan hati-hati.

Sesampainya di rumah, mama gw bingung kenapa gw pulangnya cepet banget. Sakit diare dan muntah-muntah, jawab gw. Setelah bongkar-bongkar kotak obat, gw nemu obat diare, meminumnya, dan langsung tertidur pulas begitu nempel kasur.

Bangun-bangun ternyata udah jam makan siang. Aneh juga gw bisa tidur cukup lama tanpa interupsi ke toilet. Gw keluar dari kamar langsung disodori pertanyaan dari adik, apa tadi gw minum obat diare yang ada di meja makan. Gw ngangguk.

OBAT ITU UDAH EXPIRED SATU TAHUN LALU!!
Gw ketawa. Eerr... gw memang suka ketawa di saat-saat yang aneh. Mungkin bisa jadi ide post gw selanjutnya. Anyway, balik ke topik, mama gw panik nyuruh gw cepet-cepet minum Norit. Buat menetralkan racun, katanya. Walaupun gw ngerasa sehat walafiat, udah ga mual dan mules lagi, gw juga jadi takut dan langsung minum Norit.

Abis makan siang, gw udah ga lemes lagi. Tenaga gw balik normal, sehat-sehat seperti tidak ada kejadian apa-apa jam 3 pagi tadi.

---



DIA bilang tidak.

Sangat to the point. Hari itu juga. Ga pake digantungin, ga pake di-PHP-in (Pemberi Harapan Palsu). Legaaaaa gitu rasanya.

Dengan begitu, hari itu juga, gw bisa langsung move on. Karena gw tahu, gw ga mungkin lolos tanpa mengerjakan ujian yang kedua. Ini jauh lebih baik dibanding nunggu-nunggu hasil seleksi, yang entah kapan keluarnya, dan ternyata gw ga lolos.

DIA bilang tidak tanpa menghancurkan kepercayaan diri gw. Gw kalah karena gw sakit, bukan karena gw ga cukup kompeten.

Gw ga memaki, ga melawan, ga meragu, dan ga protes kenapa gw harus sakit di saat sepenting itu. Ah, setidaknya saat itu, gw menganggap hal itu penting. Mungkin DIA tidak sependapat.

DIA bilang tidak, dan DIA sudah menyiapkan rencana lain. Beberapa bulan kemudian gw udah kuliah di salah satu kampus IT terbaik di Malaysia, tanpa ada kendala yang berarti.

Gw tersenyum. Terima kasih, Guru.

---

Note: Gw memang berniat masuk ITB, namun rencana tidak berjalan sesuai yang gw inginkan. Berdasarkan hal ini, gw ga menyimpulkan kalo ITB tidak bagus, atau Binus tidak bagus, atau universitas-universitas lain di Indonesia tidak bagus. Yang gw mau tekankan di sini bukan jurusannya, bukan universitasnya, tapi DIA-nya. DIA selalu tahu yang terbaik buat kita. Dan saat DIA bilang tidak, dia sudah menyiapkan sesuatu yang lain untuk kita. Jurusan apapun, universitas apapun, bisa jadi bagus ataupun jelek, tergantung diri sendiri.

When HE gives a 'NO', it is not a rejection; it is a redirection.
Sunday, July 31, 2016

Fitur dan Game yang Tersembunyi di Google Search

Tahu Google Search?
Gw yakin 97.82% yang baca postingan ini pasti pernah pake Google Search. Jangan tanya angka tersebut gw dapet dari mana, karena itu bukanlah hal yang penting.

Tahu fitur dan games lucu yang tersembunyi di Google Search, Google Image Search, dan Google Calculator?
Gw yakin 95.32% yang baca postingan ini enggak tahu. Iya, angka ini juga tidak perlu dipermasalahkan. Yang penting, setelah baca postingan ini, kalian semua jadi tahu. Ok? 

Berikut gw list contoh-contohnya di bawah ini. Fitur dan game tersembunyi ini lebih dikenal sebagai Google Easter Egg. Kalo males buka Google dan ngetik sendiri, bisa langsung klik di link yang disediakan.

Google Search

Anagram (lihat di SINI)

Anagram adalah permainan kata yang huruf-hurufnya diacak untuk membentuk kata atau kalimat lain. Contohnya:
  • Ramah menjadi marah
  • Daku muda menjadi kamu duda
  • Listen menjadi silent
  • Eleven plus two menjadi twelve plus one
  • Albert Einstein menjadi ten elite brains

Ketika kamu mengetikkan anagram di Google Search, Google akan bertanya, "Did you mean: nag a ram"

Askew (lihat di SINI)

Halaman hasil pencarian akan menjadi miring.

Bletchley Park (lihat di SINI)

SALAH! Ini bukan taman. Bletchley Park adalah museum sejarah di Inggris yang menerangkan segala sesuatu tentang sandi-sandi rahasia yang digunakan pada perang dunia ke-2.

Pernah nonton The Imitation Game? Di tempat inilah, Alan Turing berhasil menciptakan BOMBE, mesin yang berhasil mendekrip pesan yang dienkrip oleh NAZI dengan menggunakan mesin Enigma mereka. Dengan begitu, Inggris bisa mengetahui rencana musuh yang akan datang dan mengantisipasinya.

Menurut perhitungan para ahli, BOMBE berhasil menyelamatkan jutaan nyawa karena memperpendek durasi perang dunia ke 2 sebanyak 2-4 tahun. 


<blink> (lihat di SINI) atau Blink HTML (lihat di SINI)

Hasil pencarian akan berkedip-kedip.

Conway's game of life (lihat di SINI)

Google akan meluncurkan mini game yang disebut Conway's game of life, atau yang juga dikenal sebagai Life. Game ini diciptakan oleh seorang ahli matematika asal Inggris yang bernama John Horton Conway pada tahun 1970.

Aturan permainannya lengkapnya bisa dipelajari di SINI.

Do a barrel roll (lihat di SINI) atau z or r twice (lihat di SINI)

Hasil pencarian akan berputar 360 derajat.

Festivus (lihat di SINI)

Akan ada tiang festivus di sebelah kiri hasil pencarian.

Google in 1998 (lihat di SINI, hanya pada desktop version)

Akan memperlihatkan tampilan hasil pencarian Google Search yang digunakan Google saat pertama kali diluncurkan pada tahun 1998.

Recursion (lihat di SINI)

Recursion artinya pengulangan. Saat kamu meng-Google recursionGoogle akan bertanya, "Did you mean: recursion"

Super mario bros (lihat di SINI)

Akan muncul kotak dengan tanda tanya yang berkelap-kelip. Ketika diklik akan ada efek suara dentingan koin dan muncul angka 200, seolah-olah kita mendapat 200 poin.


Webdriver torso (lihat di SINI, hanya pada desktop version)

Google logo akan berubah menjadi animasi dengan kotak-kotak berwarna merah dan biru. Tidak berfungsi bila ada Google Doodle di hari tersebut.

Zerg rush (lihat di SINI, hanya pada desktop version)

Sebuah mini game di mana kamu harus melawan pasukan Google O yang menghancurkan hasil pencarian kamu. Kamu bisa menghancurkannya dengan cara mengklik O sampai darahnya habis. Namun bagaimanapun caranya, kamu tidak akan bisa menang dan menghancurkan semua pasukan Google O.


Google Image Search

Atari breakout (Lihat di SINI)

Gambar-gambar akan berubah menjadi balok-balok. Tugas kamu adalah mengarahkan bola untuk menghancurkan semua balok yang ada. Cara mainnya sama seperti mini game Breakout yang dipopulerkan oleh perusahaan asal Amerika: Atari, Inc.

Google Calculator

Once in a blue moon (lihat di SINI)

Yang artinya sangat jarang atau nyaris tidak pernah.

The answer to [the ultimate question of] life the universe and everything (lihat di SINI)

Diadaptasi dari novel karangan Douglas Adam yang berjudul The Hitchhiker's Guide to the Galaxy. Sebuah super komputer bernama Deep Thought, setelah melakukan perhitungan selama 7,5 juta tahun, akhirnya menemukan jawaban dari pertanyaan "the answer to the ultimate question of life, the universe, and everything". Deep thought mengatakan, jawabannya adalah 42. Seketika, orang-orang terdiam. Akhirnya mereka sadar kalo sejak awal, pertanyaannya tidak ada, ultimate question of life, the universe, and everything itu sendiri tidak diketahui.


The number of horns on a unicorn (lihat di SINI)


What is the loneliest number (lihat di SINI)


Selain itu, kita juga bisa melakukan seperti ini:

Saturday, May 28, 2016

Aneka Tips Ngaco: Cara Cepat dan Mudah Bikin Virus Tanpa Coding

Note: Ini sebenarnya bukan virus, kok. Ini cuma program buat ngisengin orang. Sebaiknya, pilih korban yang gaptek dan gampang panik. Jangan pililh orang tua atau teman yang psycho, nanti kalian malah repot sendiri.

Virus 1

Program Virus 1 ini akan men-shut down komputer si korban apabila si korban membuka fake application yang telah kamu buat.

1. Klik kanan pada dekstop mu, dan pilih New  Shortcut


2. Setelah itu akan muncul window berikut:

Copy paste code berikut di location:
shutdown -s -t 20 -c "Fatal error!"
Code di atas akan mematikan komputer si korban dalam waktu 20 detik (bisa diganti sesuka hati) dan memunculkan pesan "Fatal error!". Silakan ganti tulisan berwarna biru dengan waktu dan pesan sesuka hati kalian. Kalo bisa, pesannya pake bahasa Inggris biar lebih meyakinkan, ya. Hihihi...


3. Tuliskan nama aplikasi pada window berikut:

Pastikan si korban sering menggunakan aplikasi tersebut, contoh yang bagus seperti Google Chrome, Microsoft Word, atau game yang sering dia mainin. Jangan pake Internet Explorer, karena jaman sekarang IE udah ga ada yang make.

Setelah selesai, klik 'Finish'.


4. Aplikasi Virus 1 kalian udah hampir selesai. Supaya lebih meyakinkan, ganti icon nya seperti icon aplikasi yang asli, dengan cara berikut:

Klik kanan pada fake application tersebut, kemudian pilih Properties.

Pada Shortcut tab, klik Change Icon. Pilih icon yang sesuai, dan klik OK.



5. Beginilah hasil akhir aplikasi Virus 1:

Tinggal nunggu si korban buka fake Google Chrome ini dan lihat reaksinya!

Untuk menghilangkannya, hapus saja fake applicatin tersebut.

Virus 2

Program Virus 2 ini akan membuat si korban menunggu dengan sabar (sampai waktu yang tak terhingga) untuk dapat membuka suatu aplikasi.

1. Buka notepad.exe dan ketikkan potongan code berikut:
@echo off
:loop echo A virus is being removed. Please do not close this window. Your application will automatically open on completion.
timeout /t 3 > NUL
goto loop
Silakan ganti pesan berwarna biru sesuka kalian. Inti pesannya harus membuat si korban menunggu dan enggan menutup program tersebut.


2. Simpan file tersebut dengan nama [Nama Aplikasi].bat (hapus extension .exe nya) dan simpan di dalam folder yang jarang diakses korban. Misal: C:\Windows\System32


3. Buat shortcut dengan cara berikut:
Klik kanan → Send to → Desktop (create shortcut). 
Ganti nama shortcut dan icon nya dengan nama aplikasi yang sering digunakan si korban, dengan cara yang sama seperti cara ke 4 di pembuatan Virus 1.


4. Beginilah hasil akhir aplikasi Virus 2:
Tinggal nunggu si korban buka fake Google Chrome ini dan uji kesabarannya! Berapa lamakah dia akan menunggu?

Untuk menghilangkannya, hapus saja fake application tersebut.

Virus 3

Jika kamu mau lebih jahat lagi, gabungkan ide Virus 1 dengan Virus 2, dan loop it! Pasti bakalan jadi EPIC banget!!

Eerrr... Ada yang bisa baca pikiran evil gw? Atau perlu gw jelasin lebih detail? *evil grin*
Friday, April 29, 2016

Flappy Bird

Ada yang tahu game Flappy Bird yang dulu sempat nge-trend banget? Itu lho, game yang simpel, ga perlu mikir, bisa dimainin tanpa koneksi, agak nyebelin (apalagi suaranya!), tapi bikin banyak orang kecanduan.

Ternyata, game Flappy Bird itu gampang banget dibuatnya. Terinspirasi dari game original-nya, gw pun mencoba bikin Flappy Bird yang lebih simpel, buat bahan pembelajaran gw.

Game Flappy Bird jadi-jadian ala gw ini gw buat dengan Construct 2. Prosesnya sangat mudah dan sangat singkat. Untuk orang yang benar-benar awam, maksimal hanya memakan waktu 1 jam. Yang sudah profesional mungkin cuma butuh 10 menit. SERIUS! Makanya cocok banget buat newbie kaya gw.

Penasaran, kan? Hmm... kira-kira beginilah tool-nya:
Construct 2: UI Layer
Construct 2: Event sheet

Tutorial membuat game ini dan banyak game lainnya dengan Construct 2, bisa dilihat di SINI. Berhubung gw masih baru belajar, gw belum tahu apa kelebihan dan kelemahan Construct 2game apa yang bisa / ga bisa dibuat, dan banyak hal dasar lain yang menjadi pertimbangan dalam pembuatan game.

Berikut hasil game Flappy Bird buatan gw. Walaupun masih banyak kekurangan, seperti tidak adanya animasi, high score, leader board, dan lainnya, tetapi basic functionality nya sudah ada. Dan menurut gw, Flappy Bird gw jauh lebih mudah dibanding Flappy Bird aslinya karena bolongan pipanya jauh lebih besar. Biar yang main ga frustasi banget. Hehehehe. 

Gw berharap, semoga someday gw bisa dapet ide cemerlang dan bikin game gw sendiri!

Intruksi:
  • Klik 'Play game!' untuk memulai permainan.
  • Klik / tap screen agar burung dapat terbang lebih tinggi.


Ide permainan, gambar, maupun audio dari game di atas, adalah hak cipta pemiliknya masing-masing.

Hayooo... berapa score paling tinggi kalian?
PS: Main di komputer lebih mudah dibanding main di smart phone! :D
Sunday, January 3, 2016

Lika-Liku Software Engineer: Interview Ala Microsoft

Selama berkarir di dunia IT, gw tentunya sangat familiar dengan proses interview untuk software engineer. Proses interview memang beraneka ragam, tapi biasanya sangat standard: duduk, ngerjain tes tertulis, interview lisan, dan pulang, seperti yang pernah gw ceritakan di post Perjuangan Mencari Kerja.

Namun suatu hari, gw dapet panggilan interview dari salah satu perusahaan di Singapore, yang memiliki style interview yang unik. Style unik berasal dari sang CTO (Chief Technology Officer), berkewarganegaraan Canada, yang pernah bekerja di Microsoft selama kurang lebih 15 tahun. Dia ikut andil dalam pembuatan Microsoft Windows 98, Windows XP, sampai ke SQL Server 2012.

Ketika gw tanya kenapa dia keluar dari Microsoft, dia menjawab kalo dia bisa balik ke Microsoft kapanpun dia mau, tapi sekarang dia mau pensiun dini. Eeehh apa daya, salah satu temannya yang juga warga negara Canada, baru saja membuka cabang di Singapore dan meminta bantuan dia buat memimpin technical team-nya.

Singkat cerita, tibalah gw di situ, bertemu dengannya untuk interview. Dia bilang dia biasa meng-interview para kandidatnya dengan 'Interview Ala Microsoft', cuma versi lebih gampang aja. Karena kalo terlalu susah dan surprisingly gw berhasil menjawab, gw kerjanya di Microsoft, bukan di kantor ini. Orang-orang mungkin lebih mengenal style interview ini dengan sebutan 'Whiteboard Interview'.

Whiteboard interview (Startup Helium, 2015)
Interview-nya face to face, perorangan, tipikal interview IT pada umumnya. Bedanya, tidak ada tes tertulis atau tes langsung di komputer yang harus dikerjakan.

Seperti biasa, awalnya dia mempersilakan gw duduk dan memperkenalkan diri dulu. Kemudian meminta gw menjelaskan pengalaman dari technical skill yang gw cantumkan dalam resume, seperti berapa lama pengalaman gw di C#, Java, SQL, dan lainnya; projek apa yang gw bikin pake C#, Java, dan lainnya.

Kemudian dia bertanya tentang perusahaan gw yang sekarang, kerjanya ngapain, role and responsibility nya apa, ikut andil di projek apa aja, tiap projek biasanya tim nya berapa orang, pembagian tugasnya gimana, apa yang dikerjakan oleh anggota tim yang lain, relasi sama teman satu tim gimana, relasi dengan atasan gimana, dan lainnya.

Setelah sepuluh menit wawancara lisan, barulah dia mulai technical test. Dia memberikan gw beberapa sepidol dengan warna yang berbeda-beda. Dia sendiri juga memegang sepidol dengan warna yang berbeda-beda, sehingga masing-masing dari kita mempunyai sepidol berwarna-warni sendiri-sendiri. Sesi pertanyaan pun dimulai. Pertanyaan meliputi:

  1. SQL Server dan Database Design.
  2. Programming.
  3. Tes logika.

Jumlah pertanyaan bervariasi, soalnya juga berbeda-beda tiap kandidat, karena fresh dari otaknya saat itu juga. Gw tahu hal ini karena salah satu temen gw juga pernah interview di sana dan kemudian merekomendasikan gw. Pertanyaan yang temen gw dapet, berbeda dengan pertanyaan yang gw dapet.

Setiap sesi cuma ada 1 pertanyaan, kecuali soal logika yang terdiri dari 2 pertanyaan, sehingga totalnya ada 4 pertanyaan. Tapi, dia bakal menanyakan setiap pertanyaan sampai detail, dan dia meminta gw menjawab dengan berbagai cara yang berbeda-beda. Jadi, walaupun pertanyaannya cuma 4 nomer, tapi nomer 1 nya aja udah ada 1a, 1b, 1c, 1d, dan seterusnya sampai dia puas.

Sesi test dimulai dari SQL dan database design. Dia bikin case study dan nyuruh gw bikin database design buat case study tersebut. Setelah selesai men-design, dia bakal nanya gimana cara dapetin data untuk function tertentu. Awalnya gampang banget, cuma butuh 1 table sama 1 select statement doank. Abis itu baru requirement dari case study-nya jadi makin kompleks, jumlah table bertambah, bikin query-nya pun makin rumit.

Bagian programming juga dimulai dari pertanyaan paling gampang, contohnya bagaimana cara membat fungsi X tanpa meggunakan built-in library. Setelah gw tulis code-nya di papan tulis, terus dia bakal bilang: Gimana cara mempersingkat iterasinya? Begitu gw ganti code-nya buat memenuhi kriteria baru, dia bakal nanya lagi: Gimana kalo ga pake loop? Gimana kalo ga pake ini itu? Gimana kalo cuma boleh 1 line? Dan 'gimana kalo' lainnya...

Terakhir adalah tes logika. Tes logika kali ini adalah tes logika murni tanpa embel-embel programming atau database. Buat gw yang hobi bacain ridde dan penggemar puzzle matematika, tes logika kali ini bisa dibilang ga begitu susah, cuma memang lebih tricky dibanding tes logika di perusahaan-perusahaan lain yang gw tahu.

Lamanya technical test 1,5 jam. Saat interview, dia selalu meminta gw untuk 'think out loud' alias mikir sambil ngomong. Dia bilang sendiri kalau benar atau salahnya jawaban gw, itu urusan kedua. Yang dia prioritaskan bukan jawaban gw, tapi proses berpikir, proses berkomunikasi, dan bagaimana cara gw berdiskusi / bekerja sama dengan dia untuk menyelesaikan masalah. Gw sendiri beberapa kali stuck di tengah-tengah dan baru bisa menjawab setelah diberi clue. Walau begitu, tetep aja gw keterima! Yay!

Menurut gw, interview ala Microsoft atau whiteboard interview ini jauh lebih efektif dibanding tes tertulis. Untuk tes tertulis, penilaiannya murni berdasar benar atau salahnya jawaban kandidat, tanpa tahu bagaimana proses berpikir mereka. Para kandidat juga bisa saja mencari jawaban lewat Google, karena biasanya tes dilaksanakan di ruang terpisah dengan pengawasan yang minim.

Balik lagi ke pertanyaan interview, di antara ketiga sesi tersebut, pertanyaan tentang database yang paling susah. Interview lain biasanya cuma nanyain select-insert-update-delete query yang simpel atau nanyain cara kerja index. Sebelumnya, gw sama sekali ga pernah merasa kesulitan menjawab test tentang database. Sedangkan kali ini, gw disuruh men-design database untuk sistem tertentu dengan requirement tertentu. Setelah design database selesai, dia bakalan nanya gimana cara dapetin select query untuk function tertentu, seperti yang udah gw jelasin di atas. Dan... gw sempat berdiam diri 5 menit cuma buat mikir.

Mungkin memang dia sengaja kasih pertanyaan yang susah karena dia liat gw punya sertifikat Microsoft, dan dia sendiri ikut andil dalam pembuatan SQL Server. Dia mengaku kalo dia sangat-sangat-sangat familiar sama semua yang berhubungan sama SQL dan database. Dia bahkan bilang kalo dia yang men-design sertifikat Microsoft yang gw pegang saat itu.

Salutnya, walaupun dia jenius, dia tetep ramah, fun banget, dan ga pelit ilmu. Kadang agak kocak juga. Sama sekali jauh dari tipikal orang yang sombong atau bossy. I've found another great mentor to learn from!

No I'm not lucky, I'm blessed!
Thursday, December 10, 2015

Teknologi dan Kesehatan

Tiba-tiba, gw teringat pernah berdiskusi dengan seorang temen yang kuliah di Fakultas Kedokteran Universitas Indonesia. Topiknya cukup menarik, makanya gw berniat share di sini.

Sebelum masuk ke topik diskusi, gw mau menceritakan sekilas tentang teman gw: dia cowok, tinggi, pake kacamata, jalannya cepet banget (jalannya mungkin lebih cepet dari larinya Usain Bolt), jomblo, dan sering galau. Untungnya dia childish jenius, bersama timnya pernah meraih medali emas di kompetisi Genetically Engineered Machine (iGEM) 2014 yang diselenggarakan di Boston, Amerika. Dia juga satu-satunya temen gw yang ke Kuala Lumpur mengunjungi Biomedical Museum. Sedangkan gw yang 8 tahun di Kuala Lumpur aja, ga tau ada Biomedical Museum eksis di sini. Jadi bisa dibilang, dia cukup expert dalam topik diskusi ini.

Ok, kembali lagi ke topik. Topik yang cukup intense ini dimulai dari pertanyaan gw:
Vaksin itu kan virus yang dilemahkan. Memangnya gimana caranya memperlemah virus? Dipanasin? Didinginin? Ga dikasih makan? Disetrap di pojokan sambil angkat satu kaki? Diputusin pacar? Atau digebukin sampe pingsan? 
Ternyata jawabannya tidak terduga. Vaksin itu tidak selalu virus yang dilemahkan. Vaksin bisa berupa virus yang tidak aktif, atau bahkan hanya terdiri dari sebagian kecil komponen dari virus, seperti 'cangkang'nya, proteinnya, atau cuma DNA nya saja. Yang terpenting, vaksin tersebut bisa merangsang pembentukan imunitas tubuh, tanpa membahayakan tubuh.

Namun seringnya, biar gampang dan cepat, guru-guru dan para dosen selalu bilang: "Vaksin itu virus yang dilemahkan." Titik. End of story.

Apakah aku makhluk hidup? (Starr Biolog Teks)
Gara-gara topik vaksin dan virus, kita malah ngomongin pertanyaan yang masih menjadi misteri: 'Apakah virus merupakan makhluk hidup?' Pertanyaan yang sampe sekarang masih diperdebatkan dan jawabannya juga masih menjadi kontroversi.

Di satu sisi virus tidak dianggap sebagai makhluk hidup karena virus hanya tersusun dari DNA atau RNA yang dikelilingi oleh lapisan protein. Virus tidak terbuat dari sel, di mana sel adalah unit dasar dari organisme hidup. Virus juga tidak dapat bereproduksi tanpa sel inang, dan virus dapat dikristalkan. Hal-hal tersebut bertentangan dengan ciri-ciri makhluk hidup.

Namun dari pandangan lain, virus digolongkan sebagai makhluk hidup karena DNA dan RNA dianggap sebagai materi genetik. Virus juga memenuhi ciri-ciri makhluk hidup lainnya seperti mampu beradaptasi, tumbuh, bereproduksi, bahkan berevolusi walaupun hanya dalam sel inang.

Dari virus dan makhluk hidup, kita beralih ke topik Artificial Intelligence (AI), di mana proses pembelajaran otak manusia yang sampai sekarang sudah berjalan puluhan tahun, namun belum juga ditemukan titik terangnya. Kita sepakat kalo ketika manusia sudah sepenuhnya berhasil mempelajari otak manusia dan menciptakan otak buatan, it's the end of the road (atau mungkin justru the new beginning of every science?)

Dia cerita kalo sekarang para biologis sedang berada dalam track to print a human, dengan XNA alias DNA sintetis. Mereka bahkan melakukan penelitian membuat makhluk hidup dari minyak, air, dan komponen sel. And... it worked!! Berita yang mencengangkan karena sekarang manusia sudah bisa play God.

Dari situ, muncullah pertanyaan misteri lainnya. Kalo manusia sudah seperti Tuhan yang bisa menciptakan makhluk hidup lain, apa makhluk hidup tersebut memiliki soul? Jika tidak, apakah dia disebut makhluk hidup jika tidak memiliki soul? Bahkan pertanyaan paling dasar pun masih misteri: Apa itu soul? 

Ngomongin soul pasti ga jauh-jauh dari konsep dualism dalam filosofi, di mana body dan soul (mind) adalah 2 hal berbeda dan memiliki fungsi berbeda juga. Jaman dulu, ada yang berpendapat soul-lah yang menggerakan body. Pendapat ini didasari dengan fenomena berikut:
Orang yang sudah meninggal tubuhnya dingin dan tidak lagi bisa bergerak. Hal tersebut terjadi karena tidak adanya soul yang menghangatkan dan membuatnya bisa bergerak.
Pendapat tersebut disanggah Rene Descartes, seorang filsuf dan ahli matematika, yang dalam tulisannya 'The Passions of the Soul" mengatakan:
The heat and movement of our body-parts come from the body; thoughts come from the soul. The soul leaves our body when we die only because this heat ceases and the organs that move the body decay.
Apapun itu, sampai sekarang apa itu soul dan keberadaannya masih tidak bisa dibuktikan sepenuhnya oleh science.

Topik pun gw tutup dengan pertanyaan yang sekaligus menjadi sindiran bagi ilmuwan-ilmuwan yang berkutat di dunia kesehatan. Dengan bantuan teknologi yang semakin canggih, riset dan perkembangan dalam bidang kesehatan pun semakin pesat.
Teknologi dan Kesehatan (Scienceroll, 2014)
  • Teknnologi imaging dan monitoring sekarang mempunyai ultrasound scancomputerized tomography (CT) scanMagnetic resonance imaging (MRI), digestible sensors, dan lainnya. 
  • Teknik pembedahan mulai beralih dari bedah konvensional ke bedah laparoskopi dan bedah laser.
  • 3D printed biological material and artificial limb sangat berperan penting dalam proses penelitian dan rekayasa genetika. Bahkan sudah berhasil diimplementasikan pada tikus untuk 'menambal' jantung yang rusak.
  • Orang yang lahir cacat atau orang yang kehilangan tangan / kakinya, bisa kembali berjalan dan beraktivitas dengan bantuan exosceleton.

Tapi JARUM SUNTIK dan INFUS yang sangat-sangat umum digunakan, kenapa ga banyak berubah sejak pertama kali ditemukan pada tahun 1844? Apa ga ada cara lain yang physically dan psychologically less painful atau mungkin no pain at all?

Memang sih, gw pernah denger adanya painless vaccination yang modelnya kaya plester dan cuma ditempelin ke kulit doank. Namun, cara ini masih jauh dari efektif dibanding metode vaksinasi konvensional.
Painless vaccine (gizmag, 2013)
Tapi tapi tapi... tetep aja ini udah 170 tahun lebih semenjak pertama kali diciptakannya jarum suntik. Masa masih gitu-gitu aja sampe sekarang? Hei para peneliti kesehatan, kalian ga kasihan apa sama gw anak ini?
Mommy, please help me! (Activist Post, 2015)
Friday, December 4, 2015

Bahasa Pemograman yang Paling Susah Untuk Dipelajari

Salah satu cara manusia berkomunikasi dengan sesamanya adalah menggunakan bahasa. Bisa bahasa Indonesia, bahasa Inggris, bahasa Perancis, bahasa tubuh, bahasa kalbu, bahasa cinta, atau bahasa tarzan *baru paragraf pertama udah mulai ngaco*.

Seperti halnya bahasa manusia, bahasa pemograman atau programming language juga memiliki fungsi yang sama seperti bahasa yang disebutkan di atas. Bedanya, bahasa pemograman digunakan untuk berkomunikasi dengan mesin, khususnya komputer, dan biasanya digunakan untuk membuat suatu sistem. Semua aplikasi yang kalian punya di PClaptop atau smart phone yang kalian pegang saat ini, pasti dibuat dengan bahasa pemograman tertentu.

Bahasa pemograman juga ada banyak macamnya. Beberapa yang sangat terkenal di antaranya Java, C, C++, C#, Visual Basic, Ruby, Bash, Go, Phyton, Haskell, dan masih banyaaakkkk lagi.

Berhubung gw kurang waras kerjaan, gw iseng-iseng mencari tahu bahasa pemograman apa yang paling susah untuk dipelajari. Dan bahasa pemograman tersebut adalah: BRAINFUCK!

Dari namanya aja udah keliatan kalo bahasa pemograman ini berdampak kurang baik terhadap otak. Gw sendiri, setelah baca-baca, kurang ngerti juga bagaimana pemakaiannya dan buat apa ada orang susah-susah menciptakan bahasa pemograman aneh ini. Kalo memang pengangguran, bukannya lebih baik jalan-jalan atau tidur aja?

Sekilas Tentang Brainfuck

Brainfuck diciptakan pada tahun 1993 oleh Urban Müller. Bahasa pemograman ini hanya menggunakan 8 command seperti yang terlihat di tabel berikut:
Delapan command dalam Bahasa Pemograman Brainfuck (Wikipedia)
Command Brainfuck yang diterjemahkan ke bahasa pemograman C

(By the way, maaf gw ga pernah bisa nerjemahin istilah-istilah programming di atas ke dalam bahasa Indonesia. Gw dari kuliah sampe kerja, selalu pake bahasa Inggris, makanya gw ga familiar sama istilah-istilah IT dalam bahasa Indonesia. Intinya sih, di Brainfuck, cuma 8 command tersebut yang dapat dimengerti oleh si compiler).

Sesuai dengan namanya, bahasa pemograman yang satu ini memang sangat kompleks dan sangat susah dimengerti. Karena memang, tujuan utama dibuatnya bahasa pemograman ini bukan untuk membuat aplikasi, melainkan untuk kesenangan semata. Maklumlah, para software engineer terkadang memang aneh dan mempunyai kesenangan terhadap hal-hal aneh pula.

Aplikasi Program 'Hello World!'

Orang Indonesia bilang 'Apa kabar?', orang Amerika bilang 'How are you?', sementara penduduk rakyat China bilang '你好吗?'. Walaupun bahasanya berbeda-beda, tapi maksudnya sama, yaitu menanyakan kabar sang lawan bicara. Begitu juga dengan bahasa pemograman. Untuk mendapatkan hasil yang sama, beda bahasa pemograman, beda pula penerapannya.

Bagi kalian yang pernah berkutat di dunia coding, pasti sangat-sangat-sangat mengenal 2 kata berikut: 'Hello World!'. Dua kata di mana semua pembelajaran mengenai bahasa pemograman bermula. Dua kata yang selalu dijadikan contoh paling dasar dari semua bahasa pemograman.

Kenapa 'Hello World!'? Mungkin karena yang bikin bahasa pemograman itu orang bule. Coba kalo yang bikin orang Indonesia, pasti jadinya bukan 'Hello World!', melainkan 'Ini Ibu Budi'.

Balik lagi ke topik, berikut contoh cara menampilkan tulisan 'Hello World!' dalam beberapa bahasa pemograman. Mungkin setelah para pembaca melihat contoh-contoh berikut, kalian lebih mengerti kenapa bahasa pemograman Brainfuck itu benar-benar susah dipahami.

Java
System.out.println("Hello World!");
C#
System.Console.WriteLine("Hello World!");
Visual Basic
 MsgBox("Hello World!")
Haskell
Prelude> putStrLn "Hello World!"
Bash, Hack
echo "Hello World!"
Ruby
puts 'Hello World!'
Go
fmt.Printf("Hello World!\n")
Phyton, Perl
print "Hello World!"
Pascal
writeln('Hello World!');
Dan contoh yang terakhir, adalah program yang sama yang ditulis dengan Brainfuck:
  


Respon pertama gw saat ngeliat ini: HAH? MANA 'HELLO WORLD!' NYA???

Beberapa mungkin ga percaya dan mengira gw asal nulis doank. Tapi serius, itu benar-benar program 'Hello World!' yang ditulis dengan bahasa pemograman Brainfuck. Dan seperti yang disebutkan di atas, Brainfuck cuma mengenali 8 command: + - < > [ ] , .

Kalo penasaran bagaimana cara simbol-simbol aneh di atas diartikan menjadi 'Hello World!', bisa menuju ke SINI untuk melihat penjelasan yang lebih ribet lengkap.

Apa ada yang tahu bahasa pemograman yang lebih sulit dari Brainfuck?
Thursday, July 23, 2015

Lika-Liku Software Engineer: Sertifikasi Microsoft

Setelah melalui perjuangan yang cukup panjang, akhirnya gw berhasil juga mendapatkan sertifikat MCSE (Microsoft® Certified Solutions Expert): Data Platform dari Microsoft. Congratulation to me!

Mungkin yang kurang mengerti, akan gw kasih gambaran sedikit di sini. Sertifikasi Microsoft tentunya ada banyak dan bervariasi, karena produk Microsoft pun banyak jenisnya. Namun semuanya bisa digolongkan menjadi 5 kategori:
  • Server - Windows Server, Exchange Server, Lync, SharePoint, Private Cloud, System Center, dan Virtualization.
  • Desktop - Windows.
  • Applications - Office, Office 365, Microsoft Dynamics.
  • Database - SQL Server
  • Developer - Microsoft Azure, Visual Studio, SharePoint Apps.

Setiap sub-kategori di atas juga memiliki gelar yang bervariasi. Banyaknya ujian yang harus diambil untuk memperoleh gelarnya pun bervariasi, dari 1 ujian sampe ada yang harus menempuh 6 ujian. Sama seperti gelar sarjana, gelar ini juga boleh ditambahkan di belakang nama kamu. Gelar-gelar tersebut diantaranya: 
  • MCT (Microsoft Certified Trainer), untuk yang ingin jadi trainer buat sertifikasi Microsoft.
  • MTA (Microsoft Technology Associate), untuk kategori Server, Database, dan Applications tingkat dasar.
  • MOS (Microsoft Office Specialist), untuk kategori Applications tingkat dasar.
  • MS (Microsoft Specialist), untuk sebagian kategori Server, Applications, dan Developer tingkat dasar.
  • MCSA (Microsoft Certified Solutions Associate), untuk kategori Server dan Database tingkat menengah.
  • MCSE (Microsoft Certified Solutions Expert), untuk kategori Server dan Database tingkat atas.
  • MCSD (Microsoft Certified Solutions Developer), untuk kategori Developer tingkat atas.

Untuk langkah-langkah yang lebih jelasnya, bisa dicek langsung dengan login ke akun Microsoft kamu.


Balik lagi ke sertifikat gw, MCSE: Data Platform, itu salah satu sertifikasi yang khusus di SQL Server Database yang biasanya diambil oleh Database Administrator atau Database Designer. Posisi gw memang software engineer, tapi di perusahaan gw sekarang, ga ada yang namanya database administrator. Software engineer itu harus serba bisa.
Yang mikirin software arhitecture, ya software engineer.  
Yang mendesain database, ya software engineer
Yang bikin program atau bikin web, ya software engineer
Kalo database ada masalah, software engineer juga yang benerin. 
Yang bagian nge-test program, ya software engineer
Yang jahit baju, ya tukang jahit lah, masa software engineer, kecuali sofware engineernya emang hobi jahit.

Ga heran, kan, kalo gw cukup mahir di beberapa bidang seperti: Windows Application, Windows Service, Web Application, Web Service, Device Programming, SQL Database dan juga beberapa bidang lainnya. Tapi entah kenapa, di antara semua itu, Database lah yang paling gw suka. Apalagi setelah gw lihat, software engineer yang memiliki sertifikasi di kategori Developer itu sudah terlalu banyak. Untuk menjadi database developer atau database administrator pun kriterianya lebih sulit dibanding software engineer.

Untuk mendapatkan MCSE: Data Platform ini, gw harus menempuh 5 ujian. Untuk lebih jelasnya, silakan dilihat gambar di bawah ini:

Ujian yang harus ditempuh untuk mendapatkan sertifikat MCSE: Data Platform
Pertanyaan ujiannya random. Walau ada dua peserta yang mengikuti ujian yang bersamaan, soalnya pasti berbeda-beda. Bentuk soalnya juga beraneka ragam. Ada yang harus mengetik jawabannya sendiri, pilihan ganda, multiple response (pilihan ganda yang bisa memilih lebih dari satu jawaban), drag and drop, dan ada case study.

Sedikit tips dari gw buat yang mau ujian. Sebelum ujian, bacalah baik-baik skill apa saja yang akan diujikan. Setelah itu cobalah mencari contoh soal di Internet. Namun hati-hati, banyak jawaban yang salah. Kalo kamu beruntung, memang ada beberapa soal yang sama persis atau mirip. Namun besar juga kemungkinan terjadi kasus di mana pertanyaannya sama tapi pilihan jawabannya berbeda, atau pertanyaannya sama sekali berbeda.  

Semakin tinggi tingkatannya, soalnya pun semakin aneh dan semakin sulit. Durasi ujian berbeda-beda, tergantung dari ujian yang diambil. Ada yang hanya 2,5 jam, namun ada pula yang sampai 4 jam, khususnya kalo ada bagian yang harus mengetik jawaban sendiri. Skor kelulusannya bisa dibilang cukup tinggi, yaitu 700 dari 1.000.  Namun, jumlah soalnya cukup sedikit, berkisar antara 45-55 soal saja. Itu artinya, salah menjawab 1 soal saja sudah mengurangi nilai cukup banyak.

Proses pendaftaran dan pembayaran untuk ujian bisa dilakukan secara online dengan mengakses website Microsoft. Gw kurang tahu harga di Indonesia, tapi kalau di sini, harganya RM 332 / ujian (sekitar 1,16 juta rupiah). Jadi kalo ada 5 ujian ya 5 x RM 332 (sekitar 5,8 juta rupiah).

Makanya kalo mau mengambil sertifikasi, sebaiknya memiliki pengalaman minimal 2 tahun di bidang yang mau diambil. Sayang, kan, kalo sampe gagal.

Sertifikat MCSE

Kenapa gw mau bersusah payah berusaha mendapatkan sertifikasi ini? 

  • Poin pertama dan poin TERPENTING: Sarana BELAJAR dan penyemangat gw untuk terus menerus belajar dan mengikuti teknologi. Banyak hal-hal baru yang gw pelajari selama gw belajar untuk ujian. SERIUS!
  • Penunjang karir. Bisa dibilang gelar MCSE sama pentingnya dengan gelar sarjana, malah bisa dibilang lebih penting karena lebih spesifik dan diakui secara luas. Jaman sekarang, siapa sih, orang-orang yang berkecimpung di dunia IT, yang ga kenal Microsoft?
  • Karena pengetahuan kita di bidang tersebut cukup luas, otomatis kita berpeluang mendapatkan gaji yang lebih besar dan posisi yang lebih tinggi. Bos gw sendiri, seorang Technical Director, juga punya sertifikat MCDBA (Microsoft Certified Database Administrator), yang namanya sekarang sudah ganti menjadi MCSE.
  • Menjadi salah satu member Microsoft dan mendapatkan beberapa keuntungan seperti bisa menghadiri event-event atau konferensi yang diselenggarakan Microsoft, informasi-informasi up-to-date dari Microsoft, atau terkadang, diskon khusus untuk pembelian produk Microsoft.
  • Lebih dipercaya karena bisa divalidasi kebenarannya. Ijazah bisa dipalsukan. Tahu sendiri, kan, universitas bisa 'disuap' supaya bisa meluluskan mahasiswanya. Tapi tidak dengan sertifikat Microsoft. Microsoft bahkan menyediakan site khusus untuk mengecek keaslian sertifikasi kita. Kalo ga percaya, silakan cek sertifikasi gw dengan di sini, dengan Transcript Id: 1164505 dan Access Code: Stefanie


Siapa yang harus punya sertifikat Microsoft dan sertifikat apa yang sebaiknya diambil?

Awal-awal, gw memang cukup bingung sertifikat mana yang mau gw ambil. Tapi, seperti yang gw bilang di atas, programmer atau software engineer itu terlalu umum. Untuk mendapatkan posisi sebagai software engineer itu kriterianya tidak sulit. Punya sertifikat MCSD ataupun tidak, peluangnya tidak berbeda jauh. Lain halnya dengan spesialisasi IT yang kriterianya cenderung lebih strict, seperti:
  • IT Administrator
  • IT Architect
  • IT Consultant
  • Database Administrator
  • Database Developer
  • Network Administrator

Untuk spesialisasi di atas, pintu pekerjaan pasti terbuka jauh lebih lebar untuk yang punya sertifikat di bidang tersebut. Buktikan sendiri kalo ga percaya! Good luck.
Saturday, June 13, 2015

Cara Menyimpan Password di Database

'Stef, apa yang bikin sistem bisa tahu password para pengguna nya?'
Jawaban gw: 'Bisa iya, bisa enggak, tergantung gimana cara kita menyimpan password di database.'

Kalo mengikuti standard umum, pada sistem apapun, baik CEO, direktur, manager, system analyst, programmer, tukang bersih-bersih di kantor, atau siapapun, ga akan pernah bisa tau password seseorang. Yap, termasuk database administrator.

Mengapa begitu?

Gw yakin para pembaca sangat familiar dengan Facebook. Kita ambil contoh sistem semacam Facebook, sebut saja Funbook. Ada seseorang berinisial A, ingin membuat akun Funbook. Dia masukin data-data pribadinya, email 'saya_keren_sekali@email.com' dan passwordnya, 'sangatrahasia'.

Data-data ini tentunya akan tersimpan di dalam database. Sehingga di dalam database, akan ada user 'A', dengan email 'saya_keren_sekali@email.com', dan password... Eit, tunggu dulu. Kita tidak boleh menyimpan password 'sangatrahasia' di dalam database! Password yang kita simpan adalah password yang sudah melalui di hash atau yang sudah melalui proses hashing.

Sebelum gw ngomongin hash, mungkin sebaiknya gw ngomongin kriptografi dulu. Bahasa simpelnya, kriptografi itu ilmu yang mempelajari bagaimana suatu pesan dapat dikirim dengan aman, serta memastikan kalo orang yang menerima pesan tersebut adalah orang yang tepat. Salah satu tipe kriptografi yang paling terkenal adalah enkripsi (encryption) dan dekripsi (decryption).

Contoh: A mau ngirim pesen ke B yang isinya 'rahasia'. Tentu saja A dengan B sudah sepakat bagaimana proses untuk mengenkrip dan mendekrip data, yang biasanya disebut dengan kunci. Sebelum dikirim, esan tersebut harus dienkripsi dulu, supaya orang lain, kecuali si B, tidak mengerti.
  • Pesan asli: rahasia
  • Kunci: Setiap huruf ditambah satu, a menjadi b, b menjadi c, dan seterusnya, sampai z menjadi a.
  • Pesan setelah enkripsi: sbibtjb
Proses Enkripsi
Pesan 'sbibtjb' itu pun dikirim ke B. Si C mungkin saja mengintip pesan tersebut. Tapi karena si C tidak tahu kuncinya, si C hanya melihat huruf-huruf berantakan yang tidak dapat dimengerti. Pesan itu kemudian sampai di B. Dengan menggunakan kebalikan dari kunci yang sama, si B pun bisa mendapatkan pesan asli tersebut.
  • Pesan setelah enkripsi: sbibtjb
  • Kunci: Kebalikan dari kunci yang sama. Setiap huruf dikurangi satu, a menjadi z, b menjadi a, dan seterusnya.
  • Pesan asli: rahasia.
Proses Dekripsi
Mudah bukan?

Lah, terus, apa bedanya dengan hash? Hash merupakan salah satu tipe kriptografi. Bedanya, kalo enkripsi, pesan yang kita enkrip bisa kita dekrip kembali, asalkan kita tahu kuncinya. Kalo hash, pesan yang sudah kita hash, tidak akan bisa kembali seperti semula lagi. Maka itu hash juga disebut one-way hashing atau enkripsi satu arah. Karena itu hashing sangat efektif untuk menyimpan password.

Contoh 1:
Algoritma: Jumlah karakter dari password.

  • Simpel (Yang tersimpan di dalam database: 6)
  • Rahasia (Yang tersimpan di dalam database: 7)
  • Stef keren ^~* (Yang tersimpan di dalam database: 14)

Sekarang coba tebak, dengan menggunakan algoritma yang sama, kalo yang tersimpan di dalam database adalah 10, apa password nya?

Mungkin pembaca bakal bertanya: Kalo ada user A password aslinya ''Mobil' dan user B password aslinya 'Motor'. Dua-duanya bakal disimpan di dalam database sebagai '5', donk?

Betul sekali. Inilah yang dinamakan dengan hash collision. Hash collision terjadi karena lemahnya algorima hash sehingga dua input yang menghasilkan hash yang sama. Yaahh, namanya juga contoh, yang penting mengerti konsepnya dulu. Kalo dikasih yang rumit, ntar malah makin bingung.


Contoh 2: 
Kali ini kita gunakan angka sebagai password, supaya lebih mudah untuk dimengerti.
Algoritma: [Password] x 1234 + 8, diambil digit ke 2, 3, dan 4.
  • 1 x 1234 + 8 = 1242 (Yang tersimpan di dalam database: 242)
  • 2 x 1234 + 8 = 2476 (Yang tersimpan di dalam database: 476)
  • 5 x 1234 + 8 = 6178 (Yang tersimpan di dalam database: 178)
  • 88  x 1234 + 8 = 108600 (Yang tersimpan di dalam database: 086)
  • 1825  x 1234 + 8 = 2252058 (Yang tersimpan di dalam database: 252)

Sekarang coba tebak, dengan menggunakan algoritma yang sama, kalo yang tersimpan di dalam database 098, berapakah password aslinya? Ga mungkin bisa ketemu kan? Kecuali kita coba satu-satu dari 1,2,3 dan seterusnya.
Proses hash
Semakin kuat algoritma hash, semakin kecil kemungkinan terjadinya hash collision, dan semakin sulit pula algoritmanya untuk kita mengerti.

Mungkin ada yang nanya, ''Lah, kalo password aslinya ga bisa didapet, gimana cara kita validasi password?''

Ooohh mudah. Untuk validasi, kita ga perlu tau password asli kok. Misalnya ada user B, password aslinya 2 (yang tersimpan dalam database: 476). Saat dia masukin angka 5, sistem akan menggunakan algoritma yang sama (x 1234 + 8, dan diambil digit ke 2, 3, dan 4), maka akan didapat angka 178. Password yang tersimpan dalam database (476) tidak sama dengan 178, maka password salah.

Karena sulitnya mendapatkan password asli (bahkan nyaris tidak mungkin), apabila kita lupa password kita, sistem akan mengirimkan link ke email kita untuk me-reset password. Kalo sampe ada sistem yang mengirimkan password asli kita melalui email, itu tandanya sistem tersebut kurang aman, karena menyimpan password asli (tanpa di hash) di dalam database.

Cukup jelas, bukan? Tentu saja contoh di atas algoritma nya dibuat semudah mungkin supaya pembaca lebih mudah memahami konsepnya. Kenyataannya, jauh lebih ribet daripada itu. Apalagi para ahli kriptografi terus menerus melakukan penelitian untuk memperkuat algoritma hash. Saat ini, algoritma hash yang umum digunakan adalah Secure Hash Algorithm (SHA) 1. Dan sampai saat artikel ini ditulis, belum pernah ditemukan hash collision dalam algoritma SHA1.

Jadi, selama ini, apakah gw tau password user yang menggunakan sistem gw?
100% tidak. Gw pasti menggunakan hash. Ini merupakan salah satu kode etik yang harus dijunjung tinggi semua yang terlibat dalam proses pembuatan software.