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.

Interview Java

Hasil interview online saya dengan Sony AK sudah dipublish.

Silahkan baca sendiri.


Weekend Crash Session

Seperti kebanyakan perusahaan IT lainnya, client saya sekarang juga sering mengalami kejar tayang. Berbagai alasan menjadi penyebabnya. Tapi kita tidak mencari kambing hitam di sini. Yang paling penting adalah Lesson Learned dan _Best Practices_nya. Karena toh yang namanya krisis memang tidak direncanakan dan bisa terjadi kapan saja.

Jadi, dari beberapa kali ngantor di hari libur dan beberapa kali terpaksa melewatkan bioskop TransTV jam 21 di rumah, berikut adalah pelajaran yang dapat diambil. 1. Jangan buru-buru mulai bekerja. Lho, katanya kejar tayang, lalu tunggu apa lagi? Mari segera mulai. Salah besar. Hal pertama yang harus dilakukan adalah membuat daftar tugas yang harus diselesaikan. Setelah itu, susun prioritas dan tentukan PIC (person in charge, alias oknum yang harus melakukan). Aplikasi spreadsheet adalah tools yang paling tepat untuk ini. Kita bisa sort, filter, dan melakukan perhitungan dengan cepat.

Khalisa In Action

2. Tentukan load masing-masing orang Ada kalanya, tugas tertentu tergantung pada orang tertentu. Temukan ketergantungan ini, dan hitung dengan teliti. Bisa jadi pembagian tugasnya sudah rata, tapi ternyata pembagian ketergantungan tidak dilakukan, sehingga akan terjadi bottleneck pada orang tertentu.

3. Cegah bottleneck dengan delegasi (a.k.a load balancing) Orang yang punya tugas atau dependensi paling tinggi biasanya disebabkan karena dia memiliki informasi yang dibutuhkan sehingga sulit untuk digantikan. Jangan khawatir, suruh orang tersebut menulis langkah-langkah penyelesaian setiap tugas sedetil mungkin, kemudian delegasikan tugas tersebut. Biasanya menulis instruksi lebih cepat daripada menyelesaikan sendiri tugas tersebut. Dengan demikian, beban oknum bottleneck bisa berkurang. 4. Buat checkpoint Tentukan jam-jam tertentu di mana setiap orang akan diperiksa progressnya. Ini akan memungkinkan deteksi masalah seawal mungkin. Sehingga masalah besar akan cepat diketahui dan diantisipasi. Keuntungan kedua, semua orang akan merasa bahwa pekerjaannya akan dikumpulkan, dan bekerja dengan lebih serius.

Berikutnya, tips terakhir, yang paling ditunggu-tunggu. 5. Sediakan makanan Perusahaan yang mengharuskan karyawannya kerja lembur biasanya tidak keberatan untuk menyediakan makanan. Sekilas tampak merugikan perusahaan secara finansial. Tapi kalau dipikir lebih jauh, dengan memastikan urusan perut beres, ada keuntungan ganda yang diperoleh:

  • Semua orang bekerja dengan tenang, tanpa memikirkan mau makan apa/dimana

  • Orang-orang tidak perlu meninggalkan tempat untuk makan (minimal akan menghabiskan waktu 2 jam sekali makan, untuk jalan, ngobrol, merokok, mematikan rokok dan menyadari bahwa orang lain masih merokok kemudian menyalakan sebatang lagi, dan seterusnya)

Semoga lembur Anda menyenangkan

Khalisa Gigit Jari


Netbeans 5.0 dan Matisse

Beberapa orang di milis JUG sangat berkomentar tentang canggihnya Swing Editor di Netbeans, yang lebih terkenal dengan nama Matisse. Berbagai fitur canggih seperti:

  • Snap-in placement. Komponen otomatis lengket ke lokasi penempatan. Mirip seperti kalau kita menggeser-geser WinAmp di pojok layar.

  • Dynamic Layout. Dengan setting mudah, layout menjadi kebal terhadap resize dan perbedaan resolusi

  • Baseline Alignment. Label, tombol, dan text component diatur agar tulisannya segaris.

sudah terinstal secara default. So, berbekal pengalaman buruk pahitnya mencoding GridBagLayout, saya segera mendonlod Netbeans dan berharap akan adanya titik terang dalam pembuatan desktop apps di Java. Test singkat saya adalah menghasilkan tampilan seperti ini:

Hasil akhir tampilan

Berikut adalah tampilan editor di Netbeans: Netbeans Design View

Tapi, seperti biasa, kode yang dihasilkan sama sekali tidak indah. Coba lihat sendiri:

Autogenerated code by Netbeans

Tapi secara keseluruhan .. lumayanlah. Membuat tampilan seperti di atas cuma dalam waktu 5 menit itu sudah kemajuan besar.

PR Swing selanjutnya tinggal masalah binding dan validation yang masih harus ‘kerja keras’.


Konfigurasi user Subversion di XAMPP

Berikut cara konfigurasi repository Subversion pada Windows agar bisa diakses melalui http. Ijin akses hanya diberikan pada user yang sudah terdaftar dalam database.

Sebetulnya tutorial versi Linux juga ada. Tapi sepertinya pengguna Windows masih ada yang menemui kesulitan, walaupun sudah pernah diberikan training.

Aplikasi berikut harus sudah terinstal:

  1. Subversion

  2. XAMPP, gunakan versi 1.4

Pertama, kita akan membuat user dengan fasilitas htpasswd yang ada di Apache.

  1. Masuk ke folder apache c:\> cd c:\xampp\apache\bin

  2. jalankan htpasswd untuk membuat database username/password, misalnya namanya user.txt c:\> htpasswd -cm user.txt endy New password: **** Re-type new password: **** Adding password for user endy

Setelah itu, htpasswd akan membuatkan file database user di file user.txt Kira-kira isinya seperti ini: endy:$apr1$m15.....$LbO0nY5v2FaRQ7NC4NVLY0

Option c artinya buat file baru, karena user.txt sebelumnya tidak ada, maka kita perlu pakai option c ini. Untuk menambah user lain, cukup tambahkan ke file user.txt yang sudah ada: c:\> htpasswd -m user.txt benny New password: **** Re-type new password: **** Adding password for user benny

Option m artinya password akan dienkripsi dengan algoritma MD5. Itu sebabnya password ‘test’ untuk user endy terlihat seperti sumpah serapah dalam file user.txt

  1. Copy user.txt ke folder c:\xampp\apache\conf

Kemudian, kita akan mengkonfigurasi Apache agar:

  • meneruskan request http dengan suffix /svn (misal http://localhost/svn) ke Subversion

  • meminta requester memasukkan username dan password

  • mencocokkan username dan password dengan file c:\xampp\apache\conf\user.txt

  • kalau cocok, tampilkan repository yang ada di folder c:\repoku

  1. Copy file c:\Program Files\Subversion\bin\mod_authz_svn.so dan mod_dav_svn.so ke folder c:\xampp\apache\modules File ini adalah modul tambahan agar apache mampu menangani request Subversion.

  2. Edit c:\xampp\apache\conf\httpd.conf, tambahkan baris berikut: `LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn> DAV svn SVNPath c:/repoku AuthType Basic AuthName “Subversion Web Authentication” AuthUserFile c:/xampp/apache/conf/user.txt Require valid-user </Location> `

  1. Pastikan repository sudah dibuat di folder c:\repoku, kalau belum buat dulu: c:\> mkdir c:\repoku c:\> svnadmin create --fs-type fsfs c:\repoku

  2. Silahkan browse ke http://localhost/svn/


Pengetahuan wajib buat programmer

Setelah beberapa kali mewawancara calon programmer baru, saya menemukan bahwa cukup banyak dari kandidat pelamar kerja, baik fresh graduate maupun yang (ngakunya) experienced masih belum memahami beberapa pengetahuan dasar.

Entah apa sebabnya. Beberapa kemungkinan bisa saya perkirakan, sebagai berikut:

  • Tidak diajarkan di kuliah

  • Diajarkan, tapi mahasiswa bersangkutan lebih banyak dugem daripada kuliah

  • Diajarkan dan pernah mengerti, tapi karena jarang digunakan jadi lupa

Apapun masalahnya, yang jelas kenyataan ini sangat memprihatinkan. Indonesia tidak akan maju jika bibit tenaga kerjanya mudah merasa cukup.

Secara pribadi, saya punya standar sendiri dalam melakukan seleksi. Jadi buat yang mau melamar kerja, silahkan berlatih. Siapa tahu Anda berhadapan dengan saya di meja wawancara :D

Berikut menu wajib programmer:

  • Konsep dasar sistem operasi.

  • Konsep dasar jaringan.

  • Konsep dasar relational database.

  • Karena sekarang jaman internet, maka wajib memahami protokol HTTP, FTP, POP3, SMTP, SSH.

  • Karena sekarang jaman globalisasi, maka wajib memahami Unicode.

  • Lebih dari satu bahasa pemrograman.

  • Cara menggunakan Version Control.

Berikut pertimbangannya.

Kebanyakan dari programmer Indonesia biasanya membuat aplikasi di atas sistem operasi, sehingga banyak yang berpendapat bahwa tidak perlu memahami cara kerja sistem operasi. Pendapat ini boleh saja, kalau Anda adalah staf akunting yang kebetulan dipaksa bos untuk membuat aplikasi general ledger. Untuk programmer profesional, pemahaman ini akan membuat Anda lebih siap untuk membuat aplikasi server yang biasanya multithreaded dan harus efisien digunakan dalam waktu yang lama.

Pemahaman mendalam di salah satu sistem operasi juga merupakan nilai tambah yang signifikan. Dengan mengetahui struktur internal sistem operasi (misalnya Linux), kita dapat mengetahui berbagai pertimbangan dalam merancang aplikasi besar yang terus berkembang.

Saat ini, kalau kita harus membuat aplikasi, besar kemungkinannya aplikasi kita tidak berjalan sendiri. Aplikasi tersebut pasti harus berhubungan dengan internet, melayani banyak pengguna, atau berhubungan dengan perangkat lain seperti handphone atau PDA. Untuk itu, pemahaman atas konsep jaringan sangat penting.

Tes sederhana untuk menguji pemahaman Anda. Coba jelaskan proses yang terjadi mulai dari Anda mengetik http://endy.artivisi.com di browser Anda, sampai halaman ini terbentang di depan mata Anda. Dengan mendengarkan jawaban Anda, saya akan tahu kualitas Anda. Jawaban yang saya harapkan mengandung istilah name-resolve, http-request, virtual directory, query database, HTML response, dan CSS. Kalau Anda menyebutkan (apalagi menjelaskan) tentang routing, gateway, proxy, port 80, saya akan lebih senang lagi.

Tentang relational database. Saya tahu ini pasti pernah diajarkan di kuliah. Jadi lulusan informatika dan sejenisnya jangan bilang belum diajarkan. Yang saya maksud bukan sekedar sintaks SQL. Sintaks itu gampang, bisa dicari dengan mudah di internet. Yang saya inginkan adalah penjelasan tentang Boyce-Codd Normal Form, lengkap dengan contoh kasusnya, di luar kepala. Kalau sudah bisa menjelaskan ini, inner join, subquery, union, itu perkara sepele.

Protokol HTTP sekarang adalah protokol yang paling banyak digunakan di internet. Jangan salah, ini bukan tentang sintaks HTML atau CSS. Jadi apa? Begini, coba tampilkan halaman website ini dengan menggunakan telnet. Benar, bukan browser, tapi telnet.

Kalau sudah bisa browsing dengan telnet, sekarang coba untuk baca email via telnet. Menggunakan protokol POP3 atau IMAP tentunya. Punya account Gmail kan? Hare gene gak punya? Ya bagus, kalo punya coba aktifkan fitur POP3nya, setelah itu buka dengan telnet.

Unicode itu penting supaya aplikasi kita tetap bisa diinstal di komputer orang Jepang atau Korea, atau komputer berbahasa Sansekerta.

Pemahaman lebih dari satu bahasa itu penting agar wawasan kita terbuka. Bahwa tidak ada bahasa yang one-fit-all, bahwa ada cara berpikir yang berbeda dalam tiap bahasa, bahwa komunitas tiap bahasa berbeda budayanya. Semua ini akan berkontribusi dalam pendewasaan kita dalam berdiskusi dan menanggapi perbedaan (terutama pendapat).

Satu lagi, trend bahasa pemrograman adalah, tiap sepuluh tahun, market leader berganti. Dulu COBOL, kemudian C++, sekarang Java. Jadi, kemampuan belajar bahasa baru sangat penting. Bukan cuma bahasanya yang penting, tapi kemampuan belajarnya yang lebih penting.

Di tempat saya bekerja, penggunaan version control adalah wajib. Ini standar (de facto) internasional. Kalau kita punya project opensource, baik di Sourceforge, Apache, Codehaus, dan semua hosting project opensource, pasti kita akan diberikan version control. Silahkan download dan coba gunakan CVS atau Subversion.

Ok, itu standar minimal saya. Menurut Anda terlalu sulit? Hmm .. kalau begitu dunia IT menjadi programmer nampaknya kurang cocok buat Anda. Silahkan coba karir lainnya, misalnya notaris atau sopir busway :D